From 1aa595b01fa970c30aacb670131dad15532f8721 Mon Sep 17 00:00:00 2001 From: kmostafa599 Date: Fri, 26 Nov 2021 06:03:31 +0200 Subject: [PATCH 1/7] Modules --- my-app/.gitignore | 23 + my-app/README.md | 70 + my-app/package.json | 35 + my-app/public/favicon.ico | Bin 0 -> 3870 bytes my-app/public/index.html | 43 + my-app/public/logo192.png | Bin 0 -> 5347 bytes my-app/public/logo512.png | Bin 0 -> 9664 bytes my-app/public/manifest.json | 25 + my-app/public/robots.txt | 3 + my-app/src/App.css | 38 + my-app/src/App.js | 25 + my-app/src/App.test.js | 8 + my-app/src/index.css | 13 + my-app/src/index.js | 17 + my-app/src/logo.svg | 1 + my-app/src/reportWebVitals.js | 13 + my-app/src/setupTests.js | 5 + my-app/yarn.lock | 11268 ++++++++++++++++ node_modules/.bin/create-react-app | 15 + node_modules/.bin/create-react-app.cmd | 7 + node_modules/.bin/envinfo | 15 + node_modules/.bin/envinfo.cmd | 7 + node_modules/.bin/mkdirp | 15 + node_modules/.bin/mkdirp.cmd | 7 + node_modules/.bin/node-which | 15 + node_modules/.bin/node-which.cmd | 7 + node_modules/.bin/rimraf | 15 + node_modules/.bin/rimraf.cmd | 7 + node_modules/.bin/semver | 15 + node_modules/.bin/semver.cmd | 7 + node_modules/.yarn-integrity | 107 + node_modules/@node-redis/client/CHANGELOG.md | 926 ++ node_modules/@node-redis/client/README.md | 2 + .../@node-redis/client/dist/index.d.ts | 6 + node_modules/@node-redis/client/dist/index.js | 10 + .../dist/lib/client/commands-queue.d.ts | 30 + .../client/dist/lib/client/commands-queue.js | 283 + .../client/dist/lib/client/commands.d.ts | 585 + .../client/dist/lib/client/commands.js | 234 + .../client/dist/lib/client/index.d.ts | 86 + .../client/dist/lib/client/index.js | 426 + .../client/dist/lib/client/multi-command.d.ts | 30 + .../client/dist/lib/client/multi-command.js | 109 + .../client/dist/lib/client/socket.d.ts | 34 + .../client/dist/lib/client/socket.js | 203 + .../dist/lib/cluster/cluster-slots.d.ts | 21 + .../client/dist/lib/cluster/cluster-slots.js | 192 + .../client/dist/lib/cluster/commands.d.ts | 534 + .../client/dist/lib/cluster/commands.js | 535 + .../client/dist/lib/cluster/index.d.ts | 35 + .../client/dist/lib/cluster/index.js | 144 + .../dist/lib/cluster/multi-command.d.ts | 30 + .../client/dist/lib/cluster/multi-command.js | 82 + .../client/dist/lib/command-options.d.ts | 7 + .../client/dist/lib/command-options.js | 13 + .../client/dist/lib/commander.d.ts | 27 + .../@node-redis/client/dist/lib/commander.js | 95 + .../client/dist/lib/commands/ACL_CAT.d.ts | 2 + .../client/dist/lib/commands/ACL_CAT.js | 11 + .../client/dist/lib/commands/ACL_DELUSER.d.ts | 3 + .../client/dist/lib/commands/ACL_DELUSER.js | 8 + .../client/dist/lib/commands/ACL_GENPASS.d.ts | 2 + .../client/dist/lib/commands/ACL_GENPASS.js | 11 + .../client/dist/lib/commands/ACL_GETUSER.d.ts | 22 + .../client/dist/lib/commands/ACL_GETUSER.js | 17 + .../client/dist/lib/commands/ACL_LIST.d.ts | 2 + .../client/dist/lib/commands/ACL_LIST.js | 7 + .../client/dist/lib/commands/ACL_LOAD.d.ts | 2 + .../client/dist/lib/commands/ACL_LOAD.js | 7 + .../client/dist/lib/commands/ACL_LOG.d.ts | 28 + .../client/dist/lib/commands/ACL_LOG.js | 23 + .../dist/lib/commands/ACL_LOG_RESET.d.ts | 2 + .../client/dist/lib/commands/ACL_LOG_RESET.js | 7 + .../client/dist/lib/commands/ACL_SAVE.d.ts | 2 + .../client/dist/lib/commands/ACL_SAVE.js | 7 + .../client/dist/lib/commands/ACL_SETUSER.d.ts | 3 + .../client/dist/lib/commands/ACL_SETUSER.js | 8 + .../client/dist/lib/commands/ACL_USERS.d.ts | 2 + .../client/dist/lib/commands/ACL_USERS.js | 7 + .../client/dist/lib/commands/ACL_WHOAMI.d.ts | 2 + .../client/dist/lib/commands/ACL_WHOAMI.js | 7 + .../client/dist/lib/commands/APPEND.d.ts | 3 + .../client/dist/lib/commands/APPEND.js | 8 + .../client/dist/lib/commands/ASKING.d.ts | 2 + .../client/dist/lib/commands/ASKING.js | 7 + .../client/dist/lib/commands/AUTH.d.ts | 6 + .../client/dist/lib/commands/AUTH.js | 10 + .../dist/lib/commands/BGREWRITEAOF.d.ts | 2 + .../client/dist/lib/commands/BGREWRITEAOF.js | 7 + .../client/dist/lib/commands/BGSAVE.d.ts | 6 + .../client/dist/lib/commands/BGSAVE.js | 11 + .../client/dist/lib/commands/BITCOUNT.d.ts | 9 + .../client/dist/lib/commands/BITCOUNT.js | 13 + .../client/dist/lib/commands/BITFIELD.d.ts | 27 + .../client/dist/lib/commands/BITFIELD.js | 26 + .../client/dist/lib/commands/BITOP.d.ts | 6 + .../client/dist/lib/commands/BITOP.js | 9 + .../client/dist/lib/commands/BITPOS.d.ts | 5 + .../client/dist/lib/commands/BITPOS.js | 16 + .../client/dist/lib/commands/BLMOVE.d.ts | 4 + .../client/dist/lib/commands/BLMOVE.js | 15 + .../client/dist/lib/commands/BLPOP.d.ts | 10 + .../client/dist/lib/commands/BLPOP.js | 20 + .../client/dist/lib/commands/BRPOP.d.ts | 9 + .../client/dist/lib/commands/BRPOP.js | 20 + .../client/dist/lib/commands/BRPOPLPUSH.d.ts | 3 + .../client/dist/lib/commands/BRPOPLPUSH.js | 8 + .../client/dist/lib/commands/BZPOPMAX.d.ts | 10 + .../client/dist/lib/commands/BZPOPMAX.js | 21 + .../client/dist/lib/commands/BZPOPMIN.d.ts | 10 + .../client/dist/lib/commands/BZPOPMIN.js | 21 + .../client/dist/lib/commands/CLIENT_ID.d.ts | 3 + .../client/dist/lib/commands/CLIENT_ID.js | 8 + .../client/dist/lib/commands/CLIENT_INFO.d.ts | 28 + .../client/dist/lib/commands/CLIENT_INFO.js | 37 + .../dist/lib/commands/CLUSTER_ADDSLOTS.d.ts | 2 + .../dist/lib/commands/CLUSTER_ADDSLOTS.js | 14 + .../dist/lib/commands/CLUSTER_FLUSHSLOTS.d.ts | 2 + .../dist/lib/commands/CLUSTER_FLUSHSLOTS.js | 7 + .../lib/commands/CLUSTER_GETKEYSINSLOT.d.ts | 2 + .../lib/commands/CLUSTER_GETKEYSINSLOT.js | 7 + .../dist/lib/commands/CLUSTER_INFO.d.ts | 21 + .../client/dist/lib/commands/CLUSTER_INFO.js | 32 + .../dist/lib/commands/CLUSTER_MEET.d.ts | 2 + .../client/dist/lib/commands/CLUSTER_MEET.js | 7 + .../dist/lib/commands/CLUSTER_NODES.d.ts | 28 + .../client/dist/lib/commands/CLUSTER_NODES.js | 74 + .../dist/lib/commands/CLUSTER_RESET.d.ts | 3 + .../client/dist/lib/commands/CLUSTER_RESET.js | 11 + .../dist/lib/commands/CLUSTER_SETSLOT.d.ts | 8 + .../dist/lib/commands/CLUSTER_SETSLOT.js | 18 + .../dist/lib/commands/CLUSTER_SLOTS.d.ts | 17 + .../client/dist/lib/commands/CLUSTER_SLOTS.js | 25 + .../client/dist/lib/commands/COMMAND.d.ts | 5 + .../client/dist/lib/commands/COMMAND.js | 13 + .../dist/lib/commands/COMMAND_COUNT.d.ts | 4 + .../client/dist/lib/commands/COMMAND_COUNT.js | 8 + .../dist/lib/commands/COMMAND_GETKEYS.d.ts | 4 + .../dist/lib/commands/COMMAND_GETKEYS.js | 8 + .../dist/lib/commands/COMMAND_INFO.d.ts | 5 + .../client/dist/lib/commands/COMMAND_INFO.js | 13 + .../client/dist/lib/commands/CONFIG_GET.d.ts | 2 + .../client/dist/lib/commands/CONFIG_GET.js | 9 + .../dist/lib/commands/CONFIG_RESETSTAT.d.ts | 2 + .../dist/lib/commands/CONFIG_RESETSTAT.js | 7 + .../dist/lib/commands/CONFIG_REWRITE.d.ts | 2 + .../dist/lib/commands/CONFIG_REWRITE.js | 7 + .../client/dist/lib/commands/CONFIG_SET.d.ts | 2 + .../client/dist/lib/commands/CONFIG_SET.js | 7 + .../client/dist/lib/commands/COPY.d.ts | 7 + .../client/dist/lib/commands/COPY.js | 17 + .../client/dist/lib/commands/DBSIZE.d.ts | 3 + .../client/dist/lib/commands/DBSIZE.js | 8 + .../client/dist/lib/commands/DECR.d.ts | 3 + .../client/dist/lib/commands/DECR.js | 8 + .../client/dist/lib/commands/DECRBY.d.ts | 3 + .../client/dist/lib/commands/DECRBY.js | 8 + .../client/dist/lib/commands/DEL.d.ts | 3 + .../client/dist/lib/commands/DEL.js | 8 + .../client/dist/lib/commands/DISCARD.d.ts | 2 + .../client/dist/lib/commands/DISCARD.js | 7 + .../client/dist/lib/commands/DUMP.d.ts | 2 + .../client/dist/lib/commands/DUMP.js | 7 + .../client/dist/lib/commands/ECHO.d.ts | 3 + .../client/dist/lib/commands/ECHO.js | 8 + .../client/dist/lib/commands/EVAL.d.ts | 2 + .../client/dist/lib/commands/EVAL.js | 8 + .../client/dist/lib/commands/EVALSHA.d.ts | 2 + .../client/dist/lib/commands/EVALSHA.js | 8 + .../client/dist/lib/commands/EXISTS.d.ts | 5 + .../client/dist/lib/commands/EXISTS.js | 12 + .../client/dist/lib/commands/EXPIRE.d.ts | 2 + .../client/dist/lib/commands/EXPIRE.js | 9 + .../client/dist/lib/commands/EXPIREAT.d.ts | 2 + .../client/dist/lib/commands/EXPIREAT.js | 14 + .../client/dist/lib/commands/FAILOVER.d.ts | 12 + .../client/dist/lib/commands/FAILOVER.js | 20 + .../client/dist/lib/commands/FLUSHALL.d.ts | 6 + .../client/dist/lib/commands/FLUSHALL.js | 16 + .../client/dist/lib/commands/FLUSHDB.d.ts | 3 + .../client/dist/lib/commands/FLUSHDB.js | 11 + .../client/dist/lib/commands/GEOADD.d.ts | 19 + .../client/dist/lib/commands/GEOADD.js | 22 + .../client/dist/lib/commands/GEODIST.d.ts | 5 + .../client/dist/lib/commands/GEODIST.js | 17 + .../client/dist/lib/commands/GEOHASH.d.ts | 5 + .../client/dist/lib/commands/GEOHASH.js | 10 + .../client/dist/lib/commands/GEOPOS.d.ts | 10 + .../client/dist/lib/commands/GEOPOS.js | 17 + .../client/dist/lib/commands/GEOSEARCH.d.ts | 5 + .../client/dist/lib/commands/GEOSEARCH.js | 10 + .../dist/lib/commands/GEOSEARCHSTORE.d.ts | 9 + .../dist/lib/commands/GEOSEARCHSTORE.js | 21 + .../dist/lib/commands/GEOSEARCH_WITH.d.ts | 5 + .../dist/lib/commands/GEOSEARCH_WITH.js | 16 + .../client/dist/lib/commands/GET.d.ts | 6 + .../client/dist/lib/commands/GET.js | 9 + .../client/dist/lib/commands/GETBIT.d.ts | 5 + .../client/dist/lib/commands/GETBIT.js | 9 + .../client/dist/lib/commands/GETDEL.d.ts | 3 + .../client/dist/lib/commands/GETDEL.js | 8 + .../client/dist/lib/commands/GETEX.d.ts | 16 + .../client/dist/lib/commands/GETEX.js | 25 + .../client/dist/lib/commands/GETRANGE.d.ts | 4 + .../client/dist/lib/commands/GETRANGE.js | 9 + .../client/dist/lib/commands/GETSET.d.ts | 3 + .../client/dist/lib/commands/GETSET.js | 8 + .../client/dist/lib/commands/GET_BUFFER.d.ts | 4 + .../client/dist/lib/commands/GET_BUFFER.js | 8 + .../client/dist/lib/commands/HDEL.d.ts | 4 + .../client/dist/lib/commands/HDEL.js | 9 + .../client/dist/lib/commands/HELLO.d.ts | 34 + .../client/dist/lib/commands/HELLO.js | 29 + .../client/dist/lib/commands/HEXISTS.d.ts | 3 + .../client/dist/lib/commands/HEXISTS.js | 10 + .../client/dist/lib/commands/HGET.d.ts | 3 + .../client/dist/lib/commands/HGET.js | 12 + .../client/dist/lib/commands/HGETALL.d.ts | 3 + .../client/dist/lib/commands/HGETALL.js | 10 + .../client/dist/lib/commands/HINCRBY.d.ts | 3 + .../client/dist/lib/commands/HINCRBY.js | 8 + .../dist/lib/commands/HINCRBYFLOAT.d.ts | 3 + .../client/dist/lib/commands/HINCRBYFLOAT.js | 8 + .../client/dist/lib/commands/HKEYS.d.ts | 3 + .../client/dist/lib/commands/HKEYS.js | 8 + .../client/dist/lib/commands/HLEN.d.ts | 3 + .../client/dist/lib/commands/HLEN.js | 8 + .../client/dist/lib/commands/HMGET.d.ts | 5 + .../client/dist/lib/commands/HMGET.js | 10 + .../client/dist/lib/commands/HRANDFIELD.d.ts | 3 + .../client/dist/lib/commands/HRANDFIELD.js | 8 + .../dist/lib/commands/HRANDFIELD_COUNT.d.ts | 3 + .../dist/lib/commands/HRANDFIELD_COUNT.js | 13 + .../commands/HRANDFIELD_COUNT_WITHVALUES.d.ts | 3 + .../commands/HRANDFIELD_COUNT_WITHVALUES.js | 15 + .../client/dist/lib/commands/HSCAN.d.ts | 14 + .../client/dist/lib/commands/HSCAN.js | 27 + .../client/dist/lib/commands/HSET.d.ts | 11 + .../client/dist/lib/commands/HSET.js | 34 + .../client/dist/lib/commands/HSETNX.d.ts | 3 + .../client/dist/lib/commands/HSETNX.js | 10 + .../client/dist/lib/commands/HSTRLEN.d.ts | 3 + .../client/dist/lib/commands/HSTRLEN.js | 8 + .../client/dist/lib/commands/HVALS.d.ts | 3 + .../client/dist/lib/commands/HVALS.js | 8 + .../client/dist/lib/commands/INCR.d.ts | 3 + .../client/dist/lib/commands/INCR.js | 8 + .../client/dist/lib/commands/INCRBY.d.ts | 3 + .../client/dist/lib/commands/INCRBY.js | 8 + .../client/dist/lib/commands/INCRBYFLOAT.d.ts | 3 + .../client/dist/lib/commands/INCRBYFLOAT.js | 8 + .../client/dist/lib/commands/INFO.d.ts | 3 + .../client/dist/lib/commands/INFO.js | 12 + .../client/dist/lib/commands/KEYS.d.ts | 2 + .../client/dist/lib/commands/KEYS.js | 11 + .../client/dist/lib/commands/LASTSAVE.d.ts | 3 + .../client/dist/lib/commands/LASTSAVE.js | 12 + .../client/dist/lib/commands/LINDEX.d.ts | 3 + .../client/dist/lib/commands/LINDEX.js | 8 + .../client/dist/lib/commands/LINSERT.d.ts | 5 + .../client/dist/lib/commands/LINSERT.js | 14 + .../client/dist/lib/commands/LLEN.d.ts | 4 + .../client/dist/lib/commands/LLEN.js | 9 + .../client/dist/lib/commands/LMOVE.d.ts | 4 + .../client/dist/lib/commands/LMOVE.js | 14 + .../client/dist/lib/commands/LOLWUT.d.ts | 3 + .../client/dist/lib/commands/LOLWUT.js | 12 + .../client/dist/lib/commands/LPOP.d.ts | 3 + .../client/dist/lib/commands/LPOP.js | 8 + .../client/dist/lib/commands/LPOP_COUNT.d.ts | 3 + .../client/dist/lib/commands/LPOP_COUNT.js | 8 + .../client/dist/lib/commands/LPOS.d.ts | 8 + .../client/dist/lib/commands/LPOS.js | 16 + .../client/dist/lib/commands/LPOS_COUNT.d.ts | 4 + .../client/dist/lib/commands/LPOS_COUNT.js | 18 + .../client/dist/lib/commands/LPUSH.d.ts | 4 + .../client/dist/lib/commands/LPUSH.js | 9 + .../client/dist/lib/commands/LPUSHX.d.ts | 4 + .../client/dist/lib/commands/LPUSHX.js | 9 + .../client/dist/lib/commands/LRANGE.d.ts | 4 + .../client/dist/lib/commands/LRANGE.js | 14 + .../client/dist/lib/commands/LREM.d.ts | 3 + .../client/dist/lib/commands/LREM.js | 13 + .../client/dist/lib/commands/LSET.d.ts | 3 + .../client/dist/lib/commands/LSET.js | 13 + .../client/dist/lib/commands/LTRIM.d.ts | 3 + .../client/dist/lib/commands/LTRIM.js | 13 + .../dist/lib/commands/MEMORY_DOCTOR.d.ts | 2 + .../client/dist/lib/commands/MEMORY_DOCTOR.js | 7 + .../lib/commands/MEMORY_MALLOC-STATS.d.ts | 2 + .../dist/lib/commands/MEMORY_MALLOC-STATS.js | 7 + .../dist/lib/commands/MEMORY_PURGE.d.ts | 2 + .../client/dist/lib/commands/MEMORY_PURGE.js | 7 + .../dist/lib/commands/MEMORY_STATS.d.ts | 36 + .../client/dist/lib/commands/MEMORY_STATS.js | 56 + .../dist/lib/commands/MEMORY_USAGE.d.ts | 8 + .../client/dist/lib/commands/MEMORY_USAGE.js | 13 + .../client/dist/lib/commands/MGET.d.ts | 4 + .../client/dist/lib/commands/MGET.js | 9 + .../client/dist/lib/commands/MIGRATE.d.ts | 9 + .../client/dist/lib/commands/MIGRATE.js | 32 + .../client/dist/lib/commands/MODULE_LIST.d.ts | 2 + .../client/dist/lib/commands/MODULE_LIST.js | 7 + .../client/dist/lib/commands/MODULE_LOAD.d.ts | 2 + .../client/dist/lib/commands/MODULE_LOAD.js | 11 + .../dist/lib/commands/MODULE_UNLOAD.d.ts | 2 + .../client/dist/lib/commands/MODULE_UNLOAD.js | 7 + .../client/dist/lib/commands/MOVE.d.ts | 2 + .../client/dist/lib/commands/MOVE.js | 9 + .../client/dist/lib/commands/MSET.d.ts | 3 + .../client/dist/lib/commands/MSET.js | 17 + .../client/dist/lib/commands/MSETNX.d.ts | 3 + .../client/dist/lib/commands/MSETNX.js | 19 + .../client/dist/lib/commands/PERSIST.d.ts | 3 + .../client/dist/lib/commands/PERSIST.js | 10 + .../client/dist/lib/commands/PEXPIRE.d.ts | 3 + .../client/dist/lib/commands/PEXPIRE.js | 10 + .../client/dist/lib/commands/PEXPIREAT.d.ts | 3 + .../client/dist/lib/commands/PEXPIREAT.js | 15 + .../client/dist/lib/commands/PFADD.d.ts | 4 + .../client/dist/lib/commands/PFADD.js | 11 + .../client/dist/lib/commands/PFCOUNT.d.ts | 4 + .../client/dist/lib/commands/PFCOUNT.js | 9 + .../client/dist/lib/commands/PFMERGE.d.ts | 4 + .../client/dist/lib/commands/PFMERGE.js | 9 + .../client/dist/lib/commands/PING.d.ts | 2 + .../client/dist/lib/commands/PING.js | 7 + .../client/dist/lib/commands/PSETEX.d.ts | 3 + .../client/dist/lib/commands/PSETEX.js | 13 + .../client/dist/lib/commands/PTTL.d.ts | 4 + .../client/dist/lib/commands/PTTL.js | 9 + .../client/dist/lib/commands/PUBLISH.d.ts | 4 + .../client/dist/lib/commands/PUBLISH.js | 7 + .../dist/lib/commands/PUBSUB_CHANNELS.d.ts | 3 + .../dist/lib/commands/PUBSUB_CHANNELS.js | 12 + .../dist/lib/commands/PUBSUB_NUMPAT.d.ts | 3 + .../client/dist/lib/commands/PUBSUB_NUMPAT.js | 8 + .../dist/lib/commands/PUBSUB_NUMSUB.d.ts | 3 + .../client/dist/lib/commands/PUBSUB_NUMSUB.js | 21 + .../client/dist/lib/commands/RANDOMKEY.d.ts | 3 + .../client/dist/lib/commands/RANDOMKEY.js | 12 + .../client/dist/lib/commands/READONLY.d.ts | 2 + .../client/dist/lib/commands/READONLY.js | 7 + .../client/dist/lib/commands/READWRITE.d.ts | 2 + .../client/dist/lib/commands/READWRITE.js | 7 + .../client/dist/lib/commands/RENAME.d.ts | 3 + .../client/dist/lib/commands/RENAME.js | 8 + .../client/dist/lib/commands/RENAMENX.d.ts | 3 + .../client/dist/lib/commands/RENAMENX.js | 10 + .../client/dist/lib/commands/REPLICAOF.d.ts | 2 + .../client/dist/lib/commands/REPLICAOF.js | 7 + .../dist/lib/commands/RESTORE-ASKING.d.ts | 2 + .../dist/lib/commands/RESTORE-ASKING.js | 7 + .../client/dist/lib/commands/ROLE.d.ts | 32 + .../client/dist/lib/commands/ROLE.js | 38 + .../client/dist/lib/commands/RPOP.d.ts | 3 + .../client/dist/lib/commands/RPOP.js | 8 + .../client/dist/lib/commands/RPOPLPUSH.d.ts | 3 + .../client/dist/lib/commands/RPOPLPUSH.js | 8 + .../client/dist/lib/commands/RPOP_COUNT.d.ts | 3 + .../client/dist/lib/commands/RPOP_COUNT.js | 8 + .../client/dist/lib/commands/RPUSH.d.ts | 4 + .../client/dist/lib/commands/RPUSH.js | 9 + .../client/dist/lib/commands/RPUSHX.d.ts | 4 + .../client/dist/lib/commands/RPUSHX.js | 9 + .../client/dist/lib/commands/SADD.d.ts | 4 + .../client/dist/lib/commands/SADD.js | 9 + .../client/dist/lib/commands/SAVE.d.ts | 2 + .../client/dist/lib/commands/SAVE.js | 7 + .../client/dist/lib/commands/SCAN.d.ts | 11 + .../client/dist/lib/commands/SCAN.js | 20 + .../client/dist/lib/commands/SCARD.d.ts | 3 + .../client/dist/lib/commands/SCARD.js | 8 + .../dist/lib/commands/SCRIPT_DEBUG.d.ts | 2 + .../client/dist/lib/commands/SCRIPT_DEBUG.js | 7 + .../dist/lib/commands/SCRIPT_EXISTS.d.ts | 3 + .../client/dist/lib/commands/SCRIPT_EXISTS.js | 10 + .../dist/lib/commands/SCRIPT_FLUSH.d.ts | 2 + .../client/dist/lib/commands/SCRIPT_FLUSH.js | 11 + .../client/dist/lib/commands/SCRIPT_KILL.d.ts | 2 + .../client/dist/lib/commands/SCRIPT_KILL.js | 7 + .../client/dist/lib/commands/SCRIPT_LOAD.d.ts | 2 + .../client/dist/lib/commands/SCRIPT_LOAD.js | 7 + .../client/dist/lib/commands/SDIFF.d.ts | 4 + .../client/dist/lib/commands/SDIFF.js | 9 + .../client/dist/lib/commands/SDIFFSTORE.d.ts | 4 + .../client/dist/lib/commands/SDIFFSTORE.js | 9 + .../client/dist/lib/commands/SET.d.ts | 24 + .../client/dist/lib/commands/SET.js | 40 + .../client/dist/lib/commands/SETBIT.d.ts | 5 + .../client/dist/lib/commands/SETBIT.js | 8 + .../client/dist/lib/commands/SETEX.d.ts | 5 + .../client/dist/lib/commands/SETEX.js | 13 + .../client/dist/lib/commands/SETNX.d.ts | 3 + .../client/dist/lib/commands/SETNX.js | 10 + .../client/dist/lib/commands/SETRANGE.d.ts | 3 + .../client/dist/lib/commands/SETRANGE.js | 8 + .../client/dist/lib/commands/SHUTDOWN.d.ts | 2 + .../client/dist/lib/commands/SHUTDOWN.js | 11 + .../client/dist/lib/commands/SINTER.d.ts | 4 + .../client/dist/lib/commands/SINTER.js | 9 + .../client/dist/lib/commands/SINTERSTORE.d.ts | 4 + .../client/dist/lib/commands/SINTERSTORE.js | 9 + .../client/dist/lib/commands/SISMEMBER.d.ts | 3 + .../client/dist/lib/commands/SISMEMBER.js | 10 + .../client/dist/lib/commands/SMEMBERS.d.ts | 3 + .../client/dist/lib/commands/SMEMBERS.js | 8 + .../client/dist/lib/commands/SMISMEMBER.d.ts | 3 + .../client/dist/lib/commands/SMISMEMBER.js | 10 + .../client/dist/lib/commands/SMOVE.d.ts | 3 + .../client/dist/lib/commands/SMOVE.js | 10 + .../client/dist/lib/commands/SORT.d.ts | 16 + .../client/dist/lib/commands/SORT.js | 35 + .../client/dist/lib/commands/SPOP.d.ts | 3 + .../client/dist/lib/commands/SPOP.js | 12 + .../client/dist/lib/commands/SRANDMEMBER.d.ts | 3 + .../client/dist/lib/commands/SRANDMEMBER.js | 8 + .../dist/lib/commands/SRANDMEMBER_COUNT.d.ts | 3 + .../dist/lib/commands/SRANDMEMBER_COUNT.js | 13 + .../client/dist/lib/commands/SREM.d.ts | 4 + .../client/dist/lib/commands/SREM.js | 9 + .../client/dist/lib/commands/SSCAN.d.ts | 10 + .../client/dist/lib/commands/SSCAN.js | 20 + .../client/dist/lib/commands/STRLEN.d.ts | 4 + .../client/dist/lib/commands/STRLEN.js | 9 + .../client/dist/lib/commands/SUNION.d.ts | 5 + .../client/dist/lib/commands/SUNION.js | 10 + .../client/dist/lib/commands/SUNIONSTORE.d.ts | 4 + .../client/dist/lib/commands/SUNIONSTORE.js | 9 + .../client/dist/lib/commands/SWAPDB.d.ts | 2 + .../client/dist/lib/commands/SWAPDB.js | 7 + .../client/dist/lib/commands/TIME.d.ts | 6 + .../client/dist/lib/commands/TIME.js | 13 + .../client/dist/lib/commands/TOUCH.d.ts | 4 + .../client/dist/lib/commands/TOUCH.js | 9 + .../client/dist/lib/commands/TTL.d.ts | 4 + .../client/dist/lib/commands/TTL.js | 9 + .../client/dist/lib/commands/TYPE.d.ts | 4 + .../client/dist/lib/commands/TYPE.js | 9 + .../client/dist/lib/commands/UNLINK.d.ts | 4 + .../client/dist/lib/commands/UNLINK.js | 9 + .../client/dist/lib/commands/UNWATCH.d.ts | 2 + .../client/dist/lib/commands/UNWATCH.js | 7 + .../client/dist/lib/commands/WAIT.d.ts | 3 + .../client/dist/lib/commands/WAIT.js | 8 + .../client/dist/lib/commands/WATCH.d.ts | 3 + .../client/dist/lib/commands/WATCH.js | 8 + .../client/dist/lib/commands/XACK.d.ts | 4 + .../client/dist/lib/commands/XACK.js | 9 + .../client/dist/lib/commands/XADD.d.ts | 14 + .../client/dist/lib/commands/XADD.js | 28 + .../client/dist/lib/commands/XAUTOCLAIM.d.ts | 12 + .../client/dist/lib/commands/XAUTOCLAIM.js | 20 + .../dist/lib/commands/XAUTOCLAIM_JUSTID.d.ts | 8 + .../dist/lib/commands/XAUTOCLAIM_JUSTID.js | 20 + .../client/dist/lib/commands/XCLAIM.d.ts | 9 + .../client/dist/lib/commands/XCLAIM.js | 25 + .../dist/lib/commands/XCLAIM_JUSTID.d.ts | 4 + .../client/dist/lib/commands/XCLAIM_JUSTID.js | 13 + .../client/dist/lib/commands/XDEL.d.ts | 4 + .../client/dist/lib/commands/XDEL.js | 9 + .../dist/lib/commands/XGROUP_CREATE.d.ts | 7 + .../client/dist/lib/commands/XGROUP_CREATE.js | 12 + .../lib/commands/XGROUP_CREATECONSUMER.d.ts | 3 + .../lib/commands/XGROUP_CREATECONSUMER.js | 10 + .../dist/lib/commands/XGROUP_DELCONSUMER.d.ts | 3 + .../dist/lib/commands/XGROUP_DELCONSUMER.js | 8 + .../dist/lib/commands/XGROUP_DESTROY.d.ts | 3 + .../dist/lib/commands/XGROUP_DESTROY.js | 10 + .../dist/lib/commands/XGROUP_SETID.d.ts | 3 + .../client/dist/lib/commands/XGROUP_SETID.js | 8 + .../dist/lib/commands/XINFO_CONSUMERS.d.ts | 10 + .../dist/lib/commands/XINFO_CONSUMERS.js | 17 + .../dist/lib/commands/XINFO_GROUPS.d.ts | 11 + .../client/dist/lib/commands/XINFO_GROUPS.js | 18 + .../dist/lib/commands/XINFO_STREAM.d.ts | 15 + .../client/dist/lib/commands/XINFO_STREAM.js | 46 + .../client/dist/lib/commands/XLEN.d.ts | 4 + .../client/dist/lib/commands/XLEN.js | 9 + .../client/dist/lib/commands/XPENDING.d.ts | 11 + .../client/dist/lib/commands/XPENDING.js | 18 + .../dist/lib/commands/XPENDING_RANGE.d.ts | 8 + .../dist/lib/commands/XPENDING_RANGE.js | 19 + .../client/dist/lib/commands/XRANGE.d.ts | 7 + .../client/dist/lib/commands/XRANGE.js | 15 + .../client/dist/lib/commands/XREAD.d.ts | 12 + .../client/dist/lib/commands/XREAD.js | 28 + .../client/dist/lib/commands/XREADGROUP.d.ts | 13 + .../client/dist/lib/commands/XREADGROUP.js | 31 + .../client/dist/lib/commands/XREVRANGE.d.ts | 5 + .../client/dist/lib/commands/XREVRANGE.js | 13 + .../client/dist/lib/commands/XTRIM.d.ts | 8 + .../client/dist/lib/commands/XTRIM.js | 16 + .../client/dist/lib/commands/ZADD.d.ts | 23 + .../client/dist/lib/commands/ZADD.js | 36 + .../client/dist/lib/commands/ZCARD.d.ts | 4 + .../client/dist/lib/commands/ZCARD.js | 9 + .../client/dist/lib/commands/ZCOUNT.d.ts | 4 + .../client/dist/lib/commands/ZCOUNT.js | 15 + .../client/dist/lib/commands/ZDIFF.d.ts | 5 + .../client/dist/lib/commands/ZDIFF.js | 10 + .../client/dist/lib/commands/ZDIFFSTORE.d.ts | 4 + .../client/dist/lib/commands/ZDIFFSTORE.js | 9 + .../dist/lib/commands/ZDIFF_WITHSCORES.d.ts | 5 + .../dist/lib/commands/ZDIFF_WITHSCORES.js | 16 + .../client/dist/lib/commands/ZINCRBY.d.ts | 3 + .../client/dist/lib/commands/ZINCRBY.js | 16 + .../client/dist/lib/commands/ZINTER.d.ts | 10 + .../client/dist/lib/commands/ZINTER.js | 17 + .../client/dist/lib/commands/ZINTERSTORE.d.ts | 9 + .../client/dist/lib/commands/ZINTERSTORE.js | 16 + .../dist/lib/commands/ZINTER_WITHSCORES.d.ts | 5 + .../dist/lib/commands/ZINTER_WITHSCORES.js | 16 + .../client/dist/lib/commands/ZLEXCOUNT.d.ts | 4 + .../client/dist/lib/commands/ZLEXCOUNT.js | 14 + .../client/dist/lib/commands/ZMSCORE.d.ts | 5 + .../client/dist/lib/commands/ZMSCORE.js | 12 + .../client/dist/lib/commands/ZPOPMAX.d.ts | 4 + .../client/dist/lib/commands/ZPOPMAX.js | 21 + .../dist/lib/commands/ZPOPMAX_COUNT.d.ts | 3 + .../client/dist/lib/commands/ZPOPMAX_COUNT.js | 15 + .../client/dist/lib/commands/ZPOPMIN.d.ts | 4 + .../client/dist/lib/commands/ZPOPMIN.js | 21 + .../dist/lib/commands/ZPOPMIN_COUNT.d.ts | 3 + .../client/dist/lib/commands/ZPOPMIN_COUNT.js | 15 + .../client/dist/lib/commands/ZRANDMEMBER.d.ts | 4 + .../client/dist/lib/commands/ZRANDMEMBER.js | 9 + .../dist/lib/commands/ZRANDMEMBER_COUNT.d.ts | 3 + .../dist/lib/commands/ZRANDMEMBER_COUNT.js | 14 + .../ZRANDMEMBER_COUNT_WITHSCORES.d.ts | 4 + .../commands/ZRANDMEMBER_COUNT_WITHSCORES.js | 16 + .../client/dist/lib/commands/ZRANGE.d.ts | 13 + .../client/dist/lib/commands/ZRANGE.js | 30 + .../client/dist/lib/commands/ZRANGEBYLEX.d.ts | 11 + .../client/dist/lib/commands/ZRANGEBYLEX.js | 19 + .../dist/lib/commands/ZRANGEBYSCORE.d.ts | 11 + .../client/dist/lib/commands/ZRANGEBYSCORE.js | 19 + .../commands/ZRANGEBYSCORE_WITHSCORES.d.ts | 5 + .../lib/commands/ZRANGEBYSCORE_WITHSCORES.js | 16 + .../client/dist/lib/commands/ZRANGESTORE.d.ts | 13 + .../client/dist/lib/commands/ZRANGESTORE.js | 40 + .../dist/lib/commands/ZRANGE_WITHSCORES.d.ts | 4 + .../dist/lib/commands/ZRANGE_WITHSCORES.js | 16 + .../client/dist/lib/commands/ZRANK.d.ts | 4 + .../client/dist/lib/commands/ZRANK.js | 9 + .../client/dist/lib/commands/ZREM.d.ts | 4 + .../client/dist/lib/commands/ZREM.js | 9 + .../dist/lib/commands/ZREMRANGEBYLEX.d.ts | 3 + .../dist/lib/commands/ZREMRANGEBYLEX.js | 8 + .../dist/lib/commands/ZREMRANGEBYRANK.d.ts | 3 + .../dist/lib/commands/ZREMRANGEBYRANK.js | 8 + .../dist/lib/commands/ZREMRANGEBYSCORE.d.ts | 3 + .../dist/lib/commands/ZREMRANGEBYSCORE.js | 8 + .../client/dist/lib/commands/ZREVRANK.d.ts | 4 + .../client/dist/lib/commands/ZREVRANK.js | 9 + .../client/dist/lib/commands/ZSCAN.d.ts | 10 + .../client/dist/lib/commands/ZSCAN.js | 27 + .../client/dist/lib/commands/ZSCORE.d.ts | 4 + .../client/dist/lib/commands/ZSCORE.js | 11 + .../client/dist/lib/commands/ZUNION.d.ts | 10 + .../client/dist/lib/commands/ZUNION.js | 17 + .../client/dist/lib/commands/ZUNIONSTORE.d.ts | 9 + .../client/dist/lib/commands/ZUNIONSTORE.js | 16 + .../dist/lib/commands/ZUNION_WITHSCORES.d.ts | 5 + .../dist/lib/commands/ZUNION_WITHSCORES.js | 16 + .../lib/commands/generic-transformers.d.ts | 149 + .../dist/lib/commands/generic-transformers.js | 282 + .../client/dist/lib/commands/index.d.ts | 31 + .../client/dist/lib/commands/index.js | 2 + .../@node-redis/client/dist/lib/errors.d.ts | 18 + .../@node-redis/client/dist/lib/errors.js | 39 + .../client/dist/lib/lua-script.d.ts | 10 + .../@node-redis/client/dist/lib/lua-script.js | 15 + .../client/dist/lib/multi-command.d.ts | 15 + .../client/dist/lib/multi-command.js | 70 + .../@node-redis/client/dist/lib/utils.d.ts | 1 + .../@node-redis/client/dist/lib/utils.js | 7 + node_modules/@node-redis/client/package.json | 50 + node_modules/@node-redis/json/README.md | 80 + .../json/dist/commands/ARRAPPEND.d.ts | 4 + .../json/dist/commands/ARRAPPEND.js | 13 + .../json/dist/commands/ARRAPPEND.spec.d.ts | 1 + .../json/dist/commands/ARRAPPEND.spec.js | 19 + .../json/dist/commands/ARRINDEX.d.ts | 5 + .../json/dist/commands/ARRINDEX.js | 17 + .../json/dist/commands/ARRINDEX.spec.d.ts | 1 + .../json/dist/commands/ARRINDEX.spec.js | 22 + .../json/dist/commands/ARRINSERT.d.ts | 4 + .../json/dist/commands/ARRINSERT.js | 13 + .../json/dist/commands/ARRINSERT.spec.d.ts | 1 + .../json/dist/commands/ARRINSERT.spec.js | 19 + .../json/dist/commands/ARRLEN.d.ts | 4 + .../@node-redis/json/dist/commands/ARRLEN.js | 13 + .../json/dist/commands/ARRLEN.spec.d.ts | 1 + .../json/dist/commands/ARRLEN.spec.js | 19 + .../json/dist/commands/ARRPOP.d.ts | 3 + .../@node-redis/json/dist/commands/ARRPOP.js | 17 + .../json/dist/commands/ARRPOP.spec.d.ts | 1 + .../json/dist/commands/ARRPOP.spec.js | 22 + .../json/dist/commands/ARRTRIM.d.ts | 3 + .../@node-redis/json/dist/commands/ARRTRIM.js | 8 + .../json/dist/commands/ARRTRIM.spec.d.ts | 1 + .../json/dist/commands/ARRTRIM.spec.js | 14 + .../json/dist/commands/DEBUG_MEMORY.d.ts | 3 + .../json/dist/commands/DEBUG_MEMORY.js | 12 + .../json/dist/commands/DEBUG_MEMORY.spec.d.ts | 1 + .../json/dist/commands/DEBUG_MEMORY.spec.js | 18 + .../@node-redis/json/dist/commands/DEL.d.ts | 3 + .../@node-redis/json/dist/commands/DEL.js | 12 + .../json/dist/commands/DEL.spec.d.ts | 1 + .../json/dist/commands/DEL.spec.js | 18 + .../json/dist/commands/FORGET.d.ts | 3 + .../@node-redis/json/dist/commands/FORGET.js | 12 + .../json/dist/commands/FORGET.spec.d.ts | 1 + .../json/dist/commands/FORGET.spec.js | 18 + .../@node-redis/json/dist/commands/GET.d.ts | 11 + .../@node-redis/json/dist/commands/GET.js | 28 + .../json/dist/commands/GET.spec.d.ts | 1 + .../json/dist/commands/GET.spec.js | 44 + .../@node-redis/json/dist/commands/MGET.d.ts | 4 + .../@node-redis/json/dist/commands/MGET.js | 17 + .../json/dist/commands/MGET.spec.d.ts | 1 + .../json/dist/commands/MGET.spec.js | 13 + .../json/dist/commands/NUMINCRBY.d.ts | 3 + .../json/dist/commands/NUMINCRBY.js | 10 + .../json/dist/commands/NUMINCRBY.spec.d.ts | 1 + .../json/dist/commands/NUMINCRBY.spec.js | 14 + .../json/dist/commands/NUMMULTBY.d.ts | 3 + .../json/dist/commands/NUMMULTBY.js | 10 + .../json/dist/commands/NUMMULTBY.spec.d.ts | 1 + .../json/dist/commands/NUMMULTBY.spec.js | 14 + .../json/dist/commands/OBJKEYS.d.ts | 3 + .../@node-redis/json/dist/commands/OBJKEYS.js | 12 + .../json/dist/commands/OBJKEYS.spec.d.ts | 1 + .../json/dist/commands/OBJKEYS.spec.js | 20 + .../json/dist/commands/OBJLEN.d.ts | 3 + .../@node-redis/json/dist/commands/OBJLEN.js | 12 + .../json/dist/commands/OBJLEN.spec.d.ts | 1 + .../json/dist/commands/OBJLEN.spec.js | 20 + .../@node-redis/json/dist/commands/RESP.d.ts | 5 + .../@node-redis/json/dist/commands/RESP.js | 12 + .../json/dist/commands/RESP.spec.d.ts | 1 + .../json/dist/commands/RESP.spec.js | 20 + .../@node-redis/json/dist/commands/SET.d.ts | 11 + .../@node-redis/json/dist/commands/SET.js | 17 + .../json/dist/commands/SET.spec.d.ts | 1 + .../json/dist/commands/SET.spec.js | 21 + .../json/dist/commands/STRAPPEND.d.ts | 6 + .../json/dist/commands/STRAPPEND.js | 16 + .../json/dist/commands/STRAPPEND.spec.d.ts | 1 + .../json/dist/commands/STRAPPEND.spec.js | 19 + .../json/dist/commands/STRLEN.d.ts | 4 + .../@node-redis/json/dist/commands/STRLEN.js | 13 + .../json/dist/commands/STRLEN.spec.d.ts | 1 + .../json/dist/commands/STRLEN.spec.js | 19 + .../@node-redis/json/dist/commands/TYPE.d.ts | 3 + .../@node-redis/json/dist/commands/TYPE.js | 12 + .../json/dist/commands/TYPE.spec.d.ts | 1 + .../json/dist/commands/TYPE.spec.js | 20 + .../@node-redis/json/dist/commands/index.d.ts | 74 + .../@node-redis/json/dist/commands/index.js | 93 + node_modules/@node-redis/json/dist/index.d.ts | 1 + node_modules/@node-redis/json/dist/index.js | 5 + .../@node-redis/json/dist/test-utils.d.ts | 56 + .../@node-redis/json/dist/test-utils.js | 22 + node_modules/@node-redis/json/package.json | 24 + node_modules/@node-redis/search/README.md | 120 + .../search/dist/commands/AGGREGATE.d.ts | 112 + .../search/dist/commands/AGGREGATE.js | 155 + .../search/dist/commands/AGGREGATE.spec.d.ts | 1 + .../search/dist/commands/AGGREGATE.spec.js | 358 + .../search/dist/commands/ALIASADD.d.ts | 2 + .../search/dist/commands/ALIASADD.js | 7 + .../search/dist/commands/ALIASADD.spec.d.ts | 1 + .../search/dist/commands/ALIASADD.spec.js | 9 + .../search/dist/commands/ALIASDEL.d.ts | 2 + .../search/dist/commands/ALIASDEL.js | 7 + .../search/dist/commands/ALIASDEL.spec.d.ts | 1 + .../search/dist/commands/ALIASDEL.spec.js | 9 + .../search/dist/commands/ALIASUPDATE.d.ts | 2 + .../search/dist/commands/ALIASUPDATE.js | 7 + .../dist/commands/ALIASUPDATE.spec.d.ts | 1 + .../search/dist/commands/ALIASUPDATE.spec.js | 9 + .../search/dist/commands/CONFIG_GET.d.ts | 6 + .../search/dist/commands/CONFIG_GET.js | 15 + .../search/dist/commands/CONFIG_GET.spec.d.ts | 1 + .../search/dist/commands/CONFIG_GET.spec.js | 19 + .../search/dist/commands/CONFIG_SET.d.ts | 2 + .../search/dist/commands/CONFIG_SET.js | 7 + .../search/dist/commands/CONFIG_SET.spec.d.ts | 1 + .../search/dist/commands/CONFIG_SET.spec.js | 9 + .../search/dist/commands/CREATE.d.ts | 53 + .../search/dist/commands/CREATE.js | 112 + .../search/dist/commands/CREATE.spec.d.ts | 1 + .../search/dist/commands/CREATE.spec.js | 218 + .../search/dist/commands/DICTADD.d.ts | 3 + .../search/dist/commands/DICTADD.js | 8 + .../search/dist/commands/DICTADD.spec.d.ts | 1 + .../search/dist/commands/DICTADD.spec.js | 18 + .../search/dist/commands/DICTDEL.d.ts | 3 + .../search/dist/commands/DICTDEL.js | 8 + .../search/dist/commands/DICTDEL.spec.d.ts | 1 + .../search/dist/commands/DICTDEL.spec.js | 18 + .../search/dist/commands/DICTDUMP.d.ts | 2 + .../search/dist/commands/DICTDUMP.js | 7 + .../search/dist/commands/DICTDUMP.spec.d.ts | 1 + .../search/dist/commands/DICTDUMP.spec.js | 14 + .../search/dist/commands/DROPINDEX.d.ts | 6 + .../search/dist/commands/DROPINDEX.js | 11 + .../search/dist/commands/DROPINDEX.spec.d.ts | 1 + .../search/dist/commands/DROPINDEX.spec.js | 22 + .../search/dist/commands/EXPLAIN.d.ts | 3 + .../search/dist/commands/EXPLAIN.js | 8 + .../search/dist/commands/EXPLAIN.spec.d.ts | 1 + .../search/dist/commands/EXPLAIN.spec.js | 9 + .../search/dist/commands/EXPLAINCLI.d.ts | 3 + .../search/dist/commands/EXPLAINCLI.js | 8 + .../search/dist/commands/EXPLAINCLI.spec.d.ts | 1 + .../search/dist/commands/EXPLAINCLI.spec.js | 9 + .../search/dist/commands/INFO.d.ts | 124 + .../@node-redis/search/dist/commands/INFO.js | 52 + .../search/dist/commands/INFO.spec.d.ts | 1 + .../search/dist/commands/INFO.spec.js | 57 + .../search/dist/commands/PROFILE.d.ts | 7 + .../search/dist/commands/PROFILE.js | 16 + .../search/dist/commands/SEARCH.d.ts | 48 + .../search/dist/commands/SEARCH.js | 105 + .../search/dist/commands/SEARCH.spec.d.ts | 1 + .../search/dist/commands/SEARCH.spec.js | 149 + .../search/dist/commands/SPELLCHECK.d.ts | 23 + .../search/dist/commands/SPELLCHECK.js | 34 + .../search/dist/commands/SPELLCHECK.spec.d.ts | 1 + .../search/dist/commands/SPELLCHECK.spec.js | 52 + .../search/dist/commands/SUGADD.d.ts | 7 + .../search/dist/commands/SUGADD.js | 14 + .../search/dist/commands/SUGADD.spec.d.ts | 1 + .../search/dist/commands/SUGADD.spec.js | 21 + .../search/dist/commands/SUGDEL.d.ts | 2 + .../search/dist/commands/SUGDEL.js | 9 + .../search/dist/commands/SUGDEL.spec.d.ts | 1 + .../search/dist/commands/SUGDEL.spec.js | 13 + .../search/dist/commands/SUGGET.d.ts | 7 + .../search/dist/commands/SUGGET.js | 15 + .../search/dist/commands/SUGGET.spec.d.ts | 1 + .../search/dist/commands/SUGGET.spec.js | 27 + .../dist/commands/SUGGET_WITHPAYLOADS.d.ts | 8 + .../dist/commands/SUGGET_WITHPAYLOADS.js | 26 + .../commands/SUGGET_WITHPAYLOADS.spec.d.ts | 1 + .../dist/commands/SUGGET_WITHPAYLOADS.spec.js | 22 + .../dist/commands/SUGGET_WITHSCORES.d.ts | 8 + .../search/dist/commands/SUGGET_WITHSCORES.js | 26 + .../dist/commands/SUGGET_WITHSCORES.spec.d.ts | 1 + .../dist/commands/SUGGET_WITHSCORES.spec.js | 22 + .../SUGGET_WITHSCORES_WITHPAYLOADS.d.ts | 7 + .../SUGGET_WITHSCORES_WITHPAYLOADS.js | 28 + .../SUGGET_WITHSCORES_WITHPAYLOADS.spec.d.ts | 1 + .../SUGGET_WITHSCORES_WITHPAYLOADS.spec.js | 23 + .../search/dist/commands/SUGLEN.d.ts | 3 + .../search/dist/commands/SUGLEN.js | 8 + .../search/dist/commands/SUGLEN.spec.d.ts | 1 + .../search/dist/commands/SUGLEN.spec.js | 13 + .../search/dist/commands/SYNDUMP.d.ts | 2 + .../search/dist/commands/SYNDUMP.js | 7 + .../search/dist/commands/SYNDUMP.spec.d.ts | 1 + .../search/dist/commands/SYNDUMP.spec.js | 16 + .../search/dist/commands/SYNUPDATE.d.ts | 7 + .../search/dist/commands/SYNUPDATE.js | 12 + .../search/dist/commands/SYNUPDATE.spec.d.ts | 1 + .../search/dist/commands/SYNUPDATE.spec.js | 24 + .../search/dist/commands/TAGVALS.d.ts | 2 + .../search/dist/commands/TAGVALS.js | 7 + .../search/dist/commands/TAGVALS.spec.d.ts | 1 + .../search/dist/commands/TAGVALS.spec.js | 17 + .../search/dist/commands/_LIST.d.ts | 2 + .../@node-redis/search/dist/commands/_LIST.js | 7 + .../search/dist/commands/_LIST.spec.d.ts | 1 + .../search/dist/commands/_LIST.spec.js | 13 + .../search/dist/commands/index.d.ts | 119 + .../@node-redis/search/dist/commands/index.js | 150 + .../search/dist/commands/index.spec.d.ts | 1 + .../search/dist/commands/index.spec.js | 28 + .../@node-redis/search/dist/index.d.ts | 3 + node_modules/@node-redis/search/dist/index.js | 11 + .../@node-redis/search/dist/test-utils.d.ts | 70 + .../@node-redis/search/dist/test-utils.js | 22 + node_modules/@node-redis/search/package.json | 24 + node_modules/ansi-styles/index.d.ts | 345 + node_modules/ansi-styles/index.js | 163 + node_modules/ansi-styles/license | 9 + node_modules/ansi-styles/package.json | 56 + node_modules/ansi-styles/readme.md | 152 + node_modules/at-least-node/LICENSE | 6 + node_modules/at-least-node/README.md | 25 + node_modules/at-least-node/index.js | 5 + node_modules/at-least-node/package.json | 32 + .../balanced-match/.github/FUNDING.yml | 2 + node_modules/balanced-match/LICENSE.md | 21 + node_modules/balanced-match/README.md | 97 + node_modules/balanced-match/index.js | 62 + node_modules/balanced-match/package.json | 48 + node_modules/block-stream/LICENCE | 25 + node_modules/block-stream/LICENSE | 15 + node_modules/block-stream/README.md | 14 + node_modules/block-stream/block-stream.js | 209 + node_modules/block-stream/package.json | 27 + node_modules/brace-expansion/LICENSE | 21 + node_modules/brace-expansion/README.md | 129 + node_modules/brace-expansion/index.js | 201 + node_modules/brace-expansion/package.json | 47 + node_modules/buffer-from/index.js | 69 + node_modules/buffer-from/package.json | 16 + node_modules/buffer-from/readme.md | 69 + node_modules/buffer-from/test.js | 12 + node_modules/builtins/.travis.yml | 4 + node_modules/builtins/History.md | 39 + node_modules/builtins/License | 20 + node_modules/builtins/Readme.md | 18 + node_modules/builtins/builtins.json | 35 + node_modules/builtins/package.json | 14 + node_modules/builtins/test.js | 5 + node_modules/chalk/index.d.ts | 415 + node_modules/chalk/license | 9 + node_modules/chalk/package.json | 68 + node_modules/chalk/readme.md | 293 + node_modules/chalk/source/index.js | 229 + node_modules/chalk/source/templates.js | 134 + node_modules/chalk/source/util.js | 39 + node_modules/cluster-key-slot/.eslintrc | 16 + node_modules/cluster-key-slot/LICENSE | 13 + node_modules/cluster-key-slot/README.md | 61 + node_modules/cluster-key-slot/lib/index.js | 166 + node_modules/cluster-key-slot/package.json | 55 + node_modules/color-convert/CHANGELOG.md | 54 + node_modules/color-convert/LICENSE | 21 + node_modules/color-convert/README.md | 68 + node_modules/color-convert/conversions.js | 839 ++ node_modules/color-convert/index.js | 81 + node_modules/color-convert/package.json | 48 + node_modules/color-convert/route.js | 97 + node_modules/color-name/LICENSE | 8 + node_modules/color-name/README.md | 11 + node_modules/color-name/index.js | 152 + node_modules/color-name/package.json | 28 + node_modules/commander/CHANGELOG.md | 436 + node_modules/commander/LICENSE | 22 + node_modules/commander/Readme.md | 713 + node_modules/commander/index.js | 1649 +++ node_modules/commander/package.json | 41 + node_modules/commander/typings/index.d.ts | 311 + node_modules/concat-map/.travis.yml | 4 + node_modules/concat-map/LICENSE | 18 + node_modules/concat-map/README.markdown | 62 + node_modules/concat-map/example/map.js | 6 + node_modules/concat-map/index.js | 13 + node_modules/concat-map/package.json | 43 + node_modules/concat-map/test/map.js | 39 + node_modules/core-util-is/LICENSE | 19 + node_modules/core-util-is/README.md | 3 + node_modules/core-util-is/lib/util.js | 107 + node_modules/core-util-is/package.json | 38 + node_modules/create-react-app/LICENSE | 21 + node_modules/create-react-app/README.md | 7 + .../create-react-app/createReactApp.js | 1151 ++ node_modules/create-react-app/index.js | 56 + .../node_modules/.bin/envinfo | 15 + .../node_modules/.bin/envinfo.cmd | 7 + .../create-react-app/node_modules/.bin/semver | 15 + .../node_modules/.bin/semver.cmd | 7 + node_modules/create-react-app/package.json | 49 + .../create-react-app/yarn.lock.cached | 11172 +++++++++++++++ node_modules/cross-spawn/CHANGELOG.md | 130 + node_modules/cross-spawn/LICENSE | 21 + node_modules/cross-spawn/README.md | 96 + node_modules/cross-spawn/index.js | 39 + node_modules/cross-spawn/lib/enoent.js | 59 + node_modules/cross-spawn/lib/parse.js | 91 + node_modules/cross-spawn/lib/util/escape.js | 45 + .../cross-spawn/lib/util/readShebang.js | 23 + .../cross-spawn/lib/util/resolveCommand.js | 52 + .../cross-spawn/node_modules/.bin/node-which | 15 + .../node_modules/.bin/node-which.cmd | 7 + node_modules/cross-spawn/package.json | 73 + node_modules/debug/.coveralls.yml | 1 + node_modules/debug/.eslintrc | 11 + node_modules/debug/.npmignore | 9 + node_modules/debug/.travis.yml | 14 + node_modules/debug/CHANGELOG.md | 362 + node_modules/debug/LICENSE | 19 + node_modules/debug/Makefile | 50 + node_modules/debug/README.md | 312 + node_modules/debug/component.json | 19 + node_modules/debug/karma.conf.js | 70 + node_modules/debug/node.js | 1 + node_modules/debug/package.json | 49 + node_modules/debug/src/browser.js | 185 + node_modules/debug/src/debug.js | 202 + node_modules/debug/src/index.js | 10 + node_modules/debug/src/inspector-log.js | 15 + node_modules/debug/src/node.js | 248 + node_modules/duplexer2/.npmignore | 1 + node_modules/duplexer2/.travis.yml | 3 + node_modules/duplexer2/LICENSE.md | 26 + node_modules/duplexer2/README.md | 129 + node_modules/duplexer2/example.js | 49 + node_modules/duplexer2/index.js | 62 + .../node_modules/readable-stream/.npmignore | 5 + .../node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 15 + .../node_modules/readable-stream/duplex.js | 1 + .../node_modules/readable-stream/float.patch | 923 ++ .../readable-stream/lib/_stream_duplex.js | 89 + .../lib/_stream_passthrough.js | 46 + .../readable-stream/lib/_stream_readable.js | 951 ++ .../readable-stream/lib/_stream_transform.js | 209 + .../readable-stream/lib/_stream_writable.js | 477 + .../node_modules/readable-stream/package.json | 32 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 10 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + node_modules/duplexer2/package.json | 31 + node_modules/duplexer2/test/tests.js | 161 + node_modules/envinfo/LICENSE | 21 + node_modules/envinfo/README.md | 285 + node_modules/envinfo/dist/cli.js | 2 + node_modules/envinfo/dist/envinfo.js | 1 + node_modules/envinfo/package.json | 96 + node_modules/fs-extra/CHANGELOG.md | 896 ++ node_modules/fs-extra/LICENSE | 15 + node_modules/fs-extra/README.md | 261 + .../fs-extra/lib/copy-sync/copy-sync.js | 166 + node_modules/fs-extra/lib/copy-sync/index.js | 5 + node_modules/fs-extra/lib/copy/copy.js | 232 + node_modules/fs-extra/lib/copy/index.js | 6 + node_modules/fs-extra/lib/empty/index.js | 48 + node_modules/fs-extra/lib/ensure/file.js | 69 + node_modules/fs-extra/lib/ensure/index.js | 23 + node_modules/fs-extra/lib/ensure/link.js | 61 + .../fs-extra/lib/ensure/symlink-paths.js | 99 + .../fs-extra/lib/ensure/symlink-type.js | 31 + node_modules/fs-extra/lib/ensure/symlink.js | 63 + node_modules/fs-extra/lib/fs/index.js | 128 + node_modules/fs-extra/lib/index.js | 27 + node_modules/fs-extra/lib/json/index.js | 16 + node_modules/fs-extra/lib/json/jsonfile.js | 11 + .../fs-extra/lib/json/output-json-sync.js | 12 + node_modules/fs-extra/lib/json/output-json.js | 12 + node_modules/fs-extra/lib/mkdirs/index.js | 14 + node_modules/fs-extra/lib/mkdirs/make-dir.js | 141 + node_modules/fs-extra/lib/move-sync/index.js | 5 + .../fs-extra/lib/move-sync/move-sync.js | 47 + node_modules/fs-extra/lib/move/index.js | 6 + node_modules/fs-extra/lib/move/move.js | 65 + node_modules/fs-extra/lib/output/index.js | 40 + .../fs-extra/lib/path-exists/index.js | 12 + node_modules/fs-extra/lib/remove/index.js | 9 + node_modules/fs-extra/lib/remove/rimraf.js | 302 + node_modules/fs-extra/lib/util/stat.js | 139 + node_modules/fs-extra/lib/util/utimes.js | 26 + node_modules/fs-extra/package.json | 70 + node_modules/fs.realpath/LICENSE | 43 + node_modules/fs.realpath/README.md | 33 + node_modules/fs.realpath/index.js | 66 + node_modules/fs.realpath/old.js | 303 + node_modules/fs.realpath/package.json | 26 + node_modules/fstream-ignore/LICENSE | 15 + node_modules/fstream-ignore/README.md | 22 + node_modules/fstream-ignore/ignore.js | 275 + node_modules/fstream-ignore/package.json | 28 + node_modules/fstream/.travis.yml | 9 + node_modules/fstream/LICENSE | 15 + node_modules/fstream/README.md | 76 + node_modules/fstream/examples/filter-pipe.js | 134 + node_modules/fstream/examples/pipe.js | 118 + node_modules/fstream/examples/reader.js | 68 + .../fstream/examples/symlink-write.js | 27 + node_modules/fstream/fstream.js | 35 + node_modules/fstream/lib/abstract.js | 85 + node_modules/fstream/lib/collect.js | 70 + node_modules/fstream/lib/dir-reader.js | 252 + node_modules/fstream/lib/dir-writer.js | 174 + node_modules/fstream/lib/file-reader.js | 150 + node_modules/fstream/lib/file-writer.js | 107 + node_modules/fstream/lib/get-type.js | 33 + node_modules/fstream/lib/link-reader.js | 53 + node_modules/fstream/lib/link-writer.js | 95 + node_modules/fstream/lib/proxy-reader.js | 95 + node_modules/fstream/lib/proxy-writer.js | 111 + node_modules/fstream/lib/reader.js | 255 + node_modules/fstream/lib/socket-reader.js | 36 + node_modules/fstream/lib/writer.js | 390 + node_modules/fstream/node_modules/.bin/mkdirp | 15 + .../fstream/node_modules/.bin/mkdirp.cmd | 7 + node_modules/fstream/node_modules/.bin/rimraf | 15 + .../fstream/node_modules/.bin/rimraf.cmd | 7 + node_modules/fstream/package.json | 28 + node_modules/generic-pool/README.md | 407 + node_modules/generic-pool/index.d.ts | 50 + node_modules/generic-pool/index.js | 13 + .../generic-pool/lib/DefaultEvictor.js | 23 + node_modules/generic-pool/lib/Deferred.js | 49 + node_modules/generic-pool/lib/Deque.js | 106 + .../generic-pool/lib/DequeIterator.js | 20 + .../generic-pool/lib/DoublyLinkedList.js | 94 + .../lib/DoublyLinkedListIterator.js | 100 + node_modules/generic-pool/lib/Pool.js | 744 + node_modules/generic-pool/lib/PoolDefaults.js | 34 + node_modules/generic-pool/lib/PoolOptions.js | 109 + .../generic-pool/lib/PooledResource.js | 49 + .../lib/PooledResourceStateEnum.js | 11 + .../generic-pool/lib/PriorityQueue.js | 69 + node_modules/generic-pool/lib/Queue.js | 35 + node_modules/generic-pool/lib/ResourceLoan.js | 29 + .../generic-pool/lib/ResourceRequest.js | 76 + node_modules/generic-pool/lib/errors.js | 27 + .../generic-pool/lib/factoryValidator.js | 16 + node_modules/generic-pool/lib/utils.js | 13 + node_modules/generic-pool/package.json | 293 + node_modules/glob/LICENSE | 21 + node_modules/glob/README.md | 378 + node_modules/glob/common.js | 236 + node_modules/glob/glob.js | 787 ++ node_modules/glob/package.json | 52 + node_modules/glob/sync.js | 483 + node_modules/graceful-fs/LICENSE | 15 + node_modules/graceful-fs/README.md | 143 + node_modules/graceful-fs/clone.js | 23 + node_modules/graceful-fs/graceful-fs.js | 429 + node_modules/graceful-fs/legacy-streams.js | 118 + node_modules/graceful-fs/package.json | 50 + node_modules/graceful-fs/polyfills.js | 346 + node_modules/has-flag/index.d.ts | 39 + node_modules/has-flag/index.js | 8 + node_modules/has-flag/license | 9 + node_modules/has-flag/package.json | 46 + node_modules/has-flag/readme.md | 89 + node_modules/hyperquest/.travis.yml | 5 + node_modules/hyperquest/LICENSE | 18 + .../hyperquest/example/many_hyperquest.js | 20 + .../hyperquest/example/many_request.js | 20 + node_modules/hyperquest/example/req.js | 2 + node_modules/hyperquest/index.js | 153 + node_modules/hyperquest/package.json | 40 + node_modules/hyperquest/readme.markdown | 269 + node_modules/hyperquest/test/auth.js | 51 + node_modules/hyperquest/test/auth_encoded.js | 51 + node_modules/hyperquest/test/auth_opt.js | 51 + node_modules/hyperquest/test/get.js | 37 + node_modules/hyperquest/test/many.js | 34 + node_modules/hyperquest/test/opts.js | 34 + node_modules/hyperquest/test/post.js | 39 + .../hyperquest/test/post_immediate.js | 31 + node_modules/hyperquest/test/readable.js | 20 + node_modules/hyperquest/test/set_header.js | 30 + node_modules/inflight/LICENSE | 15 + node_modules/inflight/README.md | 37 + node_modules/inflight/inflight.js | 54 + node_modules/inflight/package.json | 29 + node_modules/inherits/LICENSE | 16 + node_modules/inherits/README.md | 42 + node_modules/inherits/inherits.js | 9 + node_modules/inherits/inherits_browser.js | 27 + node_modules/inherits/package.json | 29 + node_modules/isarray/README.md | 54 + node_modules/isarray/build/build.js | 209 + node_modules/isarray/component.json | 19 + node_modules/isarray/index.js | 3 + node_modules/isarray/package.json | 25 + node_modules/isexe/.npmignore | 2 + node_modules/isexe/LICENSE | 15 + node_modules/isexe/README.md | 51 + node_modules/isexe/index.js | 57 + node_modules/isexe/mode.js | 41 + node_modules/isexe/package.json | 31 + node_modules/isexe/test/basic.js | 221 + node_modules/isexe/windows.js | 42 + node_modules/jsonfile/CHANGELOG.md | 171 + node_modules/jsonfile/LICENSE | 15 + node_modules/jsonfile/README.md | 230 + node_modules/jsonfile/index.js | 88 + .../node_modules/universalify/LICENSE | 20 + .../node_modules/universalify/README.md | 76 + .../node_modules/universalify/index.js | 24 + .../node_modules/universalify/package.json | 34 + node_modules/jsonfile/package.json | 40 + node_modules/jsonfile/utils.js | 14 + node_modules/kleur/index.js | 104 + node_modules/kleur/kleur.d.ts | 45 + node_modules/kleur/license | 21 + node_modules/kleur/package.json | 35 + node_modules/kleur/readme.md | 172 + node_modules/minimatch/LICENSE | 15 + node_modules/minimatch/README.md | 209 + node_modules/minimatch/minimatch.js | 923 ++ node_modules/minimatch/package.json | 30 + node_modules/minimist/.travis.yml | 8 + node_modules/minimist/LICENSE | 18 + node_modules/minimist/example/parse.js | 2 + node_modules/minimist/index.js | 245 + node_modules/minimist/package.json | 45 + node_modules/minimist/readme.markdown | 95 + node_modules/minimist/test/all_bool.js | 32 + node_modules/minimist/test/bool.js | 178 + node_modules/minimist/test/dash.js | 31 + node_modules/minimist/test/default_bool.js | 35 + node_modules/minimist/test/dotted.js | 22 + node_modules/minimist/test/kv_short.js | 16 + node_modules/minimist/test/long.js | 31 + node_modules/minimist/test/num.js | 36 + node_modules/minimist/test/parse.js | 197 + node_modules/minimist/test/parse_modified.js | 9 + node_modules/minimist/test/proto.js | 44 + node_modules/minimist/test/short.js | 67 + node_modules/minimist/test/stop_early.js | 15 + node_modules/minimist/test/unknown.js | 102 + node_modules/minimist/test/whitespace.js | 8 + node_modules/mkdirp/LICENSE | 21 + node_modules/mkdirp/bin/cmd.js | 33 + node_modules/mkdirp/bin/usage.txt | 12 + node_modules/mkdirp/index.js | 99 + node_modules/mkdirp/package.json | 34 + node_modules/mkdirp/readme.markdown | 100 + node_modules/ms/index.js | 152 + node_modules/ms/license.md | 21 + node_modules/ms/package.json | 37 + node_modules/ms/readme.md | 51 + node_modules/once/LICENSE | 15 + node_modules/once/README.md | 79 + node_modules/once/once.js | 42 + node_modules/once/package.json | 33 + node_modules/path-is-absolute/index.js | 20 + node_modules/path-is-absolute/license | 21 + node_modules/path-is-absolute/package.json | 43 + node_modules/path-is-absolute/readme.md | 59 + node_modules/path-key/index.d.ts | 40 + node_modules/path-key/index.js | 16 + node_modules/path-key/license | 9 + node_modules/path-key/package.json | 39 + node_modules/path-key/readme.md | 61 + node_modules/process-nextick-args/index.js | 45 + node_modules/process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 25 + node_modules/process-nextick-args/readme.md | 18 + .../prompts/dist/dateparts/datepart.js | 39 + node_modules/prompts/dist/dateparts/day.js | 35 + node_modules/prompts/dist/dateparts/hours.js | 30 + node_modules/prompts/dist/dateparts/index.js | 13 + .../prompts/dist/dateparts/meridiem.js | 25 + .../prompts/dist/dateparts/milliseconds.js | 28 + .../prompts/dist/dateparts/minutes.js | 29 + node_modules/prompts/dist/dateparts/month.js | 31 + .../prompts/dist/dateparts/seconds.js | 29 + node_modules/prompts/dist/dateparts/year.js | 29 + .../prompts/dist/elements/autocomplete.js | 285 + .../dist/elements/autocompleteMultiselect.js | 201 + node_modules/prompts/dist/elements/confirm.js | 93 + node_modules/prompts/dist/elements/date.js | 250 + node_modules/prompts/dist/elements/index.js | 13 + .../prompts/dist/elements/multiselect.js | 289 + node_modules/prompts/dist/elements/number.js | 250 + node_modules/prompts/dist/elements/prompt.js | 82 + node_modules/prompts/dist/elements/select.js | 190 + node_modules/prompts/dist/elements/text.js | 218 + node_modules/prompts/dist/elements/toggle.js | 124 + node_modules/prompts/dist/index.js | 154 + node_modules/prompts/dist/prompts.js | 222 + node_modules/prompts/dist/util/action.js | 38 + node_modules/prompts/dist/util/clear.js | 42 + .../prompts/dist/util/entriesToDisplay.js | 21 + node_modules/prompts/dist/util/figures.js | 32 + node_modules/prompts/dist/util/index.js | 12 + node_modules/prompts/dist/util/lines.js | 14 + node_modules/prompts/dist/util/strip.js | 7 + node_modules/prompts/dist/util/style.js | 51 + node_modules/prompts/dist/util/wrap.js | 16 + node_modules/prompts/index.js | 14 + .../prompts/lib/dateparts/datepart.js | 35 + node_modules/prompts/lib/dateparts/day.js | 42 + node_modules/prompts/lib/dateparts/hours.js | 30 + node_modules/prompts/lib/dateparts/index.js | 13 + .../prompts/lib/dateparts/meridiem.js | 24 + .../prompts/lib/dateparts/milliseconds.js | 28 + node_modules/prompts/lib/dateparts/minutes.js | 28 + node_modules/prompts/lib/dateparts/month.js | 33 + node_modules/prompts/lib/dateparts/seconds.js | 28 + node_modules/prompts/lib/dateparts/year.js | 28 + .../prompts/lib/elements/autocomplete.js | 264 + .../lib/elements/autocompleteMultiselect.js | 194 + node_modules/prompts/lib/elements/confirm.js | 89 + node_modules/prompts/lib/elements/date.js | 209 + node_modules/prompts/lib/elements/index.js | 13 + .../prompts/lib/elements/multiselect.js | 271 + node_modules/prompts/lib/elements/number.js | 213 + node_modules/prompts/lib/elements/prompt.js | 68 + node_modules/prompts/lib/elements/select.js | 175 + node_modules/prompts/lib/elements/text.js | 185 + node_modules/prompts/lib/elements/toggle.js | 118 + node_modules/prompts/lib/index.js | 98 + node_modules/prompts/lib/prompts.js | 206 + node_modules/prompts/lib/util/action.js | 39 + node_modules/prompts/lib/util/clear.js | 22 + .../prompts/lib/util/entriesToDisplay.js | 21 + node_modules/prompts/lib/util/figures.js | 33 + node_modules/prompts/lib/util/index.js | 12 + node_modules/prompts/lib/util/lines.js | 15 + node_modules/prompts/lib/util/strip.js | 11 + node_modules/prompts/lib/util/style.js | 40 + node_modules/prompts/lib/util/wrap.js | 27 + node_modules/prompts/license | 21 + node_modules/prompts/package.json | 53 + node_modules/prompts/readme.md | 882 ++ node_modules/readable-stream/.travis.yml | 34 + node_modules/readable-stream/CONTRIBUTING.md | 38 + node_modules/readable-stream/GOVERNANCE.md | 136 + node_modules/readable-stream/LICENSE | 47 + node_modules/readable-stream/README.md | 58 + .../doc/wg-meetings/2015-01-30.md | 60 + .../readable-stream/duplex-browser.js | 1 + node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 131 + .../lib/_stream_passthrough.js | 47 + .../readable-stream/lib/_stream_readable.js | 1019 ++ .../readable-stream/lib/_stream_transform.js | 214 + .../readable-stream/lib/_stream_writable.js | 687 + .../lib/internal/streams/BufferList.js | 79 + .../lib/internal/streams/destroy.js | 74 + .../lib/internal/streams/stream-browser.js | 1 + .../lib/internal/streams/stream.js | 1 + .../node_modules/isarray/.npmignore | 1 + .../node_modules/isarray/.travis.yml | 4 + .../node_modules/isarray/Makefile | 6 + .../node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 45 + .../node_modules/isarray/test.js | 20 + .../node_modules/string_decoder/.travis.yml | 50 + .../node_modules/string_decoder/LICENSE | 48 + .../node_modules/string_decoder/README.md | 47 + .../string_decoder/lib/string_decoder.js | 296 + .../node_modules/string_decoder/package.json | 31 + node_modules/readable-stream/package.json | 52 + node_modules/readable-stream/passthrough.js | 1 + .../readable-stream/readable-browser.js | 7 + node_modules/readable-stream/readable.js | 19 + node_modules/readable-stream/transform.js | 1 + .../readable-stream/writable-browser.js | 1 + node_modules/readable-stream/writable.js | 8 + node_modules/redis-errors/.npmignore | 15 + node_modules/redis-errors/LICENSE | 22 + node_modules/redis-errors/README.md | 116 + node_modules/redis-errors/index.js | 7 + node_modules/redis-errors/lib/modern.js | 59 + node_modules/redis-errors/lib/old.js | 119 + node_modules/redis-errors/package.json | 41 + node_modules/redis-parser/.npmignore | 15 + node_modules/redis-parser/LICENSE | 22 + node_modules/redis-parser/README.md | 166 + node_modules/redis-parser/changelog.md | 156 + node_modules/redis-parser/index.js | 3 + node_modules/redis-parser/lib/parser.js | 552 + node_modules/redis-parser/package.json | 53 + node_modules/redis-url/.npmignore | 1 + node_modules/redis-url/README.md | 18 + node_modules/redis-url/index.js | 28 + node_modules/redis-url/package.json | 8 + node_modules/redis-url/test.js | 18 + node_modules/redis/.idea/modules.xml | 8 + node_modules/redis/.idea/node-redis.iml | 12 + node_modules/redis/.idea/vcs.xml | 6 + node_modules/redis/LICENSE | 24 + node_modules/redis/README.md | 312 + node_modules/redis/dist/index.d.ts | 108 + node_modules/redis/dist/index.js | 37 + node_modules/redis/dump.rdb | Bin 0 -> 92 bytes node_modules/redis/package.json | 37 + .../redis/scripts/cluster-stress-test.js | 72 + node_modules/redis/scripts/error.log | 0 .../scripts/node_modules/.package-lock.json | 28 + node_modules/redis/scripts/package-lock.json | 47 + node_modules/redis/scripts/package.json | 9 + node_modules/rimraf/LICENSE | 15 + node_modules/rimraf/README.md | 101 + node_modules/rimraf/bin.js | 50 + node_modules/rimraf/package.json | 29 + node_modules/rimraf/rimraf.js | 372 + node_modules/safe-buffer/LICENSE | 21 + node_modules/safe-buffer/README.md | 584 + node_modules/safe-buffer/index.d.ts | 187 + node_modules/safe-buffer/index.js | 62 + node_modules/safe-buffer/package.json | 37 + node_modules/semver/CHANGELOG.md | 111 + node_modules/semver/LICENSE | 15 + node_modules/semver/README.md | 566 + node_modules/semver/bin/semver.js | 173 + node_modules/semver/classes/comparator.js | 139 + node_modules/semver/classes/index.js | 5 + node_modules/semver/classes/range.js | 463 + node_modules/semver/classes/semver.js | 290 + node_modules/semver/functions/clean.js | 6 + node_modules/semver/functions/cmp.js | 48 + node_modules/semver/functions/coerce.js | 51 + .../semver/functions/compare-build.js | 7 + .../semver/functions/compare-loose.js | 3 + node_modules/semver/functions/compare.js | 5 + node_modules/semver/functions/diff.js | 23 + node_modules/semver/functions/eq.js | 3 + node_modules/semver/functions/gt.js | 3 + node_modules/semver/functions/gte.js | 3 + node_modules/semver/functions/inc.js | 15 + node_modules/semver/functions/lt.js | 3 + node_modules/semver/functions/lte.js | 3 + node_modules/semver/functions/major.js | 3 + node_modules/semver/functions/minor.js | 3 + node_modules/semver/functions/neq.js | 3 + node_modules/semver/functions/parse.js | 37 + node_modules/semver/functions/patch.js | 3 + node_modules/semver/functions/prerelease.js | 6 + node_modules/semver/functions/rcompare.js | 3 + node_modules/semver/functions/rsort.js | 3 + node_modules/semver/functions/satisfies.js | 10 + node_modules/semver/functions/sort.js | 3 + node_modules/semver/functions/valid.js | 6 + node_modules/semver/index.js | 48 + node_modules/semver/internal/constants.js | 17 + node_modules/semver/internal/debug.js | 9 + node_modules/semver/internal/identifiers.js | 23 + node_modules/semver/internal/re.js | 182 + node_modules/semver/package.json | 38 + node_modules/semver/preload.js | 2 + node_modules/semver/range.bnf | 16 + node_modules/semver/ranges/gtr.js | 4 + node_modules/semver/ranges/intersects.js | 7 + node_modules/semver/ranges/ltr.js | 4 + node_modules/semver/ranges/max-satisfying.js | 25 + node_modules/semver/ranges/min-satisfying.js | 24 + node_modules/semver/ranges/min-version.js | 57 + node_modules/semver/ranges/outside.js | 80 + node_modules/semver/ranges/simplify.js | 44 + node_modules/semver/ranges/subset.js | 155 + node_modules/semver/ranges/to-comparators.js | 8 + node_modules/semver/ranges/valid.js | 11 + node_modules/shebang-command/index.js | 19 + node_modules/shebang-command/license | 9 + node_modules/shebang-command/package.json | 34 + node_modules/shebang-command/readme.md | 34 + node_modules/shebang-regex/index.d.ts | 22 + node_modules/shebang-regex/index.js | 2 + node_modules/shebang-regex/license | 9 + node_modules/shebang-regex/package.json | 35 + node_modules/shebang-regex/readme.md | 33 + node_modules/sisteransi/license | 21 + node_modules/sisteransi/package.json | 34 + node_modules/sisteransi/readme.md | 113 + node_modules/sisteransi/src/index.js | 58 + node_modules/sisteransi/src/sisteransi.d.ts | 35 + node_modules/src/.npmignore | 15 + node_modules/src/.travis.yml | 9 + node_modules/src/README.md | 41 + node_modules/src/index.js | 48 + node_modules/src/package.json | 31 + node_modules/src/test/src-test.js | 74 + node_modules/string_decoder/.npmignore | 2 + node_modules/string_decoder/LICENSE | 20 + node_modules/string_decoder/README.md | 7 + node_modules/string_decoder/index.js | 221 + node_modules/string_decoder/package.json | 25 + node_modules/supports-color/browser.js | 5 + node_modules/supports-color/index.js | 135 + node_modules/supports-color/license | 9 + node_modules/supports-color/package.json | 53 + node_modules/supports-color/readme.md | 76 + node_modules/tar-pack/.travis.yml | 7 + node_modules/tar-pack/LICENSE | 23 + node_modules/tar-pack/README.md | 84 + node_modules/tar-pack/index.js | 245 + .../tar-pack/node_modules/.bin/rimraf | 15 + .../tar-pack/node_modules/.bin/rimraf.cmd | 7 + node_modules/tar-pack/package.json | 28 + .../tar-pack/test/fixtures/packed-file.txt | 1 + .../tar-pack/test/fixtures/packed.tar | Bin 0 -> 3584 bytes .../tar-pack/test/fixtures/packed.tar.gz | Bin 0 -> 152 bytes .../tar-pack/test/fixtures/to-pack/bar.txt | 1 + .../tar-pack/test/fixtures/to-pack/foo.txt | 1 + node_modules/tar-pack/test/index.js | 109 + .../0471d9cf-687f-4ae8-84a5-ce7468becd03.json | 1 + .../12bca2bc-6a2b-4f45-abc7-8483922a524d.json | 1 + .../37d58de4-deea-4808-bb77-d27685bd1501.json | 1 + .../5ad8066b-6b8c-4bc8-b807-c40bf80898b7.json | 1 + .../5cbf674c-7089-4b7d-b9de-2119be4dbb0b.json | 1 + .../7853e29b-78ef-4ab4-b8fb-e1e176c0787b.json | 1 + .../9d414044-b18d-4f6d-b2e0-531a89bf6f4f.json | 1 + .../c3ffeb8c-8e79-4a2c-b678-e5a917fe721e.json | 1 + .../ea0194cb-f599-402f-8876-84fb8251e8db.json | 1 + .../eda6b7a3-5e15-440f-8619-e11a15a07f77.json | 1 + .../fb518800-240c-42ff-811f-79e92708d9db.json | 1 + .../fdecfc06-a944-4897-9530-e08f62883fc1.json | 1 + .../0471d9cf-687f-4ae8-84a5-ce7468becd03.json | 1 + .../12bca2bc-6a2b-4f45-abc7-8483922a524d.json | 1 + .../37d58de4-deea-4808-bb77-d27685bd1501.json | 1 + .../5ad8066b-6b8c-4bc8-b807-c40bf80898b7.json | 1 + .../5cbf674c-7089-4b7d-b9de-2119be4dbb0b.json | 1 + .../7853e29b-78ef-4ab4-b8fb-e1e176c0787b.json | 1 + .../9d414044-b18d-4f6d-b2e0-531a89bf6f4f.json | 1 + .../c3ffeb8c-8e79-4a2c-b678-e5a917fe721e.json | 1 + .../ea0194cb-f599-402f-8876-84fb8251e8db.json | 1 + .../eda6b7a3-5e15-440f-8619-e11a15a07f77.json | 1 + .../fb518800-240c-42ff-811f-79e92708d9db.json | 1 + .../fdecfc06-a944-4897-9530-e08f62883fc1.json | 1 + .../tar/.nyc_output/processinfo/index.json | 1 + node_modules/tar/.travis.yml | 4 + node_modules/tar/LICENSE | 12 + node_modules/tar/README.md | 50 + .../tar/coverage/lcov-report/base.css | 212 + .../tar/coverage/lcov-report/index.html | 106 + .../tar/coverage/lcov-report/prettify.css | 1 + .../tar/coverage/lcov-report/prettify.js | 1 + .../lcov-report/sort-arrow-sprite.png | Bin 0 -> 209 bytes .../tar/coverage/lcov-report/sorter.js | 158 + .../tar/coverage/lcov-report/tar/index.html | 93 + .../coverage/lcov-report/tar/index.js.html | 119 + .../lcov-report/tar/lib/create.js.html | 380 + .../lcov-report/tar/lib/extract.js.html | 401 + .../lcov-report/tar/lib/header.js.html | 881 ++ .../tar/lib/high-level-opt.js.html | 152 + .../coverage/lcov-report/tar/lib/index.html | 314 + .../lcov-report/tar/lib/large-numbers.js.html | 341 + .../coverage/lcov-report/tar/lib/list.js.html | 449 + .../lcov-report/tar/lib/mkdir.js.html | 686 + .../coverage/lcov-report/tar/lib/pack.js.html | 1268 ++ .../lcov-report/tar/lib/parse.js.html | 1310 ++ .../coverage/lcov-report/tar/lib/pax.js.html | 500 + .../lcov-report/tar/lib/read-entry.js.html | 347 + .../lcov-report/tar/lib/replace.js.html | 722 + .../lcov-report/tar/lib/types.js.html | 197 + .../lcov-report/tar/lib/unpack.js.html | 1604 +++ .../lcov-report/tar/lib/update.js.html | 173 + .../lcov-report/tar/lib/warn-mixin.js.html | 107 + .../lcov-report/tar/lib/winchars.js.html | 134 + .../lcov-report/tar/lib/write-entry.js.html | 1268 ++ node_modules/tar/coverage/lcov.info | 3690 +++++ node_modules/tar/examples/extracter.js | 19 + node_modules/tar/examples/packer.js | 24 + node_modules/tar/examples/reader.js | 36 + node_modules/tar/lib/buffer-entry.js | 30 + node_modules/tar/lib/entry-writer.js | 169 + node_modules/tar/lib/entry.js | 220 + .../tar/lib/extended-header-writer.js | 191 + node_modules/tar/lib/extended-header.js | 140 + node_modules/tar/lib/extract.js | 94 + node_modules/tar/lib/global-header-writer.js | 14 + node_modules/tar/lib/header.js | 385 + node_modules/tar/lib/pack.js | 236 + node_modules/tar/lib/parse.js | 281 + node_modules/tar/package.json | 26 + node_modules/tar/tar.js | 173 + node_modules/tar/test/00-setup-fixtures.js | 53 + .../tar/test/cb-never-called-1.0.1.tgz | Bin 0 -> 4096 bytes node_modules/tar/test/dir-normalization.js | 177 + node_modules/tar/test/dir-normalization.tar | Bin 0 -> 4608 bytes node_modules/tar/test/error-on-broken.js | 33 + node_modules/tar/test/extract-move.js | 132 + node_modules/tar/test/extract.js | 367 + node_modules/tar/test/fixtures.tgz | Bin 0 -> 19352 bytes node_modules/tar/test/header.js | 183 + .../tar/test/link-file-entry-collision.js | 39 + .../link-file-entry-collision/bad-link.hex | 25 + .../link-file-entry-collision/bad-link.tar | Bin 0 -> 3584 bytes node_modules/tar/test/pack-no-proprietary.js | 886 ++ node_modules/tar/test/pack.js | 952 ++ node_modules/tar/test/parse-discard.js | 29 + node_modules/tar/test/parse.js | 359 + node_modules/tar/test/zz-cleanup.js | 20 + node_modules/through2/.npmignore | 3 + node_modules/through2/LICENSE | 39 + node_modules/through2/README.md | 132 + .../node_modules/readable-stream/.npmignore | 5 + .../node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 15 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 89 + .../lib/_stream_passthrough.js | 46 + .../readable-stream/lib/_stream_readable.js | 982 ++ .../readable-stream/lib/_stream_transform.js | 210 + .../readable-stream/lib/_stream_writable.js | 386 + .../node_modules/readable-stream/package.json | 32 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 11 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + node_modules/through2/package.json | 31 + node_modules/through2/through2.js | 96 + node_modules/tmp/CHANGELOG.md | 288 + node_modules/tmp/LICENSE | 21 + node_modules/tmp/README.md | 365 + node_modules/tmp/lib/tmp.js | 780 ++ node_modules/tmp/node_modules/.bin/rimraf | 15 + node_modules/tmp/node_modules/.bin/rimraf.cmd | 7 + .../tmp/node_modules/rimraf/CHANGELOG.md | 65 + node_modules/tmp/node_modules/rimraf/LICENSE | 15 + .../tmp/node_modules/rimraf/README.md | 101 + node_modules/tmp/node_modules/rimraf/bin.js | 68 + .../tmp/node_modules/rimraf/package.json | 32 + .../tmp/node_modules/rimraf/rimraf.js | 360 + node_modules/tmp/package.json | 58 + node_modules/uid-number/LICENSE | 15 + node_modules/uid-number/README.md | 17 + node_modules/uid-number/get-uid-gid.js | 24 + node_modules/uid-number/package.json | 18 + node_modules/uid-number/uid-number.js | 59 + node_modules/underscore/LICENSE | 23 + node_modules/underscore/README.md | 22 + node_modules/underscore/package.json | 27 + node_modules/underscore/underscore-min.js | 6 + node_modules/underscore/underscore.js | 1343 ++ node_modules/universalify/LICENSE | 20 + node_modules/universalify/README.md | 76 + node_modules/universalify/index.js | 23 + node_modules/universalify/package.json | 34 + node_modules/util-deprecate/History.md | 16 + node_modules/util-deprecate/LICENSE | 24 + node_modules/util-deprecate/README.md | 53 + node_modules/util-deprecate/browser.js | 67 + node_modules/util-deprecate/node.js | 6 + node_modules/util-deprecate/package.json | 27 + node_modules/uuid/.npmignore | 2 + node_modules/uuid/.travis.yml | 5 + node_modules/uuid/LICENSE.md | 2 + node_modules/uuid/README.md | 205 + node_modules/uuid/benchmark/README.md | 53 + node_modules/uuid/benchmark/bench.gnu | 174 + node_modules/uuid/benchmark/bench.sh | 34 + .../uuid/benchmark/benchmark-native.c | 34 + node_modules/uuid/benchmark/benchmark.js | 84 + node_modules/uuid/benchmark/package.json | 9 + node_modules/uuid/buffer-browser.js | 1 + node_modules/uuid/buffer.js | 1 + node_modules/uuid/misc/compare.js | 62 + node_modules/uuid/misc/perf.js | 102 + node_modules/uuid/package.json | 46 + node_modules/uuid/rng-browser.js | 31 + node_modules/uuid/rng.js | 4 + node_modules/uuid/test/mocha.opts | 1 + node_modules/uuid/test/test.js | 105 + node_modules/uuid/uuid.js | 189 + .../validate-npm-package-name/.npmignore | 1 + .../aa4ee25ac41a9c3c7ee37ce965e6d1ac.json | 1 + .../bb918173e62b9517f55b630902d07ef4.json | 1 + .../validate-npm-package-name/.travis.yml | 6 + .../validate-npm-package-name/LICENSE | 6 + .../validate-npm-package-name/README.md | 120 + .../validate-npm-package-name/index.js | 105 + .../validate-npm-package-name/package.json | 38 + .../validate-npm-package-name/test/index.js | 109 + node_modules/which/CHANGELOG.md | 166 + node_modules/which/LICENSE | 15 + node_modules/which/README.md | 54 + node_modules/which/bin/node-which | 52 + node_modules/which/package.json | 43 + node_modules/which/which.js | 125 + node_modules/wrappy/LICENSE | 15 + node_modules/wrappy/README.md | 36 + node_modules/wrappy/package.json | 29 + node_modules/wrappy/wrappy.js | 33 + node_modules/xtend/.jshintrc | 30 + node_modules/xtend/LICENSE | 20 + node_modules/xtend/README.md | 32 + node_modules/xtend/immutable.js | 19 + node_modules/xtend/mutable.js | 17 + node_modules/xtend/package.json | 55 + node_modules/xtend/test.js | 103 + node_modules/yallist/LICENSE | 15 + node_modules/yallist/README.md | 204 + node_modules/yallist/iterator.js | 8 + node_modules/yallist/package.json | 29 + node_modules/yallist/yallist.js | 426 + package-lock.json | 1351 ++ package.json | 6 + yarn.lock | 543 + 1579 files changed, 121505 insertions(+) create mode 100644 my-app/.gitignore create mode 100644 my-app/README.md create mode 100644 my-app/package.json create mode 100644 my-app/public/favicon.ico create mode 100644 my-app/public/index.html create mode 100644 my-app/public/logo192.png create mode 100644 my-app/public/logo512.png create mode 100644 my-app/public/manifest.json create mode 100644 my-app/public/robots.txt create mode 100644 my-app/src/App.css create mode 100644 my-app/src/App.js create mode 100644 my-app/src/App.test.js create mode 100644 my-app/src/index.css create mode 100644 my-app/src/index.js create mode 100644 my-app/src/logo.svg create mode 100644 my-app/src/reportWebVitals.js create mode 100644 my-app/src/setupTests.js create mode 100644 my-app/yarn.lock create mode 100644 node_modules/.bin/create-react-app create mode 100644 node_modules/.bin/create-react-app.cmd create mode 100644 node_modules/.bin/envinfo create mode 100644 node_modules/.bin/envinfo.cmd create mode 100644 node_modules/.bin/mkdirp create mode 100644 node_modules/.bin/mkdirp.cmd create mode 100644 node_modules/.bin/node-which create mode 100644 node_modules/.bin/node-which.cmd create mode 100644 node_modules/.bin/rimraf create mode 100644 node_modules/.bin/rimraf.cmd create mode 100644 node_modules/.bin/semver create mode 100644 node_modules/.bin/semver.cmd create mode 100644 node_modules/.yarn-integrity create mode 100644 node_modules/@node-redis/client/CHANGELOG.md create mode 100644 node_modules/@node-redis/client/README.md create mode 100644 node_modules/@node-redis/client/dist/index.d.ts create mode 100644 node_modules/@node-redis/client/dist/index.js create mode 100644 node_modules/@node-redis/client/dist/lib/client/commands-queue.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/client/commands-queue.js create mode 100644 node_modules/@node-redis/client/dist/lib/client/commands.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/client/commands.js create mode 100644 node_modules/@node-redis/client/dist/lib/client/index.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/client/index.js create mode 100644 node_modules/@node-redis/client/dist/lib/client/multi-command.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/client/multi-command.js create mode 100644 node_modules/@node-redis/client/dist/lib/client/socket.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/client/socket.js create mode 100644 node_modules/@node-redis/client/dist/lib/cluster/cluster-slots.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/cluster/cluster-slots.js create mode 100644 node_modules/@node-redis/client/dist/lib/cluster/commands.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/cluster/commands.js create mode 100644 node_modules/@node-redis/client/dist/lib/cluster/index.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/cluster/index.js create mode 100644 node_modules/@node-redis/client/dist/lib/cluster/multi-command.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/cluster/multi-command.js create mode 100644 node_modules/@node-redis/client/dist/lib/command-options.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/command-options.js create mode 100644 node_modules/@node-redis/client/dist/lib/commander.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commander.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_CAT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_CAT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_DELUSER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_DELUSER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_GENPASS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_GENPASS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_GETUSER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_GETUSER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_LIST.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_LIST.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_LOAD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_LOAD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_LOG.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_LOG.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_LOG_RESET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_LOG_RESET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_SAVE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_SAVE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_SETUSER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_SETUSER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_USERS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_USERS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_WHOAMI.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ACL_WHOAMI.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/APPEND.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/APPEND.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ASKING.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ASKING.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/AUTH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/AUTH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BGREWRITEAOF.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BGREWRITEAOF.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BGSAVE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BGSAVE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BITCOUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BITCOUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BITFIELD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BITFIELD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BITOP.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BITOP.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BITPOS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BITPOS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BLMOVE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BLMOVE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BLPOP.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BLPOP.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BRPOP.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BRPOP.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BRPOPLPUSH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BRPOPLPUSH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BZPOPMAX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BZPOPMAX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BZPOPMIN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/BZPOPMIN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLIENT_ID.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLIENT_ID.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLIENT_INFO.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLIENT_INFO.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_INFO.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_INFO.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_MEET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_MEET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_NODES.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_NODES.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_RESET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_RESET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SETSLOT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SETSLOT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SLOTS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SLOTS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COMMAND.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COMMAND.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COMMAND_COUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COMMAND_COUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COMMAND_GETKEYS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COMMAND_GETKEYS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COMMAND_INFO.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COMMAND_INFO.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CONFIG_GET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CONFIG_GET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CONFIG_RESETSTAT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CONFIG_RESETSTAT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CONFIG_REWRITE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CONFIG_REWRITE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CONFIG_SET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/CONFIG_SET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COPY.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/COPY.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DBSIZE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DBSIZE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DECR.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DECR.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DECRBY.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DECRBY.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DEL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DEL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DISCARD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DISCARD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DUMP.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/DUMP.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ECHO.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ECHO.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EVAL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EVAL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EVALSHA.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EVALSHA.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EXISTS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EXISTS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EXPIRE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EXPIRE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EXPIREAT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/EXPIREAT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/FAILOVER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/FAILOVER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/FLUSHALL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/FLUSHALL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/FLUSHDB.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/FLUSHDB.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOADD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOADD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEODIST.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEODIST.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOHASH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOHASH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOPOS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOPOS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOSEARCHSTORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOSEARCHSTORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH_WITH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH_WITH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETBIT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETBIT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETDEL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETDEL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETEX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETEX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETRANGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETRANGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETSET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GETSET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GET_BUFFER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/GET_BUFFER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HDEL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HDEL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HELLO.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HELLO.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HEXISTS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HEXISTS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HGET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HGET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HGETALL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HGETALL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HINCRBY.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HINCRBY.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HINCRBYFLOAT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HINCRBYFLOAT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HKEYS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HKEYS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HLEN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HLEN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HMGET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HMGET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HSCAN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HSCAN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HSET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HSET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HSETNX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HSETNX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HSTRLEN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HSTRLEN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HVALS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/HVALS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/INCR.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/INCR.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/INCRBY.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/INCRBY.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/INCRBYFLOAT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/INCRBYFLOAT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/INFO.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/INFO.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/KEYS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/KEYS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LASTSAVE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LASTSAVE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LINDEX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LINDEX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LINSERT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LINSERT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LLEN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LLEN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LMOVE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LMOVE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LOLWUT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LOLWUT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPOP.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPOP.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPOP_COUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPOP_COUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPOS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPOS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPOS_COUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPOS_COUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPUSH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPUSH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPUSHX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LPUSHX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LRANGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LRANGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LREM.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LREM.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LSET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LSET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LTRIM.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/LTRIM.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_DOCTOR.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_DOCTOR.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_PURGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_PURGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_STATS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_STATS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_USAGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MEMORY_USAGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MGET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MGET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MIGRATE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MIGRATE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MODULE_LIST.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MODULE_LIST.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MODULE_LOAD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MODULE_LOAD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MODULE_UNLOAD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MODULE_UNLOAD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MOVE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MOVE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MSET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MSET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MSETNX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/MSETNX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PERSIST.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PERSIST.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PEXPIRE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PEXPIRE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PEXPIREAT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PEXPIREAT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PFADD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PFADD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PFCOUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PFCOUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PFMERGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PFMERGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PING.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PING.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PSETEX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PSETEX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PTTL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PTTL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PUBLISH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PUBLISH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PUBSUB_CHANNELS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PUBSUB_CHANNELS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMPAT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMPAT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMSUB.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMSUB.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RANDOMKEY.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RANDOMKEY.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/READONLY.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/READONLY.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/READWRITE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/READWRITE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RENAME.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RENAME.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RENAMENX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RENAMENX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/REPLICAOF.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/REPLICAOF.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RESTORE-ASKING.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RESTORE-ASKING.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ROLE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ROLE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPOP.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPOP.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPOPLPUSH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPOPLPUSH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPOP_COUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPOP_COUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPUSH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPUSH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPUSHX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/RPUSHX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SADD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SADD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SAVE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SAVE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCAN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCAN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCARD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCARD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_DEBUG.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_DEBUG.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_EXISTS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_EXISTS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_FLUSH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_FLUSH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_KILL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_KILL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_LOAD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SCRIPT_LOAD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SDIFF.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SDIFF.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SDIFFSTORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SDIFFSTORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SET.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SET.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SETBIT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SETBIT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SETEX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SETEX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SETNX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SETNX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SETRANGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SETRANGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SHUTDOWN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SHUTDOWN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SINTER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SINTER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SINTERSTORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SINTERSTORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SISMEMBER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SISMEMBER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SMEMBERS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SMEMBERS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SMISMEMBER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SMISMEMBER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SMOVE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SMOVE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SORT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SORT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SPOP.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SPOP.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER_COUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER_COUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SREM.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SREM.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SSCAN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SSCAN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/STRLEN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/STRLEN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SUNION.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SUNION.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SUNIONSTORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SUNIONSTORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SWAPDB.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/SWAPDB.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/TIME.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/TIME.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/TOUCH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/TOUCH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/TTL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/TTL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/TYPE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/TYPE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/UNLINK.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/UNLINK.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/UNWATCH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/UNWATCH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/WAIT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/WAIT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/WATCH.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/WATCH.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XACK.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XACK.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XADD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XADD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XCLAIM.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XCLAIM.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XCLAIM_JUSTID.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XCLAIM_JUSTID.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XDEL.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XDEL.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_DELCONSUMER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_DELCONSUMER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_DESTROY.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_DESTROY.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_SETID.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XGROUP_SETID.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XINFO_CONSUMERS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XINFO_CONSUMERS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XINFO_GROUPS.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XINFO_GROUPS.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XINFO_STREAM.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XINFO_STREAM.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XLEN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XLEN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XPENDING.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XPENDING.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XPENDING_RANGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XPENDING_RANGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XRANGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XRANGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XREAD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XREAD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XREADGROUP.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XREADGROUP.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XREVRANGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XREVRANGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XTRIM.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/XTRIM.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZADD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZADD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZCARD.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZCARD.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZCOUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZCOUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZDIFF.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZDIFF.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZDIFFSTORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZDIFFSTORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZDIFF_WITHSCORES.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZDIFF_WITHSCORES.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZINCRBY.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZINCRBY.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZINTER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZINTER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZINTERSTORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZINTERSTORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZINTER_WITHSCORES.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZINTER_WITHSCORES.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZLEXCOUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZLEXCOUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZMSCORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZMSCORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX_COUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX_COUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN_COUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN_COUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYLEX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYLEX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGESTORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGESTORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGE_WITHSCORES.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANGE_WITHSCORES.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANK.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZRANK.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREM.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREM.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYLEX.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYLEX.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYRANK.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYRANK.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYSCORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYSCORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREVRANK.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZREVRANK.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZSCAN.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZSCAN.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZSCORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZSCORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZUNION.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZUNION.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZUNIONSTORE.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZUNIONSTORE.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZUNION_WITHSCORES.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/ZUNION_WITHSCORES.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/generic-transformers.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/generic-transformers.js create mode 100644 node_modules/@node-redis/client/dist/lib/commands/index.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/commands/index.js create mode 100644 node_modules/@node-redis/client/dist/lib/errors.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/errors.js create mode 100644 node_modules/@node-redis/client/dist/lib/lua-script.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/lua-script.js create mode 100644 node_modules/@node-redis/client/dist/lib/multi-command.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/multi-command.js create mode 100644 node_modules/@node-redis/client/dist/lib/utils.d.ts create mode 100644 node_modules/@node-redis/client/dist/lib/utils.js create mode 100644 node_modules/@node-redis/client/package.json create mode 100644 node_modules/@node-redis/json/README.md create mode 100644 node_modules/@node-redis/json/dist/commands/ARRAPPEND.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRAPPEND.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRAPPEND.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRAPPEND.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRINDEX.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRINDEX.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRINDEX.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRINDEX.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRINSERT.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRINSERT.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRINSERT.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRINSERT.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRLEN.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRLEN.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRLEN.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRLEN.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRPOP.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRPOP.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRPOP.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRPOP.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRTRIM.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRTRIM.js create mode 100644 node_modules/@node-redis/json/dist/commands/ARRTRIM.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/ARRTRIM.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.js create mode 100644 node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/DEL.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/DEL.js create mode 100644 node_modules/@node-redis/json/dist/commands/DEL.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/DEL.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/FORGET.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/FORGET.js create mode 100644 node_modules/@node-redis/json/dist/commands/FORGET.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/FORGET.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/GET.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/GET.js create mode 100644 node_modules/@node-redis/json/dist/commands/GET.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/GET.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/MGET.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/MGET.js create mode 100644 node_modules/@node-redis/json/dist/commands/MGET.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/MGET.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/NUMINCRBY.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/NUMINCRBY.js create mode 100644 node_modules/@node-redis/json/dist/commands/NUMINCRBY.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/NUMINCRBY.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/NUMMULTBY.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/NUMMULTBY.js create mode 100644 node_modules/@node-redis/json/dist/commands/NUMMULTBY.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/NUMMULTBY.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/OBJKEYS.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/OBJKEYS.js create mode 100644 node_modules/@node-redis/json/dist/commands/OBJKEYS.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/OBJKEYS.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/OBJLEN.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/OBJLEN.js create mode 100644 node_modules/@node-redis/json/dist/commands/OBJLEN.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/OBJLEN.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/RESP.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/RESP.js create mode 100644 node_modules/@node-redis/json/dist/commands/RESP.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/RESP.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/SET.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/SET.js create mode 100644 node_modules/@node-redis/json/dist/commands/SET.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/SET.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/STRAPPEND.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/STRAPPEND.js create mode 100644 node_modules/@node-redis/json/dist/commands/STRAPPEND.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/STRAPPEND.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/STRLEN.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/STRLEN.js create mode 100644 node_modules/@node-redis/json/dist/commands/STRLEN.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/STRLEN.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/TYPE.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/TYPE.js create mode 100644 node_modules/@node-redis/json/dist/commands/TYPE.spec.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/TYPE.spec.js create mode 100644 node_modules/@node-redis/json/dist/commands/index.d.ts create mode 100644 node_modules/@node-redis/json/dist/commands/index.js create mode 100644 node_modules/@node-redis/json/dist/index.d.ts create mode 100644 node_modules/@node-redis/json/dist/index.js create mode 100644 node_modules/@node-redis/json/dist/test-utils.d.ts create mode 100644 node_modules/@node-redis/json/dist/test-utils.js create mode 100644 node_modules/@node-redis/json/package.json create mode 100644 node_modules/@node-redis/search/README.md create mode 100644 node_modules/@node-redis/search/dist/commands/AGGREGATE.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/AGGREGATE.js create mode 100644 node_modules/@node-redis/search/dist/commands/AGGREGATE.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/AGGREGATE.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASADD.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASADD.js create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASADD.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASADD.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASDEL.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASDEL.js create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASDEL.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASDEL.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASUPDATE.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASUPDATE.js create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASUPDATE.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/ALIASUPDATE.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/CONFIG_GET.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/CONFIG_GET.js create mode 100644 node_modules/@node-redis/search/dist/commands/CONFIG_GET.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/CONFIG_GET.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/CONFIG_SET.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/CONFIG_SET.js create mode 100644 node_modules/@node-redis/search/dist/commands/CONFIG_SET.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/CONFIG_SET.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/CREATE.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/CREATE.js create mode 100644 node_modules/@node-redis/search/dist/commands/CREATE.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/CREATE.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/DICTADD.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/DICTADD.js create mode 100644 node_modules/@node-redis/search/dist/commands/DICTADD.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/DICTADD.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/DICTDEL.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/DICTDEL.js create mode 100644 node_modules/@node-redis/search/dist/commands/DICTDEL.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/DICTDEL.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/DICTDUMP.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/DICTDUMP.js create mode 100644 node_modules/@node-redis/search/dist/commands/DICTDUMP.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/DICTDUMP.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/DROPINDEX.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/DROPINDEX.js create mode 100644 node_modules/@node-redis/search/dist/commands/DROPINDEX.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/DROPINDEX.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/EXPLAIN.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/EXPLAIN.js create mode 100644 node_modules/@node-redis/search/dist/commands/EXPLAIN.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/EXPLAIN.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/EXPLAINCLI.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/EXPLAINCLI.js create mode 100644 node_modules/@node-redis/search/dist/commands/EXPLAINCLI.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/EXPLAINCLI.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/INFO.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/INFO.js create mode 100644 node_modules/@node-redis/search/dist/commands/INFO.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/INFO.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/PROFILE.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/PROFILE.js create mode 100644 node_modules/@node-redis/search/dist/commands/SEARCH.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SEARCH.js create mode 100644 node_modules/@node-redis/search/dist/commands/SEARCH.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SEARCH.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SPELLCHECK.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SPELLCHECK.js create mode 100644 node_modules/@node-redis/search/dist/commands/SPELLCHECK.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SPELLCHECK.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGADD.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGADD.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGADD.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGADD.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGDEL.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGDEL.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGDEL.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGDEL.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGLEN.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGLEN.js create mode 100644 node_modules/@node-redis/search/dist/commands/SUGLEN.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SUGLEN.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SYNDUMP.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SYNDUMP.js create mode 100644 node_modules/@node-redis/search/dist/commands/SYNDUMP.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SYNDUMP.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/SYNUPDATE.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SYNUPDATE.js create mode 100644 node_modules/@node-redis/search/dist/commands/SYNUPDATE.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/SYNUPDATE.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/TAGVALS.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/TAGVALS.js create mode 100644 node_modules/@node-redis/search/dist/commands/TAGVALS.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/TAGVALS.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/_LIST.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/_LIST.js create mode 100644 node_modules/@node-redis/search/dist/commands/_LIST.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/_LIST.spec.js create mode 100644 node_modules/@node-redis/search/dist/commands/index.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/index.js create mode 100644 node_modules/@node-redis/search/dist/commands/index.spec.d.ts create mode 100644 node_modules/@node-redis/search/dist/commands/index.spec.js create mode 100644 node_modules/@node-redis/search/dist/index.d.ts create mode 100644 node_modules/@node-redis/search/dist/index.js create mode 100644 node_modules/@node-redis/search/dist/test-utils.d.ts create mode 100644 node_modules/@node-redis/search/dist/test-utils.js create mode 100644 node_modules/@node-redis/search/package.json create mode 100644 node_modules/ansi-styles/index.d.ts create mode 100644 node_modules/ansi-styles/index.js create mode 100644 node_modules/ansi-styles/license create mode 100644 node_modules/ansi-styles/package.json create mode 100644 node_modules/ansi-styles/readme.md create mode 100644 node_modules/at-least-node/LICENSE create mode 100644 node_modules/at-least-node/README.md create mode 100644 node_modules/at-least-node/index.js create mode 100644 node_modules/at-least-node/package.json create mode 100644 node_modules/balanced-match/.github/FUNDING.yml create mode 100644 node_modules/balanced-match/LICENSE.md create mode 100644 node_modules/balanced-match/README.md create mode 100644 node_modules/balanced-match/index.js create mode 100644 node_modules/balanced-match/package.json create mode 100644 node_modules/block-stream/LICENCE create mode 100644 node_modules/block-stream/LICENSE create mode 100644 node_modules/block-stream/README.md create mode 100644 node_modules/block-stream/block-stream.js create mode 100644 node_modules/block-stream/package.json create mode 100644 node_modules/brace-expansion/LICENSE create mode 100644 node_modules/brace-expansion/README.md create mode 100644 node_modules/brace-expansion/index.js create mode 100644 node_modules/brace-expansion/package.json create mode 100644 node_modules/buffer-from/index.js create mode 100644 node_modules/buffer-from/package.json create mode 100644 node_modules/buffer-from/readme.md create mode 100644 node_modules/buffer-from/test.js create mode 100644 node_modules/builtins/.travis.yml create mode 100644 node_modules/builtins/History.md create mode 100644 node_modules/builtins/License create mode 100644 node_modules/builtins/Readme.md create mode 100644 node_modules/builtins/builtins.json create mode 100644 node_modules/builtins/package.json create mode 100644 node_modules/builtins/test.js create mode 100644 node_modules/chalk/index.d.ts create mode 100644 node_modules/chalk/license create mode 100644 node_modules/chalk/package.json create mode 100644 node_modules/chalk/readme.md create mode 100644 node_modules/chalk/source/index.js create mode 100644 node_modules/chalk/source/templates.js create mode 100644 node_modules/chalk/source/util.js create mode 100644 node_modules/cluster-key-slot/.eslintrc create mode 100644 node_modules/cluster-key-slot/LICENSE create mode 100644 node_modules/cluster-key-slot/README.md create mode 100644 node_modules/cluster-key-slot/lib/index.js create mode 100644 node_modules/cluster-key-slot/package.json create mode 100644 node_modules/color-convert/CHANGELOG.md create mode 100644 node_modules/color-convert/LICENSE create mode 100644 node_modules/color-convert/README.md create mode 100644 node_modules/color-convert/conversions.js create mode 100644 node_modules/color-convert/index.js create mode 100644 node_modules/color-convert/package.json create mode 100644 node_modules/color-convert/route.js create mode 100644 node_modules/color-name/LICENSE create mode 100644 node_modules/color-name/README.md create mode 100644 node_modules/color-name/index.js create mode 100644 node_modules/color-name/package.json create mode 100644 node_modules/commander/CHANGELOG.md create mode 100644 node_modules/commander/LICENSE create mode 100644 node_modules/commander/Readme.md create mode 100644 node_modules/commander/index.js create mode 100644 node_modules/commander/package.json create mode 100644 node_modules/commander/typings/index.d.ts create mode 100644 node_modules/concat-map/.travis.yml create mode 100644 node_modules/concat-map/LICENSE create mode 100644 node_modules/concat-map/README.markdown create mode 100644 node_modules/concat-map/example/map.js create mode 100644 node_modules/concat-map/index.js create mode 100644 node_modules/concat-map/package.json create mode 100644 node_modules/concat-map/test/map.js create mode 100644 node_modules/core-util-is/LICENSE create mode 100644 node_modules/core-util-is/README.md create mode 100644 node_modules/core-util-is/lib/util.js create mode 100644 node_modules/core-util-is/package.json create mode 100644 node_modules/create-react-app/LICENSE create mode 100644 node_modules/create-react-app/README.md create mode 100644 node_modules/create-react-app/createReactApp.js create mode 100644 node_modules/create-react-app/index.js create mode 100644 node_modules/create-react-app/node_modules/.bin/envinfo create mode 100644 node_modules/create-react-app/node_modules/.bin/envinfo.cmd create mode 100644 node_modules/create-react-app/node_modules/.bin/semver create mode 100644 node_modules/create-react-app/node_modules/.bin/semver.cmd create mode 100644 node_modules/create-react-app/package.json create mode 100644 node_modules/create-react-app/yarn.lock.cached create mode 100644 node_modules/cross-spawn/CHANGELOG.md create mode 100644 node_modules/cross-spawn/LICENSE create mode 100644 node_modules/cross-spawn/README.md create mode 100644 node_modules/cross-spawn/index.js create mode 100644 node_modules/cross-spawn/lib/enoent.js create mode 100644 node_modules/cross-spawn/lib/parse.js create mode 100644 node_modules/cross-spawn/lib/util/escape.js create mode 100644 node_modules/cross-spawn/lib/util/readShebang.js create mode 100644 node_modules/cross-spawn/lib/util/resolveCommand.js create mode 100644 node_modules/cross-spawn/node_modules/.bin/node-which create mode 100644 node_modules/cross-spawn/node_modules/.bin/node-which.cmd create mode 100644 node_modules/cross-spawn/package.json create mode 100644 node_modules/debug/.coveralls.yml create mode 100644 node_modules/debug/.eslintrc create mode 100644 node_modules/debug/.npmignore create mode 100644 node_modules/debug/.travis.yml create mode 100644 node_modules/debug/CHANGELOG.md create mode 100644 node_modules/debug/LICENSE create mode 100644 node_modules/debug/Makefile create mode 100644 node_modules/debug/README.md create mode 100644 node_modules/debug/component.json create mode 100644 node_modules/debug/karma.conf.js create mode 100644 node_modules/debug/node.js create mode 100644 node_modules/debug/package.json create mode 100644 node_modules/debug/src/browser.js create mode 100644 node_modules/debug/src/debug.js create mode 100644 node_modules/debug/src/index.js create mode 100644 node_modules/debug/src/inspector-log.js create mode 100644 node_modules/debug/src/node.js create mode 100644 node_modules/duplexer2/.npmignore create mode 100644 node_modules/duplexer2/.travis.yml create mode 100644 node_modules/duplexer2/LICENSE.md create mode 100644 node_modules/duplexer2/README.md create mode 100644 node_modules/duplexer2/example.js create mode 100644 node_modules/duplexer2/index.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/.npmignore create mode 100644 node_modules/duplexer2/node_modules/readable-stream/LICENSE create mode 100644 node_modules/duplexer2/node_modules/readable-stream/README.md create mode 100644 node_modules/duplexer2/node_modules/readable-stream/duplex.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/float.patch create mode 100644 node_modules/duplexer2/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/package.json create mode 100644 node_modules/duplexer2/node_modules/readable-stream/passthrough.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/readable.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/transform.js create mode 100644 node_modules/duplexer2/node_modules/readable-stream/writable.js create mode 100644 node_modules/duplexer2/package.json create mode 100644 node_modules/duplexer2/test/tests.js create mode 100644 node_modules/envinfo/LICENSE create mode 100644 node_modules/envinfo/README.md create mode 100644 node_modules/envinfo/dist/cli.js create mode 100644 node_modules/envinfo/dist/envinfo.js create mode 100644 node_modules/envinfo/package.json create mode 100644 node_modules/fs-extra/CHANGELOG.md create mode 100644 node_modules/fs-extra/LICENSE create mode 100644 node_modules/fs-extra/README.md create mode 100644 node_modules/fs-extra/lib/copy-sync/copy-sync.js create mode 100644 node_modules/fs-extra/lib/copy-sync/index.js create mode 100644 node_modules/fs-extra/lib/copy/copy.js create mode 100644 node_modules/fs-extra/lib/copy/index.js create mode 100644 node_modules/fs-extra/lib/empty/index.js create mode 100644 node_modules/fs-extra/lib/ensure/file.js create mode 100644 node_modules/fs-extra/lib/ensure/index.js create mode 100644 node_modules/fs-extra/lib/ensure/link.js create mode 100644 node_modules/fs-extra/lib/ensure/symlink-paths.js create mode 100644 node_modules/fs-extra/lib/ensure/symlink-type.js create mode 100644 node_modules/fs-extra/lib/ensure/symlink.js create mode 100644 node_modules/fs-extra/lib/fs/index.js create mode 100644 node_modules/fs-extra/lib/index.js create mode 100644 node_modules/fs-extra/lib/json/index.js create mode 100644 node_modules/fs-extra/lib/json/jsonfile.js create mode 100644 node_modules/fs-extra/lib/json/output-json-sync.js create mode 100644 node_modules/fs-extra/lib/json/output-json.js create mode 100644 node_modules/fs-extra/lib/mkdirs/index.js create mode 100644 node_modules/fs-extra/lib/mkdirs/make-dir.js create mode 100644 node_modules/fs-extra/lib/move-sync/index.js create mode 100644 node_modules/fs-extra/lib/move-sync/move-sync.js create mode 100644 node_modules/fs-extra/lib/move/index.js create mode 100644 node_modules/fs-extra/lib/move/move.js create mode 100644 node_modules/fs-extra/lib/output/index.js create mode 100644 node_modules/fs-extra/lib/path-exists/index.js create mode 100644 node_modules/fs-extra/lib/remove/index.js create mode 100644 node_modules/fs-extra/lib/remove/rimraf.js create mode 100644 node_modules/fs-extra/lib/util/stat.js create mode 100644 node_modules/fs-extra/lib/util/utimes.js create mode 100644 node_modules/fs-extra/package.json create mode 100644 node_modules/fs.realpath/LICENSE create mode 100644 node_modules/fs.realpath/README.md create mode 100644 node_modules/fs.realpath/index.js create mode 100644 node_modules/fs.realpath/old.js create mode 100644 node_modules/fs.realpath/package.json create mode 100644 node_modules/fstream-ignore/LICENSE create mode 100644 node_modules/fstream-ignore/README.md create mode 100644 node_modules/fstream-ignore/ignore.js create mode 100644 node_modules/fstream-ignore/package.json create mode 100644 node_modules/fstream/.travis.yml create mode 100644 node_modules/fstream/LICENSE create mode 100644 node_modules/fstream/README.md create mode 100644 node_modules/fstream/examples/filter-pipe.js create mode 100644 node_modules/fstream/examples/pipe.js create mode 100644 node_modules/fstream/examples/reader.js create mode 100644 node_modules/fstream/examples/symlink-write.js create mode 100644 node_modules/fstream/fstream.js create mode 100644 node_modules/fstream/lib/abstract.js create mode 100644 node_modules/fstream/lib/collect.js create mode 100644 node_modules/fstream/lib/dir-reader.js create mode 100644 node_modules/fstream/lib/dir-writer.js create mode 100644 node_modules/fstream/lib/file-reader.js create mode 100644 node_modules/fstream/lib/file-writer.js create mode 100644 node_modules/fstream/lib/get-type.js create mode 100644 node_modules/fstream/lib/link-reader.js create mode 100644 node_modules/fstream/lib/link-writer.js create mode 100644 node_modules/fstream/lib/proxy-reader.js create mode 100644 node_modules/fstream/lib/proxy-writer.js create mode 100644 node_modules/fstream/lib/reader.js create mode 100644 node_modules/fstream/lib/socket-reader.js create mode 100644 node_modules/fstream/lib/writer.js create mode 100644 node_modules/fstream/node_modules/.bin/mkdirp create mode 100644 node_modules/fstream/node_modules/.bin/mkdirp.cmd create mode 100644 node_modules/fstream/node_modules/.bin/rimraf create mode 100644 node_modules/fstream/node_modules/.bin/rimraf.cmd create mode 100644 node_modules/fstream/package.json create mode 100644 node_modules/generic-pool/README.md create mode 100644 node_modules/generic-pool/index.d.ts create mode 100644 node_modules/generic-pool/index.js create mode 100644 node_modules/generic-pool/lib/DefaultEvictor.js create mode 100644 node_modules/generic-pool/lib/Deferred.js create mode 100644 node_modules/generic-pool/lib/Deque.js create mode 100644 node_modules/generic-pool/lib/DequeIterator.js create mode 100644 node_modules/generic-pool/lib/DoublyLinkedList.js create mode 100644 node_modules/generic-pool/lib/DoublyLinkedListIterator.js create mode 100644 node_modules/generic-pool/lib/Pool.js create mode 100644 node_modules/generic-pool/lib/PoolDefaults.js create mode 100644 node_modules/generic-pool/lib/PoolOptions.js create mode 100644 node_modules/generic-pool/lib/PooledResource.js create mode 100644 node_modules/generic-pool/lib/PooledResourceStateEnum.js create mode 100644 node_modules/generic-pool/lib/PriorityQueue.js create mode 100644 node_modules/generic-pool/lib/Queue.js create mode 100644 node_modules/generic-pool/lib/ResourceLoan.js create mode 100644 node_modules/generic-pool/lib/ResourceRequest.js create mode 100644 node_modules/generic-pool/lib/errors.js create mode 100644 node_modules/generic-pool/lib/factoryValidator.js create mode 100644 node_modules/generic-pool/lib/utils.js create mode 100644 node_modules/generic-pool/package.json create mode 100644 node_modules/glob/LICENSE create mode 100644 node_modules/glob/README.md create mode 100644 node_modules/glob/common.js create mode 100644 node_modules/glob/glob.js create mode 100644 node_modules/glob/package.json create mode 100644 node_modules/glob/sync.js create mode 100644 node_modules/graceful-fs/LICENSE create mode 100644 node_modules/graceful-fs/README.md create mode 100644 node_modules/graceful-fs/clone.js create mode 100644 node_modules/graceful-fs/graceful-fs.js create mode 100644 node_modules/graceful-fs/legacy-streams.js create mode 100644 node_modules/graceful-fs/package.json create mode 100644 node_modules/graceful-fs/polyfills.js create mode 100644 node_modules/has-flag/index.d.ts create mode 100644 node_modules/has-flag/index.js create mode 100644 node_modules/has-flag/license create mode 100644 node_modules/has-flag/package.json create mode 100644 node_modules/has-flag/readme.md create mode 100644 node_modules/hyperquest/.travis.yml create mode 100644 node_modules/hyperquest/LICENSE create mode 100644 node_modules/hyperquest/example/many_hyperquest.js create mode 100644 node_modules/hyperquest/example/many_request.js create mode 100644 node_modules/hyperquest/example/req.js create mode 100644 node_modules/hyperquest/index.js create mode 100644 node_modules/hyperquest/package.json create mode 100644 node_modules/hyperquest/readme.markdown create mode 100644 node_modules/hyperquest/test/auth.js create mode 100644 node_modules/hyperquest/test/auth_encoded.js create mode 100644 node_modules/hyperquest/test/auth_opt.js create mode 100644 node_modules/hyperquest/test/get.js create mode 100644 node_modules/hyperquest/test/many.js create mode 100644 node_modules/hyperquest/test/opts.js create mode 100644 node_modules/hyperquest/test/post.js create mode 100644 node_modules/hyperquest/test/post_immediate.js create mode 100644 node_modules/hyperquest/test/readable.js create mode 100644 node_modules/hyperquest/test/set_header.js create mode 100644 node_modules/inflight/LICENSE create mode 100644 node_modules/inflight/README.md create mode 100644 node_modules/inflight/inflight.js create mode 100644 node_modules/inflight/package.json create mode 100644 node_modules/inherits/LICENSE create mode 100644 node_modules/inherits/README.md create mode 100644 node_modules/inherits/inherits.js create mode 100644 node_modules/inherits/inherits_browser.js create mode 100644 node_modules/inherits/package.json create mode 100644 node_modules/isarray/README.md create mode 100644 node_modules/isarray/build/build.js create mode 100644 node_modules/isarray/component.json create mode 100644 node_modules/isarray/index.js create mode 100644 node_modules/isarray/package.json create mode 100644 node_modules/isexe/.npmignore create mode 100644 node_modules/isexe/LICENSE create mode 100644 node_modules/isexe/README.md create mode 100644 node_modules/isexe/index.js create mode 100644 node_modules/isexe/mode.js create mode 100644 node_modules/isexe/package.json create mode 100644 node_modules/isexe/test/basic.js create mode 100644 node_modules/isexe/windows.js create mode 100644 node_modules/jsonfile/CHANGELOG.md create mode 100644 node_modules/jsonfile/LICENSE create mode 100644 node_modules/jsonfile/README.md create mode 100644 node_modules/jsonfile/index.js create mode 100644 node_modules/jsonfile/node_modules/universalify/LICENSE create mode 100644 node_modules/jsonfile/node_modules/universalify/README.md create mode 100644 node_modules/jsonfile/node_modules/universalify/index.js create mode 100644 node_modules/jsonfile/node_modules/universalify/package.json create mode 100644 node_modules/jsonfile/package.json create mode 100644 node_modules/jsonfile/utils.js create mode 100644 node_modules/kleur/index.js create mode 100644 node_modules/kleur/kleur.d.ts create mode 100644 node_modules/kleur/license create mode 100644 node_modules/kleur/package.json create mode 100644 node_modules/kleur/readme.md create mode 100644 node_modules/minimatch/LICENSE create mode 100644 node_modules/minimatch/README.md create mode 100644 node_modules/minimatch/minimatch.js create mode 100644 node_modules/minimatch/package.json create mode 100644 node_modules/minimist/.travis.yml create mode 100644 node_modules/minimist/LICENSE create mode 100644 node_modules/minimist/example/parse.js create mode 100644 node_modules/minimist/index.js create mode 100644 node_modules/minimist/package.json create mode 100644 node_modules/minimist/readme.markdown create mode 100644 node_modules/minimist/test/all_bool.js create mode 100644 node_modules/minimist/test/bool.js create mode 100644 node_modules/minimist/test/dash.js create mode 100644 node_modules/minimist/test/default_bool.js create mode 100644 node_modules/minimist/test/dotted.js create mode 100644 node_modules/minimist/test/kv_short.js create mode 100644 node_modules/minimist/test/long.js create mode 100644 node_modules/minimist/test/num.js create mode 100644 node_modules/minimist/test/parse.js create mode 100644 node_modules/minimist/test/parse_modified.js create mode 100644 node_modules/minimist/test/proto.js create mode 100644 node_modules/minimist/test/short.js create mode 100644 node_modules/minimist/test/stop_early.js create mode 100644 node_modules/minimist/test/unknown.js create mode 100644 node_modules/minimist/test/whitespace.js create mode 100644 node_modules/mkdirp/LICENSE create mode 100644 node_modules/mkdirp/bin/cmd.js create mode 100644 node_modules/mkdirp/bin/usage.txt create mode 100644 node_modules/mkdirp/index.js create mode 100644 node_modules/mkdirp/package.json create mode 100644 node_modules/mkdirp/readme.markdown create mode 100644 node_modules/ms/index.js create mode 100644 node_modules/ms/license.md create mode 100644 node_modules/ms/package.json create mode 100644 node_modules/ms/readme.md create mode 100644 node_modules/once/LICENSE create mode 100644 node_modules/once/README.md create mode 100644 node_modules/once/once.js create mode 100644 node_modules/once/package.json create mode 100644 node_modules/path-is-absolute/index.js create mode 100644 node_modules/path-is-absolute/license create mode 100644 node_modules/path-is-absolute/package.json create mode 100644 node_modules/path-is-absolute/readme.md create mode 100644 node_modules/path-key/index.d.ts create mode 100644 node_modules/path-key/index.js create mode 100644 node_modules/path-key/license create mode 100644 node_modules/path-key/package.json create mode 100644 node_modules/path-key/readme.md create mode 100644 node_modules/process-nextick-args/index.js create mode 100644 node_modules/process-nextick-args/license.md create mode 100644 node_modules/process-nextick-args/package.json create mode 100644 node_modules/process-nextick-args/readme.md create mode 100644 node_modules/prompts/dist/dateparts/datepart.js create mode 100644 node_modules/prompts/dist/dateparts/day.js create mode 100644 node_modules/prompts/dist/dateparts/hours.js create mode 100644 node_modules/prompts/dist/dateparts/index.js create mode 100644 node_modules/prompts/dist/dateparts/meridiem.js create mode 100644 node_modules/prompts/dist/dateparts/milliseconds.js create mode 100644 node_modules/prompts/dist/dateparts/minutes.js create mode 100644 node_modules/prompts/dist/dateparts/month.js create mode 100644 node_modules/prompts/dist/dateparts/seconds.js create mode 100644 node_modules/prompts/dist/dateparts/year.js create mode 100644 node_modules/prompts/dist/elements/autocomplete.js create mode 100644 node_modules/prompts/dist/elements/autocompleteMultiselect.js create mode 100644 node_modules/prompts/dist/elements/confirm.js create mode 100644 node_modules/prompts/dist/elements/date.js create mode 100644 node_modules/prompts/dist/elements/index.js create mode 100644 node_modules/prompts/dist/elements/multiselect.js create mode 100644 node_modules/prompts/dist/elements/number.js create mode 100644 node_modules/prompts/dist/elements/prompt.js create mode 100644 node_modules/prompts/dist/elements/select.js create mode 100644 node_modules/prompts/dist/elements/text.js create mode 100644 node_modules/prompts/dist/elements/toggle.js create mode 100644 node_modules/prompts/dist/index.js create mode 100644 node_modules/prompts/dist/prompts.js create mode 100644 node_modules/prompts/dist/util/action.js create mode 100644 node_modules/prompts/dist/util/clear.js create mode 100644 node_modules/prompts/dist/util/entriesToDisplay.js create mode 100644 node_modules/prompts/dist/util/figures.js create mode 100644 node_modules/prompts/dist/util/index.js create mode 100644 node_modules/prompts/dist/util/lines.js create mode 100644 node_modules/prompts/dist/util/strip.js create mode 100644 node_modules/prompts/dist/util/style.js create mode 100644 node_modules/prompts/dist/util/wrap.js create mode 100644 node_modules/prompts/index.js create mode 100644 node_modules/prompts/lib/dateparts/datepart.js create mode 100644 node_modules/prompts/lib/dateparts/day.js create mode 100644 node_modules/prompts/lib/dateparts/hours.js create mode 100644 node_modules/prompts/lib/dateparts/index.js create mode 100644 node_modules/prompts/lib/dateparts/meridiem.js create mode 100644 node_modules/prompts/lib/dateparts/milliseconds.js create mode 100644 node_modules/prompts/lib/dateparts/minutes.js create mode 100644 node_modules/prompts/lib/dateparts/month.js create mode 100644 node_modules/prompts/lib/dateparts/seconds.js create mode 100644 node_modules/prompts/lib/dateparts/year.js create mode 100644 node_modules/prompts/lib/elements/autocomplete.js create mode 100644 node_modules/prompts/lib/elements/autocompleteMultiselect.js create mode 100644 node_modules/prompts/lib/elements/confirm.js create mode 100644 node_modules/prompts/lib/elements/date.js create mode 100644 node_modules/prompts/lib/elements/index.js create mode 100644 node_modules/prompts/lib/elements/multiselect.js create mode 100644 node_modules/prompts/lib/elements/number.js create mode 100644 node_modules/prompts/lib/elements/prompt.js create mode 100644 node_modules/prompts/lib/elements/select.js create mode 100644 node_modules/prompts/lib/elements/text.js create mode 100644 node_modules/prompts/lib/elements/toggle.js create mode 100644 node_modules/prompts/lib/index.js create mode 100644 node_modules/prompts/lib/prompts.js create mode 100644 node_modules/prompts/lib/util/action.js create mode 100644 node_modules/prompts/lib/util/clear.js create mode 100644 node_modules/prompts/lib/util/entriesToDisplay.js create mode 100644 node_modules/prompts/lib/util/figures.js create mode 100644 node_modules/prompts/lib/util/index.js create mode 100644 node_modules/prompts/lib/util/lines.js create mode 100644 node_modules/prompts/lib/util/strip.js create mode 100644 node_modules/prompts/lib/util/style.js create mode 100644 node_modules/prompts/lib/util/wrap.js create mode 100644 node_modules/prompts/license create mode 100644 node_modules/prompts/package.json create mode 100644 node_modules/prompts/readme.md create mode 100644 node_modules/readable-stream/.travis.yml create mode 100644 node_modules/readable-stream/CONTRIBUTING.md create mode 100644 node_modules/readable-stream/GOVERNANCE.md create mode 100644 node_modules/readable-stream/LICENSE create mode 100644 node_modules/readable-stream/README.md create mode 100644 node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 node_modules/readable-stream/duplex-browser.js create mode 100644 node_modules/readable-stream/duplex.js create mode 100644 node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 node_modules/readable-stream/lib/_stream_readable.js create mode 100644 node_modules/readable-stream/lib/_stream_transform.js create mode 100644 node_modules/readable-stream/lib/_stream_writable.js create mode 100644 node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 node_modules/readable-stream/lib/internal/streams/destroy.js create mode 100644 node_modules/readable-stream/lib/internal/streams/stream-browser.js create mode 100644 node_modules/readable-stream/lib/internal/streams/stream.js create mode 100644 node_modules/readable-stream/node_modules/isarray/.npmignore create mode 100644 node_modules/readable-stream/node_modules/isarray/.travis.yml create mode 100644 node_modules/readable-stream/node_modules/isarray/Makefile create mode 100644 node_modules/readable-stream/node_modules/isarray/README.md create mode 100644 node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 node_modules/readable-stream/node_modules/isarray/test.js create mode 100644 node_modules/readable-stream/node_modules/string_decoder/.travis.yml create mode 100644 node_modules/readable-stream/node_modules/string_decoder/LICENSE create mode 100644 node_modules/readable-stream/node_modules/string_decoder/README.md create mode 100644 node_modules/readable-stream/node_modules/string_decoder/lib/string_decoder.js create mode 100644 node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 node_modules/readable-stream/package.json create mode 100644 node_modules/readable-stream/passthrough.js create mode 100644 node_modules/readable-stream/readable-browser.js create mode 100644 node_modules/readable-stream/readable.js create mode 100644 node_modules/readable-stream/transform.js create mode 100644 node_modules/readable-stream/writable-browser.js create mode 100644 node_modules/readable-stream/writable.js create mode 100644 node_modules/redis-errors/.npmignore create mode 100644 node_modules/redis-errors/LICENSE create mode 100644 node_modules/redis-errors/README.md create mode 100644 node_modules/redis-errors/index.js create mode 100644 node_modules/redis-errors/lib/modern.js create mode 100644 node_modules/redis-errors/lib/old.js create mode 100644 node_modules/redis-errors/package.json create mode 100644 node_modules/redis-parser/.npmignore create mode 100644 node_modules/redis-parser/LICENSE create mode 100644 node_modules/redis-parser/README.md create mode 100644 node_modules/redis-parser/changelog.md create mode 100644 node_modules/redis-parser/index.js create mode 100644 node_modules/redis-parser/lib/parser.js create mode 100644 node_modules/redis-parser/package.json create mode 100644 node_modules/redis-url/.npmignore create mode 100644 node_modules/redis-url/README.md create mode 100644 node_modules/redis-url/index.js create mode 100644 node_modules/redis-url/package.json create mode 100644 node_modules/redis-url/test.js create mode 100644 node_modules/redis/.idea/modules.xml create mode 100644 node_modules/redis/.idea/node-redis.iml create mode 100644 node_modules/redis/.idea/vcs.xml create mode 100644 node_modules/redis/LICENSE create mode 100644 node_modules/redis/README.md create mode 100644 node_modules/redis/dist/index.d.ts create mode 100644 node_modules/redis/dist/index.js create mode 100644 node_modules/redis/dump.rdb create mode 100644 node_modules/redis/package.json create mode 100644 node_modules/redis/scripts/cluster-stress-test.js create mode 100644 node_modules/redis/scripts/error.log create mode 100644 node_modules/redis/scripts/node_modules/.package-lock.json create mode 100644 node_modules/redis/scripts/package-lock.json create mode 100644 node_modules/redis/scripts/package.json create mode 100644 node_modules/rimraf/LICENSE create mode 100644 node_modules/rimraf/README.md create mode 100644 node_modules/rimraf/bin.js create mode 100644 node_modules/rimraf/package.json create mode 100644 node_modules/rimraf/rimraf.js create mode 100644 node_modules/safe-buffer/LICENSE create mode 100644 node_modules/safe-buffer/README.md create mode 100644 node_modules/safe-buffer/index.d.ts create mode 100644 node_modules/safe-buffer/index.js create mode 100644 node_modules/safe-buffer/package.json create mode 100644 node_modules/semver/CHANGELOG.md create mode 100644 node_modules/semver/LICENSE create mode 100644 node_modules/semver/README.md create mode 100644 node_modules/semver/bin/semver.js create mode 100644 node_modules/semver/classes/comparator.js create mode 100644 node_modules/semver/classes/index.js create mode 100644 node_modules/semver/classes/range.js create mode 100644 node_modules/semver/classes/semver.js create mode 100644 node_modules/semver/functions/clean.js create mode 100644 node_modules/semver/functions/cmp.js create mode 100644 node_modules/semver/functions/coerce.js create mode 100644 node_modules/semver/functions/compare-build.js create mode 100644 node_modules/semver/functions/compare-loose.js create mode 100644 node_modules/semver/functions/compare.js create mode 100644 node_modules/semver/functions/diff.js create mode 100644 node_modules/semver/functions/eq.js create mode 100644 node_modules/semver/functions/gt.js create mode 100644 node_modules/semver/functions/gte.js create mode 100644 node_modules/semver/functions/inc.js create mode 100644 node_modules/semver/functions/lt.js create mode 100644 node_modules/semver/functions/lte.js create mode 100644 node_modules/semver/functions/major.js create mode 100644 node_modules/semver/functions/minor.js create mode 100644 node_modules/semver/functions/neq.js create mode 100644 node_modules/semver/functions/parse.js create mode 100644 node_modules/semver/functions/patch.js create mode 100644 node_modules/semver/functions/prerelease.js create mode 100644 node_modules/semver/functions/rcompare.js create mode 100644 node_modules/semver/functions/rsort.js create mode 100644 node_modules/semver/functions/satisfies.js create mode 100644 node_modules/semver/functions/sort.js create mode 100644 node_modules/semver/functions/valid.js create mode 100644 node_modules/semver/index.js create mode 100644 node_modules/semver/internal/constants.js create mode 100644 node_modules/semver/internal/debug.js create mode 100644 node_modules/semver/internal/identifiers.js create mode 100644 node_modules/semver/internal/re.js create mode 100644 node_modules/semver/package.json create mode 100644 node_modules/semver/preload.js create mode 100644 node_modules/semver/range.bnf create mode 100644 node_modules/semver/ranges/gtr.js create mode 100644 node_modules/semver/ranges/intersects.js create mode 100644 node_modules/semver/ranges/ltr.js create mode 100644 node_modules/semver/ranges/max-satisfying.js create mode 100644 node_modules/semver/ranges/min-satisfying.js create mode 100644 node_modules/semver/ranges/min-version.js create mode 100644 node_modules/semver/ranges/outside.js create mode 100644 node_modules/semver/ranges/simplify.js create mode 100644 node_modules/semver/ranges/subset.js create mode 100644 node_modules/semver/ranges/to-comparators.js create mode 100644 node_modules/semver/ranges/valid.js create mode 100644 node_modules/shebang-command/index.js create mode 100644 node_modules/shebang-command/license create mode 100644 node_modules/shebang-command/package.json create mode 100644 node_modules/shebang-command/readme.md create mode 100644 node_modules/shebang-regex/index.d.ts create mode 100644 node_modules/shebang-regex/index.js create mode 100644 node_modules/shebang-regex/license create mode 100644 node_modules/shebang-regex/package.json create mode 100644 node_modules/shebang-regex/readme.md create mode 100644 node_modules/sisteransi/license create mode 100644 node_modules/sisteransi/package.json create mode 100644 node_modules/sisteransi/readme.md create mode 100644 node_modules/sisteransi/src/index.js create mode 100644 node_modules/sisteransi/src/sisteransi.d.ts create mode 100644 node_modules/src/.npmignore create mode 100644 node_modules/src/.travis.yml create mode 100644 node_modules/src/README.md create mode 100644 node_modules/src/index.js create mode 100644 node_modules/src/package.json create mode 100644 node_modules/src/test/src-test.js create mode 100644 node_modules/string_decoder/.npmignore create mode 100644 node_modules/string_decoder/LICENSE create mode 100644 node_modules/string_decoder/README.md create mode 100644 node_modules/string_decoder/index.js create mode 100644 node_modules/string_decoder/package.json create mode 100644 node_modules/supports-color/browser.js create mode 100644 node_modules/supports-color/index.js create mode 100644 node_modules/supports-color/license create mode 100644 node_modules/supports-color/package.json create mode 100644 node_modules/supports-color/readme.md create mode 100644 node_modules/tar-pack/.travis.yml create mode 100644 node_modules/tar-pack/LICENSE create mode 100644 node_modules/tar-pack/README.md create mode 100644 node_modules/tar-pack/index.js create mode 100644 node_modules/tar-pack/node_modules/.bin/rimraf create mode 100644 node_modules/tar-pack/node_modules/.bin/rimraf.cmd create mode 100644 node_modules/tar-pack/package.json create mode 100644 node_modules/tar-pack/test/fixtures/packed-file.txt create mode 100644 node_modules/tar-pack/test/fixtures/packed.tar create mode 100644 node_modules/tar-pack/test/fixtures/packed.tar.gz create mode 100644 node_modules/tar-pack/test/fixtures/to-pack/bar.txt create mode 100644 node_modules/tar-pack/test/fixtures/to-pack/foo.txt create mode 100644 node_modules/tar-pack/test/index.js create mode 100644 node_modules/tar/.nyc_output/0471d9cf-687f-4ae8-84a5-ce7468becd03.json create mode 100644 node_modules/tar/.nyc_output/12bca2bc-6a2b-4f45-abc7-8483922a524d.json create mode 100644 node_modules/tar/.nyc_output/37d58de4-deea-4808-bb77-d27685bd1501.json create mode 100644 node_modules/tar/.nyc_output/5ad8066b-6b8c-4bc8-b807-c40bf80898b7.json create mode 100644 node_modules/tar/.nyc_output/5cbf674c-7089-4b7d-b9de-2119be4dbb0b.json create mode 100644 node_modules/tar/.nyc_output/7853e29b-78ef-4ab4-b8fb-e1e176c0787b.json create mode 100644 node_modules/tar/.nyc_output/9d414044-b18d-4f6d-b2e0-531a89bf6f4f.json create mode 100644 node_modules/tar/.nyc_output/c3ffeb8c-8e79-4a2c-b678-e5a917fe721e.json create mode 100644 node_modules/tar/.nyc_output/ea0194cb-f599-402f-8876-84fb8251e8db.json create mode 100644 node_modules/tar/.nyc_output/eda6b7a3-5e15-440f-8619-e11a15a07f77.json create mode 100644 node_modules/tar/.nyc_output/fb518800-240c-42ff-811f-79e92708d9db.json create mode 100644 node_modules/tar/.nyc_output/fdecfc06-a944-4897-9530-e08f62883fc1.json create mode 100644 node_modules/tar/.nyc_output/processinfo/0471d9cf-687f-4ae8-84a5-ce7468becd03.json create mode 100644 node_modules/tar/.nyc_output/processinfo/12bca2bc-6a2b-4f45-abc7-8483922a524d.json create mode 100644 node_modules/tar/.nyc_output/processinfo/37d58de4-deea-4808-bb77-d27685bd1501.json create mode 100644 node_modules/tar/.nyc_output/processinfo/5ad8066b-6b8c-4bc8-b807-c40bf80898b7.json create mode 100644 node_modules/tar/.nyc_output/processinfo/5cbf674c-7089-4b7d-b9de-2119be4dbb0b.json create mode 100644 node_modules/tar/.nyc_output/processinfo/7853e29b-78ef-4ab4-b8fb-e1e176c0787b.json create mode 100644 node_modules/tar/.nyc_output/processinfo/9d414044-b18d-4f6d-b2e0-531a89bf6f4f.json create mode 100644 node_modules/tar/.nyc_output/processinfo/c3ffeb8c-8e79-4a2c-b678-e5a917fe721e.json create mode 100644 node_modules/tar/.nyc_output/processinfo/ea0194cb-f599-402f-8876-84fb8251e8db.json create mode 100644 node_modules/tar/.nyc_output/processinfo/eda6b7a3-5e15-440f-8619-e11a15a07f77.json create mode 100644 node_modules/tar/.nyc_output/processinfo/fb518800-240c-42ff-811f-79e92708d9db.json create mode 100644 node_modules/tar/.nyc_output/processinfo/fdecfc06-a944-4897-9530-e08f62883fc1.json create mode 100644 node_modules/tar/.nyc_output/processinfo/index.json create mode 100644 node_modules/tar/.travis.yml create mode 100644 node_modules/tar/LICENSE create mode 100644 node_modules/tar/README.md create mode 100644 node_modules/tar/coverage/lcov-report/base.css create mode 100644 node_modules/tar/coverage/lcov-report/index.html create mode 100644 node_modules/tar/coverage/lcov-report/prettify.css create mode 100644 node_modules/tar/coverage/lcov-report/prettify.js create mode 100644 node_modules/tar/coverage/lcov-report/sort-arrow-sprite.png create mode 100644 node_modules/tar/coverage/lcov-report/sorter.js create mode 100644 node_modules/tar/coverage/lcov-report/tar/index.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/index.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/create.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/extract.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/header.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/high-level-opt.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/index.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/large-numbers.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/list.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/mkdir.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/pack.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/parse.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/pax.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/read-entry.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/replace.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/types.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/unpack.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/update.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/warn-mixin.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/winchars.js.html create mode 100644 node_modules/tar/coverage/lcov-report/tar/lib/write-entry.js.html create mode 100644 node_modules/tar/coverage/lcov.info create mode 100644 node_modules/tar/examples/extracter.js create mode 100644 node_modules/tar/examples/packer.js create mode 100644 node_modules/tar/examples/reader.js create mode 100644 node_modules/tar/lib/buffer-entry.js create mode 100644 node_modules/tar/lib/entry-writer.js create mode 100644 node_modules/tar/lib/entry.js create mode 100644 node_modules/tar/lib/extended-header-writer.js create mode 100644 node_modules/tar/lib/extended-header.js create mode 100644 node_modules/tar/lib/extract.js create mode 100644 node_modules/tar/lib/global-header-writer.js create mode 100644 node_modules/tar/lib/header.js create mode 100644 node_modules/tar/lib/pack.js create mode 100644 node_modules/tar/lib/parse.js create mode 100644 node_modules/tar/package.json create mode 100644 node_modules/tar/tar.js create mode 100644 node_modules/tar/test/00-setup-fixtures.js create mode 100644 node_modules/tar/test/cb-never-called-1.0.1.tgz create mode 100644 node_modules/tar/test/dir-normalization.js create mode 100644 node_modules/tar/test/dir-normalization.tar create mode 100644 node_modules/tar/test/error-on-broken.js create mode 100644 node_modules/tar/test/extract-move.js create mode 100644 node_modules/tar/test/extract.js create mode 100644 node_modules/tar/test/fixtures.tgz create mode 100644 node_modules/tar/test/header.js create mode 100644 node_modules/tar/test/link-file-entry-collision.js create mode 100644 node_modules/tar/test/link-file-entry-collision/bad-link.hex create mode 100644 node_modules/tar/test/link-file-entry-collision/bad-link.tar create mode 100644 node_modules/tar/test/pack-no-proprietary.js create mode 100644 node_modules/tar/test/pack.js create mode 100644 node_modules/tar/test/parse-discard.js create mode 100644 node_modules/tar/test/parse.js create mode 100644 node_modules/tar/test/zz-cleanup.js create mode 100644 node_modules/through2/.npmignore create mode 100644 node_modules/through2/LICENSE create mode 100644 node_modules/through2/README.md create mode 100644 node_modules/through2/node_modules/readable-stream/.npmignore create mode 100644 node_modules/through2/node_modules/readable-stream/LICENSE create mode 100644 node_modules/through2/node_modules/readable-stream/README.md create mode 100644 node_modules/through2/node_modules/readable-stream/duplex.js create mode 100644 node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 node_modules/through2/node_modules/readable-stream/package.json create mode 100644 node_modules/through2/node_modules/readable-stream/passthrough.js create mode 100644 node_modules/through2/node_modules/readable-stream/readable.js create mode 100644 node_modules/through2/node_modules/readable-stream/transform.js create mode 100644 node_modules/through2/node_modules/readable-stream/writable.js create mode 100644 node_modules/through2/package.json create mode 100644 node_modules/through2/through2.js create mode 100644 node_modules/tmp/CHANGELOG.md create mode 100644 node_modules/tmp/LICENSE create mode 100644 node_modules/tmp/README.md create mode 100644 node_modules/tmp/lib/tmp.js create mode 100644 node_modules/tmp/node_modules/.bin/rimraf create mode 100644 node_modules/tmp/node_modules/.bin/rimraf.cmd create mode 100644 node_modules/tmp/node_modules/rimraf/CHANGELOG.md create mode 100644 node_modules/tmp/node_modules/rimraf/LICENSE create mode 100644 node_modules/tmp/node_modules/rimraf/README.md create mode 100644 node_modules/tmp/node_modules/rimraf/bin.js create mode 100644 node_modules/tmp/node_modules/rimraf/package.json create mode 100644 node_modules/tmp/node_modules/rimraf/rimraf.js create mode 100644 node_modules/tmp/package.json create mode 100644 node_modules/uid-number/LICENSE create mode 100644 node_modules/uid-number/README.md create mode 100644 node_modules/uid-number/get-uid-gid.js create mode 100644 node_modules/uid-number/package.json create mode 100644 node_modules/uid-number/uid-number.js create mode 100644 node_modules/underscore/LICENSE create mode 100644 node_modules/underscore/README.md create mode 100644 node_modules/underscore/package.json create mode 100644 node_modules/underscore/underscore-min.js create mode 100644 node_modules/underscore/underscore.js create mode 100644 node_modules/universalify/LICENSE create mode 100644 node_modules/universalify/README.md create mode 100644 node_modules/universalify/index.js create mode 100644 node_modules/universalify/package.json create mode 100644 node_modules/util-deprecate/History.md create mode 100644 node_modules/util-deprecate/LICENSE create mode 100644 node_modules/util-deprecate/README.md create mode 100644 node_modules/util-deprecate/browser.js create mode 100644 node_modules/util-deprecate/node.js create mode 100644 node_modules/util-deprecate/package.json create mode 100644 node_modules/uuid/.npmignore create mode 100644 node_modules/uuid/.travis.yml create mode 100644 node_modules/uuid/LICENSE.md create mode 100644 node_modules/uuid/README.md create mode 100644 node_modules/uuid/benchmark/README.md create mode 100644 node_modules/uuid/benchmark/bench.gnu create mode 100644 node_modules/uuid/benchmark/bench.sh create mode 100644 node_modules/uuid/benchmark/benchmark-native.c create mode 100644 node_modules/uuid/benchmark/benchmark.js create mode 100644 node_modules/uuid/benchmark/package.json create mode 100644 node_modules/uuid/buffer-browser.js create mode 100644 node_modules/uuid/buffer.js create mode 100644 node_modules/uuid/misc/compare.js create mode 100644 node_modules/uuid/misc/perf.js create mode 100644 node_modules/uuid/package.json create mode 100644 node_modules/uuid/rng-browser.js create mode 100644 node_modules/uuid/rng.js create mode 100644 node_modules/uuid/test/mocha.opts create mode 100644 node_modules/uuid/test/test.js create mode 100644 node_modules/uuid/uuid.js create mode 100644 node_modules/validate-npm-package-name/.npmignore create mode 100644 node_modules/validate-npm-package-name/.nyc_output/aa4ee25ac41a9c3c7ee37ce965e6d1ac.json create mode 100644 node_modules/validate-npm-package-name/.nyc_output/bb918173e62b9517f55b630902d07ef4.json create mode 100644 node_modules/validate-npm-package-name/.travis.yml create mode 100644 node_modules/validate-npm-package-name/LICENSE create mode 100644 node_modules/validate-npm-package-name/README.md create mode 100644 node_modules/validate-npm-package-name/index.js create mode 100644 node_modules/validate-npm-package-name/package.json create mode 100644 node_modules/validate-npm-package-name/test/index.js create mode 100644 node_modules/which/CHANGELOG.md create mode 100644 node_modules/which/LICENSE create mode 100644 node_modules/which/README.md create mode 100644 node_modules/which/bin/node-which create mode 100644 node_modules/which/package.json create mode 100644 node_modules/which/which.js create mode 100644 node_modules/wrappy/LICENSE create mode 100644 node_modules/wrappy/README.md create mode 100644 node_modules/wrappy/package.json create mode 100644 node_modules/wrappy/wrappy.js create mode 100644 node_modules/xtend/.jshintrc create mode 100644 node_modules/xtend/LICENSE create mode 100644 node_modules/xtend/README.md create mode 100644 node_modules/xtend/immutable.js create mode 100644 node_modules/xtend/mutable.js create mode 100644 node_modules/xtend/package.json create mode 100644 node_modules/xtend/test.js create mode 100644 node_modules/yallist/LICENSE create mode 100644 node_modules/yallist/README.md create mode 100644 node_modules/yallist/iterator.js create mode 100644 node_modules/yallist/package.json create mode 100644 node_modules/yallist/yallist.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 yarn.lock diff --git a/my-app/.gitignore b/my-app/.gitignore new file mode 100644 index 0000000000..4d29575de8 --- /dev/null +++ b/my-app/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/my-app/README.md b/my-app/README.md new file mode 100644 index 0000000000..02aac3f6ea --- /dev/null +++ b/my-app/README.md @@ -0,0 +1,70 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `yarn start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +### `yarn test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `yarn build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `yarn eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) + +### Analyzing the Bundle Size + +This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) + +### Making a Progressive Web App + +This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) + +### Advanced Configuration + +This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) + +### Deployment + +This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) + +### `yarn build` fails to minify + +This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/my-app/package.json b/my-app/package.json new file mode 100644 index 0000000000..fb69a58438 --- /dev/null +++ b/my-app/package.json @@ -0,0 +1,35 @@ +{ + "name": "my-app", + "version": "0.1.0", + "private": true, + "dependencies": { + "cra-template": "1.1.2", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-scripts": "4.0.3" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/my-app/public/favicon.ico b/my-app/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 zcma);c{J4h9>;%nil|2-o+rCuEF-(I%-F}ijC~o(k~HKAkr0)!FCj~d>`RtpD?8b; zXOC1OD!V*IsqUwzbMF1)-gEDD=A573Z-&G7^LoAC9|WO7Xc0Cx1g^Zu0u_SjAPB3vGa^W|sj)80f#V0@M_CAZTIO(t--xg= z!sii`1giyH7EKL_+Wi0ab<)&E_0KD!3Rp2^HNB*K2@PHCs4PWSA32*-^7d{9nH2_E zmC{C*N*)(vEF1_aMamw2A{ZH5aIDqiabnFdJ|y0%aS|64E$`s2ccV~3lR!u<){eS` z#^Mx6o(iP1Ix%4dv`t@!&Za-K@mTm#vadc{0aWDV*_%EiGK7qMC_(`exc>-$Gb9~W!w_^{*pYRm~G zBN{nA;cm^w$VWg1O^^<6vY`1XCD|s_zv*g*5&V#wv&s#h$xlUilPe4U@I&UXZbL z0)%9Uj&@yd03n;!7do+bfixH^FeZ-Ema}s;DQX2gY+7g0s(9;`8GyvPY1*vxiF&|w z>!vA~GA<~JUqH}d;DfBSi^IT*#lrzXl$fNpq0_T1tA+`A$1?(gLb?e#0>UELvljtQ zK+*74m0jn&)5yk8mLBv;=@}c{t0ztT<v;Avck$S6D`Z)^c0(jiwKhQsn|LDRY&w(Fmi91I7H6S;b0XM{e zXp0~(T@k_r-!jkLwd1_Vre^v$G4|kh4}=Gi?$AaJ)3I+^m|Zyj#*?Kp@w(lQdJZf4 z#|IJW5z+S^e9@(6hW6N~{pj8|NO*>1)E=%?nNUAkmv~OY&ZV;m-%?pQ_11)hAr0oAwILrlsGawpxx4D43J&K=n+p3WLnlDsQ$b(9+4 z?mO^hmV^F8MV{4Lx>(Q=aHhQ1){0d*(e&s%G=i5rq3;t{JC zmgbn5Nkl)t@fPH$v;af26lyhH!k+#}_&aBK4baYPbZy$5aFx4}ka&qxl z$=Rh$W;U)>-=S-0=?7FH9dUAd2(q#4TCAHky!$^~;Dz^j|8_wuKc*YzfdAht@Q&ror?91Dm!N03=4=O!a)I*0q~p0g$Fm$pmr$ zb;wD;STDIi$@M%y1>p&_>%?UP($15gou_ue1u0!4(%81;qcIW8NyxFEvXpiJ|H4wz z*mFT(qVx1FKufG11hByuX%lPk4t#WZ{>8ka2efjY`~;AL6vWyQKpJun2nRiZYDij$ zP>4jQXPaP$UC$yIVgGa)jDV;F0l^n(V=HMRB5)20V7&r$jmk{UUIe zVjKroK}JAbD>B`2cwNQ&GDLx8{pg`7hbA~grk|W6LgiZ`8y`{Iq0i>t!3p2}MS6S+ zO_ruKyAElt)rdS>CtF7j{&6rP-#c=7evGMt7B6`7HG|-(WL`bDUAjyn+k$mx$CH;q2Dz4x;cPP$hW=`pFfLO)!jaCL@V2+F)So3}vg|%O*^T1j>C2lx zsURO-zIJC$^$g2byVbRIo^w>UxK}74^TqUiRR#7s_X$e)$6iYG1(PcW7un-va-S&u zHk9-6Zn&>T==A)lM^D~bk{&rFzCi35>UR!ZjQkdSiNX*-;l4z9j*7|q`TBl~Au`5& z+c)*8?#-tgUR$Zd%Q3bs96w6k7q@#tUn`5rj+r@_sAVVLqco|6O{ILX&U-&-cbVa3 zY?ngHR@%l{;`ri%H*0EhBWrGjv!LE4db?HEWb5mu*t@{kv|XwK8?npOshmzf=vZA@ zVSN9sL~!sn?r(AK)Q7Jk2(|M67Uy3I{eRy z_l&Y@A>;vjkWN5I2xvFFTLX0i+`{qz7C_@bo`ZUzDugfq4+>a3?1v%)O+YTd6@Ul7 zAfLfm=nhZ`)P~&v90$&UcF+yXm9sq!qCx3^9gzIcO|Y(js^Fj)Rvq>nQAHI92ap=P z10A4@prk+AGWCb`2)dQYFuR$|H6iDE8p}9a?#nV2}LBCoCf(Xi2@szia7#gY>b|l!-U`c}@ zLdhvQjc!BdLJvYvzzzngnw51yRYCqh4}$oRCy-z|v3Hc*d|?^Wj=l~18*E~*cR_kU z{XsxM1i{V*4GujHQ3DBpl2w4FgFR48Nma@HPgnyKoIEY-MqmMeY=I<%oG~l!f<+FN z1ZY^;10j4M4#HYXP zw5eJpA_y(>uLQ~OucgxDLuf}fVs272FaMxhn4xnDGIyLXnw>Xsd^J8XhcWIwIoQ9} z%FoSJTAGW(SRGwJwb=@pY7r$uQRK3Zd~XbxU)ts!4XsJrCycrWSI?e!IqwqIR8+Jh zlRjZ`UO1I!BtJR_2~7AbkbSm%XQqxEPkz6BTGWx8e}nQ=w7bZ|eVP4?*Tb!$(R)iC z9)&%bS*u(lXqzitAN)Oo=&Ytn>%Hzjc<5liuPi>zC_nw;Z0AE3Y$Jao_Q90R-gl~5 z_xAb2J%eArrC1CN4G$}-zVvCqF1;H;abAu6G*+PDHSYFx@Tdbfox*uEd3}BUyYY-l zTfEsOqsi#f9^FoLO;ChK<554qkri&Av~SIM*{fEYRE?vH7pTAOmu2pz3X?Wn*!ROX ztd54huAk&mFBemMooL33RV-*1f0Q3_(7hl$<#*|WF9P!;r;4_+X~k~uKEqdzZ$5Al zV63XN@)j$FN#cCD;ek1R#l zv%pGrhB~KWgoCj%GT?%{@@o(AJGt*PG#l3i>lhmb_twKH^EYvacVY-6bsCl5*^~L0 zonm@lk2UvvTKr2RS%}T>^~EYqdL1q4nD%0n&Xqr^cK^`J5W;lRRB^R-O8b&HENO||mo0xaD+S=I8RTlIfVgqN@SXDr2&-)we--K7w= zJVU8?Z+7k9dy;s;^gDkQa`0nz6N{T?(A&Iz)2!DEecLyRa&FI!id#5Z7B*O2=PsR0 zEvc|8{NS^)!d)MDX(97Xw}m&kEO@5jqRaDZ!+%`wYOI<23q|&js`&o4xvjP7D_xv@ z5hEwpsp{HezI9!~6O{~)lLR@oF7?J7i>1|5a~UuoN=q&6N}EJPV_GD`&M*v8Y`^2j zKII*d_@Fi$+i*YEW+Hbzn{iQk~yP z>7N{S4)r*!NwQ`(qcN#8SRQsNK6>{)X12nbF`*7#ecO7I)Q$uZsV+xS4E7aUn+U(K baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/my-app/public/index.html b/my-app/public/index.html new file mode 100644 index 0000000000..aa069f27cb --- /dev/null +++ b/my-app/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/my-app/public/logo192.png b/my-app/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/my-app/public/manifest.json b/my-app/public/manifest.json new file mode 100644 index 0000000000..080d6c77ac --- /dev/null +++ b/my-app/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/my-app/public/robots.txt b/my-app/public/robots.txt new file mode 100644 index 0000000000..e9e57dc4d4 --- /dev/null +++ b/my-app/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/my-app/src/App.css b/my-app/src/App.css new file mode 100644 index 0000000000..74b5e05345 --- /dev/null +++ b/my-app/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/my-app/src/App.js b/my-app/src/App.js new file mode 100644 index 0000000000..3784575723 --- /dev/null +++ b/my-app/src/App.js @@ -0,0 +1,25 @@ +import logo from './logo.svg'; +import './App.css'; + +function App() { + return ( + + ); +} + +export default App; diff --git a/my-app/src/App.test.js b/my-app/src/App.test.js new file mode 100644 index 0000000000..1f03afeece --- /dev/null +++ b/my-app/src/App.test.js @@ -0,0 +1,8 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/my-app/src/index.css b/my-app/src/index.css new file mode 100644 index 0000000000..ec2585e8c0 --- /dev/null +++ b/my-app/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/my-app/src/index.js b/my-app/src/index.js new file mode 100644 index 0000000000..ef2edf8ea3 --- /dev/null +++ b/my-app/src/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; + +ReactDOM.render( + + + , + document.getElementById('root') +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/my-app/src/logo.svg b/my-app/src/logo.svg new file mode 100644 index 0000000000..9dfc1c058c --- /dev/null +++ b/my-app/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/my-app/src/reportWebVitals.js b/my-app/src/reportWebVitals.js new file mode 100644 index 0000000000..5253d3ad9e --- /dev/null +++ b/my-app/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/my-app/src/setupTests.js b/my-app/src/setupTests.js new file mode 100644 index 0000000000..8f2609b7b3 --- /dev/null +++ b/my-app/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/my-app/yarn.lock b/my-app/yarn.lock new file mode 100644 index 0000000000..5d22c9353c --- /dev/null +++ b/my-app/yarn.lock @@ -0,0 +1,11268 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.13.tgz#27e19e0ed3726ccf54067ced4109501765e7e2e8" + integrity sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg== + +"@babel/core@7.12.3": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.4": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.17.tgz#993c5e893333107a2815d8e0d73a2c3755e280b2" + integrity sha512-V3CuX1aBywbJvV2yzJScRxeiiw0v2KZZYYE3giywxzFJL13RiyPjaaDwhDnxmgFTTS7FgvM2ijr4QmKNIu0AtQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.12.17" + "@babel/helper-module-transforms" "^7.12.17" + "@babel/helpers" "^7.12.17" + "@babel/parser" "^7.12.17" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.17" + "@babel/types" "^7.12.17" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.12.1", "@babel/generator@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.17.tgz#9ef1dd792d778b32284411df63f4f668a9957287" + integrity sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg== + dependencies: + "@babel/types" "^7.12.17" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" + integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" + integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.17.tgz#91d83fae61ef390d39c3f0507cb83979bab837c7" + integrity sha512-5EkibqLVYOuZ89BSg2lv+GG8feywLuvMXNYgf0Im4MssE0mFWPztSpJbildNnUgw0bLI2EsIN4MpSHC2iUJkQA== + dependencies: + "@babel/compat-data" "^7.12.13" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.12.13", "@babel/helper-create-class-features-plugin@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.17.tgz#704b69c8a78d03fb1c5fcc2e7b593f8a65628944" + integrity sha512-I/nurmTxIxHV0M+rIpfQBF1oN342+yvl2kwZUrQuOClMamHF1w5tknfZubgNOLRoA73SzBFAdFcpb4M9HwOeWQ== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.12.17" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + +"@babel/helper-create-regexp-features-plugin@^7.12.13": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" + integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + regexpu-core "^4.7.1" + +"@babel/helper-explode-assignable-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz#0e46990da9e271502f77507efa4c9918d3d8634a" + integrity sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-hoist-variables@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz#13aba58b7480b502362316ea02f52cca0e9796cd" + integrity sha512-KSC5XSj5HreRhYQtZ3cnSnQwDzgnbdUDEFsxkN0m6Q3WrCRt72xrnZ8+h+pX7YxM7hr87zIO3a/v5p/H3TrnVw== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-member-expression-to-functions@^7.12.13", "@babel/helper-member-expression-to-functions@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.17.tgz#f82838eb06e1235307b6d71457b6670ff71ee5ac" + integrity sha512-Bzv4p3ODgS/qpBE0DiJ9qf5WxSmrQ8gVTe8ClMfwwsY2x/rhykxxy3bXzG7AGTnPB2ij37zGJ/Q/6FruxHxsxg== + dependencies: + "@babel/types" "^7.12.17" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" + integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.12.13", "@babel/helper-module-transforms@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.17.tgz#7c75b987d6dfd5b48e575648f81eaac891539509" + integrity sha512-sFL+p6zOCQMm9vilo06M4VHuTxUAwa6IxgL56Tq1DVtA0ziAGTH1ThmJq7xwPqdQlgAbKX3fb0oZNbtRIyA5KQ== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.17" + "@babel/types" "^7.12.17" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb" + integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA== + +"@babel/helper-remap-async-to-generator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz#170365f4140e2d20e5c88f8ba23c24468c296878" + integrity sha512-Qa6PU9vNcj1NZacZZI1Mvwt+gXDH6CTfgAkSjeRMLE8HxtDK76+YDId6NQR+z7Rgd5arhD2cIbS74r0SxD6PDA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-wrap-function" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-replace-supers@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz#00ec4fb6862546bd3d0aff9aac56074277173121" + integrity sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.13" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-simple-access@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" + integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + +"@babel/helper-wrap-function@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz#e3ea8cb3ee0a16911f9c1b50d9e99fe8fe30f9ff" + integrity sha512-t0aZFEmBJ1LojdtJnhOaQEVejnzYhyjWHSsNSNo8vOYRbAJNh6r6GQF7pd36SqG7OKGbn+AewVQ/0IfYfIuGdw== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helpers@^7.12.1", "@babel/helpers@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.17.tgz#71e03d2981a6b5ee16899964f4101dc8471d60bc" + integrity sha512-tEpjqSBGt/SFEsFikKds1sLNChKKGGR17flIgQKXH4fG6m9gTgl3gnOC1giHNyaBCSKuTfxaSzHi7UnvqiVKxg== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.17" + "@babel/types" "^7.12.17" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" + integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.17", "@babel/parser@^7.12.3", "@babel/parser@^7.7.0": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.17.tgz#bc85d2d47db38094e5bb268fc761716e7d693848" + integrity sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg== + +"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz#d1c6d841802ffb88c64a2413e311f7345b9e66b5" + integrity sha512-1KH46Hx4WqP77f978+5Ye/VUbuwQld2hph70yaw2hXS2v7ER2f3nlpNMu909HO2rbvP0NKLlMVDPh9KXklVMhA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-remap-async-to-generator" "^7.12.13" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz#3d2ce350367058033c93c098e348161d6dc0d8c8" + integrity sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-proposal-decorators@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" + integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.12.1" + +"@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.17.tgz#e0ebd8db65acc37eac518fa17bead2174e224512" + integrity sha512-ZNGoFZqrnuy9H2izB2jLlnNDAfVPlGl5NhFEiFe4D84ix9GQGygF+CWMGHKuE+bpyS/AOuDQCnkiRNqW2IzS1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-namespace-from@^7.12.1", "@babel/plugin-proposal-export-namespace-from@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" + integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz#ced7888a2db92a3d520a2e35eb421fdb7fcc9b5d" + integrity sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1", "@babel/plugin-proposal-logical-assignment-operators@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz#575b5d9a08d8299eeb4db6430da6e16e5cf14350" + integrity sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz#24867307285cee4e1031170efd8a7ac807deefde" + integrity sha512-Qoxpy+OxhDBI5kRqliJFAl4uWXk3Bn24WeFstPH0iLymFehSAUR8MHpqU7njyXv/qbo7oN6yTy5bfCmXdKpo1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" + integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-numeric-separator@^7.12.1", "@babel/plugin-proposal-numeric-separator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" + integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz#f93f3116381ff94bc676fdcb29d71045cd1ec011" + integrity sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.13" + +"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz#4640520afe57728af14b4d1574ba844f263bcae5" + integrity sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.17.tgz#e382becadc2cb16b7913b6c672d92e4b33385b5c" + integrity sha512-TvxwI80pWftrGPKHNfkvX/HnoeSTR7gC4ezWnAL39PuktYUe6r8kEpOLTYnkBTsaoeazXm2jHJ22EQ81sdgfcA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz#ea78a12554d784ecf7fc55950b752d469d9c4a71" + integrity sha512-sV0V57uUwpauixvR7s2o75LmwJI6JECwm5oPUY5beZB1nBl2i37hc7CJGqB5G+58fur5Y6ugvl3LRONk5x34rg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" + integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-decorators@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" + integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" + integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" + integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz#eda5670b282952100c229f8a3bd49e0f6a72e9fe" + integrity sha512-tBtuN6qtCTd+iHzVZVOMNp+L04iIJBpqkdY42tWbmjIT5wvR2kx7gxMBsyhQtFzHwBbyGi9h8J8r9HgnOpQHxg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz#fed8c69eebf187a535bfa4ee97a614009b24f7ae" + integrity sha512-psM9QHcHaDr+HZpRuJcE1PXESuGWSCcbiGFFhhwfzdbTxaGDVzuVtdNYliAwcRo3GFg0Bc8MmI+AvIGYIJG04A== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-remap-async-to-generator" "^7.12.13" + +"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" + integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" + integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz#9728edc1838b5d62fc93ad830bd523b1fcb0e1f6" + integrity sha512-cqZlMlhCC1rVnxE5ZGMtIb896ijL90xppMiuWXcwcOAuFczynpd3KYemb91XFFPi3wJSe/OcrX9lXoowatkkxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz#6a210647a3d67f21f699cfd2a01333803b27339d" + integrity sha512-dDfuROUPGK1mTtLKyDPUavmj2b6kFu82SmgpztBFEO974KMjJT+Ytj3/oWsTUMBmgPcp9J5Pc1SlcAYRpJ2hRA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz#fc56c5176940c5b41735c677124d1d20cecc9aeb" + integrity sha512-Dn83KykIFzjhA3FDPA1z4N+yfF3btDGhjnJwxIj0T43tP0flCujnU8fKgEkf0C1biIpSv9NZegPBQ1J6jYkwvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" + integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" + integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" + integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-flow-strip-types@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" + integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" + +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz#561ff6d74d9e1c8879cb12dbaf4a14cd29d15cf6" + integrity sha512-xCbdgSzXYmHGyVX3+BsQjcd4hv4vA/FDy7Kc8eOpzKmBBPEOTurt0w5fCRQaGl+GSBORKgJdstQ1rHl4jbNseQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" + integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" + integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" + integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz#43db16249b274ee2e551e2422090aa1c47692d56" + integrity sha512-JHLOU0o81m5UqG0Ulz/fPC68/v+UTuGTWaZBUwpEk1fYQ1D9LfKV6MPn4ttJKqRo5Lm460fkzjLTL4EHvCprvA== + dependencies: + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz#5043b870a784a8421fa1fd9136a24f294da13e50" + integrity sha512-OGQoeVXVi1259HjuoDnsQMlMkT9UkZT9TpXAsqWplS/M0N1g3TJAn/ByOCeQu7mfjc5WpSsRU+jV1Hd89ts0kQ== + dependencies: + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-simple-access" "^7.12.13" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz#351937f392c7f07493fc79b2118201d50404a3c5" + integrity sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA== + dependencies: + "@babel/helper-hoist-variables" "^7.12.13" + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz#26c66f161d3456674e344b4b1255de4d530cfb37" + integrity sha512-BgZndyABRML4z6ibpi7Z98m4EVLFI9tVsZDADC14AElFaNHHBcJIovflJ6wtCqFxwy2YJ1tJhGRsr0yLPKoN+w== + dependencies: + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" + integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + +"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" + integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" + integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz#461e76dfb63c2dfd327b8a008a9e802818ce9853" + integrity sha512-e7QqwZalNiBRHCpJg/P8s/VJeSRYgmtWySs1JwvfwPqhBbiWfOcHDKdeAi6oAyIimoKWBlwc8oTgbZHdhCoVZA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.13.tgz#f8ee56888545d53d80f766b3cc1563ab2c241f92" + integrity sha512-qmzKVTn46Upvtxv8LQoQ8mTCdUC83AOVQIQm57e9oekLT5cmK9GOMOfcWhe8jMNx4UJXn/UDhVZ/7lGofVNeDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-display-name@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" + integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-development@^7.12.1", "@babel/plugin-transform-react-jsx-development@^7.12.12": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" + integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.12.17" + +"@babel/plugin-transform-react-jsx-self@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60" + integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-source@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz#051d76126bee5c9a6aa3ba37be2f6c1698856bcb" + integrity sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.13", "@babel/plugin-transform-react-jsx@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" + integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/types" "^7.12.17" + +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" + integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" + integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" + integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" + integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz#ca0d5645abbd560719c354451b849f14df4a7949" + integrity sha512-dUCrqPIowjqk5pXsx1zPftSq4sT0aCeZVAxhdgs3AMgyaDmoUT0G+5h3Dzja27t76aUEIJWlFgPJqJ/d4dbTtg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" + integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz#655037b07ebbddaf3b7752f55d15c2fd6f5aa865" + integrity sha512-arIKlWYUgmNsF28EyfmiQHJLJFlAJNYkuQO10jL46ggjBpeb2re1P9K9YGxNJB45BqTbaslVysXDYm/g3sN/Qg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" + integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-typescript@^7.12.1": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.17.tgz#4aa6a5041888dd2e5d316ec39212b0cf855211bb" + integrity sha512-1bIYwnhRoetxkFonuZRtDZPFEjl1l5r+3ITkxLC3mlMaFja+GQFo94b/WHEPjqWLU9Bc+W4oFZbvCGe9eYMu1g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.17" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-typescript" "^7.12.13" + +"@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" + integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" + integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/preset-env@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.1" + core-js-compat "^3.6.2" + semver "^5.5.0" + +"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.8.4": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.17.tgz#94a3793ff089c32ee74d76a3c03a7597693ebaaa" + integrity sha512-9PMijx8zFbCwTHrd2P4PJR5nWGH3zWebx2OcpTjqQrHhCiL2ssSR2Sc9ko2BsI2VmVBfoaQmPrlMTCui4LmXQg== + dependencies: + "@babel/compat-data" "^7.12.13" + "@babel/helper-compilation-targets" "^7.12.17" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-proposal-async-generator-functions" "^7.12.13" + "@babel/plugin-proposal-class-properties" "^7.12.13" + "@babel/plugin-proposal-dynamic-import" "^7.12.17" + "@babel/plugin-proposal-export-namespace-from" "^7.12.13" + "@babel/plugin-proposal-json-strings" "^7.12.13" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.13" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.13" + "@babel/plugin-proposal-numeric-separator" "^7.12.13" + "@babel/plugin-proposal-object-rest-spread" "^7.12.13" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.13" + "@babel/plugin-proposal-optional-chaining" "^7.12.17" + "@babel/plugin-proposal-private-methods" "^7.12.13" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.13" + "@babel/plugin-transform-arrow-functions" "^7.12.13" + "@babel/plugin-transform-async-to-generator" "^7.12.13" + "@babel/plugin-transform-block-scoped-functions" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.12.13" + "@babel/plugin-transform-classes" "^7.12.13" + "@babel/plugin-transform-computed-properties" "^7.12.13" + "@babel/plugin-transform-destructuring" "^7.12.13" + "@babel/plugin-transform-dotall-regex" "^7.12.13" + "@babel/plugin-transform-duplicate-keys" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator" "^7.12.13" + "@babel/plugin-transform-for-of" "^7.12.13" + "@babel/plugin-transform-function-name" "^7.12.13" + "@babel/plugin-transform-literals" "^7.12.13" + "@babel/plugin-transform-member-expression-literals" "^7.12.13" + "@babel/plugin-transform-modules-amd" "^7.12.13" + "@babel/plugin-transform-modules-commonjs" "^7.12.13" + "@babel/plugin-transform-modules-systemjs" "^7.12.13" + "@babel/plugin-transform-modules-umd" "^7.12.13" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" + "@babel/plugin-transform-new-target" "^7.12.13" + "@babel/plugin-transform-object-super" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.12.13" + "@babel/plugin-transform-property-literals" "^7.12.13" + "@babel/plugin-transform-regenerator" "^7.12.13" + "@babel/plugin-transform-reserved-words" "^7.12.13" + "@babel/plugin-transform-shorthand-properties" "^7.12.13" + "@babel/plugin-transform-spread" "^7.12.13" + "@babel/plugin-transform-sticky-regex" "^7.12.13" + "@babel/plugin-transform-template-literals" "^7.12.13" + "@babel/plugin-transform-typeof-symbol" "^7.12.13" + "@babel/plugin-transform-unicode-escapes" "^7.12.13" + "@babel/plugin-transform-unicode-regex" "^7.12.13" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.17" + core-js-compat "^3.8.0" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c" + integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.1" + "@babel/plugin-transform-react-jsx-development" "^7.12.1" + "@babel/plugin-transform-react-jsx-self" "^7.12.1" + "@babel/plugin-transform-react-jsx-source" "^7.12.1" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-react@^7.12.5": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.13.tgz#5f911b2eb24277fa686820d5bd81cad9a0602a0a" + integrity sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-react-display-name" "^7.12.13" + "@babel/plugin-transform-react-jsx" "^7.12.13" + "@babel/plugin-transform-react-jsx-development" "^7.12.12" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-typescript@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b" + integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.12.1" + +"@babel/runtime-corejs3@^7.10.2": + version "7.12.18" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.18.tgz#e5663237e5658e4c09586995d2dd6d2c8cfd6fc0" + integrity sha512-ngR7yhNTjDxxe1VYmhqQqqXZWujGb6g0IoA4qeG6MxNGRnIw2Zo8ImY8HfaQ7l3T6GklWhdNfyhWk0C0iocdVA== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" + integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.12.18" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" + integrity sha512-BogPQ7ciE6SYAUPtlm9tWbgI9+2AgqSam6QivMgXgAT+fKbgppaj4ZX15MHeLC1PVF5sNk70huBu20XxWOs8Cg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.17", "@babel/traverse@^7.7.0": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.17.tgz#40ec8c7ffb502c4e54c7f95492dc11b88d718619" + integrity sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.12.17" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.12.17" + "@babel/types" "^7.12.17" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.17.tgz#9d711eb807e0934c90b8b1ca0eb1f7230d150963" + integrity sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@eslint/eslintrc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" + integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.20" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.1.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" + +"@jest/core@^26.6.0", "@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^26.6.0", "@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" + +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + dependencies: + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^26.6.0", "@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@pmmmwh/react-refresh-webpack-plugin@0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== + dependencies: + ansi-html "^0.0.7" + error-stack-parser "^2.0.6" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" + source-map "^0.7.3" + +"@rollup/plugin-node-resolve@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" + integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== + dependencies: + "@rollup/pluginutils" "^3.0.8" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.14.2" + +"@rollup/plugin-replace@^2.3.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.1.tgz#c411b5ab72809fb1bfc8b487d8d02eef661460d3" + integrity sha512-XwC1oK5rrtRJ0tn1ioLHS6OV5JTluJF7QE1J/q1hN3bquwjnVxjtMyY9iCnoyH9DQbf92CxajB3o98wZbP3oAQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@sinonjs/commons@^1.7.0": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" + integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^1.1.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" + integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== + dependencies: + ejs "^2.6.1" + magic-string "^0.25.0" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== + dependencies: + "@babel/types" "^7.3.0" + +"@types/eslint@^7.2.6": + version "7.2.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c" + integrity sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.46" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" + integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" + integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "14.14.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" + integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.0.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.1.tgz#374e31645d58cb18a07b3ecd8e9dede4deb2cccd" + integrity sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/tapable@*", "@types/tapable@^1.0.5": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== + +"@types/uglify-js@*": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.12.0.tgz#2bb061c269441620d46b946350c8f16d52ef37c5" + integrity sha512-sYAF+CF9XZ5cvEBkI7RtrG9g2GtMBkviTnBxYYyq+8BWvO4QtXfwwR6a2LFwCi4evMKZfpv6U43ViYvv17Wz3Q== + dependencies: + source-map "^0.6.1" + +"@types/webpack-sources@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4.41.8": + version "4.41.26" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" + integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + +"@types/yargs-parser@*": + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + +"@types/yargs@^15.0.0": + version "15.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" + integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^4.5.0": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz#981b26b4076c62a5a55873fbef3fe98f83360c61" + integrity sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q== + dependencies: + "@typescript-eslint/experimental-utils" "4.15.2" + "@typescript-eslint/scope-manager" "4.15.2" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + lodash "^4.17.15" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.15.2", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz#5efd12355bd5b535e1831282e6cf465b9a71cf36" + integrity sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.15.2" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/typescript-estree" "4.15.2" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/experimental-utils@^3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^4.5.0": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.15.2.tgz#c804474321ef76a3955aec03664808f0d6e7872e" + integrity sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q== + dependencies: + "@typescript-eslint/scope-manager" "4.15.2" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/typescript-estree" "4.15.2" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz#5725bda656995960ae1d004bfd1cd70320f37f4f" + integrity sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ== + dependencies: + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/visitor-keys" "4.15.2" + +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/types@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.15.2.tgz#04acf3a2dc8001a88985291744241e732ef22c60" + integrity sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ== + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/typescript-estree@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz#c2f7a1e94f3428d229d5ecff3ead6581ee9b62fa" + integrity sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw== + dependencies: + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/visitor-keys" "4.15.2" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/visitor-keys@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz#3d1c7979ce75bf6acf9691109bd0d6b5706192b9" + integrity sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg== + dependencies: + "@typescript-eslint/types" "4.15.2" + eslint-visitor-keys "^2.0.0" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^7.0.2: + version "7.1.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84" + integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7, ansi-html@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.3, anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.1, array-includes@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +array.prototype.flatmap@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axe-core@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.2.tgz#7cf783331320098bfbef620df3b3c770147bc224" + integrity sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg== + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-jest@^26.6.0, babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== + dependencies: + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-named-asset-import@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" + integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz#689b60edc705f8a70ce87f47ab0e560a317d7045" + integrity sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg== + dependencies: + "@babel/core" "7.12.3" + "@babel/plugin-proposal-class-properties" "7.12.1" + "@babel/plugin-proposal-decorators" "7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.12.1" + "@babel/plugin-proposal-numeric-separator" "7.12.1" + "@babel/plugin-proposal-optional-chaining" "7.12.1" + "@babel/plugin-transform-flow-strip-types" "7.12.1" + "@babel/plugin-transform-react-display-name" "7.12.1" + "@babel/plugin-transform-runtime" "7.12.1" + "@babel/preset-env" "7.12.1" + "@babel/preset-react" "7.12.1" + "@babel/preset-typescript" "7.12.1" + "@babel/runtime" "7.12.1" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.14.2: + version "4.14.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" + integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== + dependencies: + caniuse-lite "^1.0.30001125" + electron-to-chromium "^1.3.564" + escalade "^3.0.2" + node-releases "^1.1.61" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.2, browserslist@^4.6.4: + version "4.16.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" + integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== + dependencies: + caniuse-lite "^1.0.30001181" + colorette "^1.2.1" + electron-to-chromium "^1.3.649" + escalade "^3.1.1" + node-releases "^1.1.70" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.1.0, camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001181: + version "1.0.30001191" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9" + integrity sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +check-types@^11.1.1: + version "11.1.2" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" + integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" + integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.6.2, core-js-compat@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.0.tgz#29da39385f16b71e1915565aa0385c4e0963ad56" + integrity sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ== + dependencies: + browserslist "^4.16.3" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.0.tgz#326cc74e1fef8b7443a6a793ddb0adfcd81f9efb" + integrity sha512-3pEcmMZC9Cq0D4ZBh3pe2HLtqxpGNJBLXF/kZ2YzK17RbKp94w0HFbdbSx8H8kAlZG5k76hvLrkPm57Uyef+kg== + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-js@^3.6.5: + version "3.9.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.0.tgz#790b1bb11553a2272b36e2625c7179db345492f8" + integrity sha512-PyFBJaLq93FlyYdsndE5VaueA9K5cNB7CGzeCj191YYLhkQM0gdZR2SKihM70oF0wdqKSKClv/tEBOpoRmdOVQ== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cra-template@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cra-template/-/cra-template-1.1.2.tgz#04bb68c9e9c0822d3c6436950fc6f202c92bc9e5" + integrity sha512-NZXGdiY+AODaBU5AZFCLlohOnhQRG+NI8oixWuMQySA3Fp+AcOpZt2d6U7hgUn8wgbLm8ynJwg6hih+ORyojfQ== + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== + dependencies: + camelcase "^6.0.0" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^2.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.3" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.1" + semver "^7.3.2" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0, css-select@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.1, debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decimal.js@^10.2.0: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.649: + version "1.3.671" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.671.tgz#8feaed6eae42d279fa4611f58c42a5a1eb81b2a0" + integrity sha512-RTD97QkdrJKaKwRv9h/wGAaoR2lGxNXEcBXS31vjitgTPwTWAbLdS7cEsBK68eEQy7p6YyT8D5BxBEYHu2SuwQ== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.0.0: + version "9.2.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.1.tgz#c9b25604256bb3428964bead3ab63069d736f7ee" + integrity sha512-117l1H6U4X3Krn+MrzYrL57d5H7siRHWraBs7s+LjRuFK7Fe7hJqnJ0skWlinqsycVLU5YAo6L8CsEYQ0V5prg== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.2: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.1" + is-regex "^1.1.1" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.0.2, escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" + integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== + dependencies: + confusing-browser-globals "^1.0.10" + +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.2.2.tgz#c6e5dd2fad4e757a1c63e652da6cff597659554f" + integrity sha512-C4PlPYpszr9h1cBfUbTNRI1IdxUCF0qrXAHkXS2+bESp7WUUCnvb3UBBnYlaQLvJYJ2lRz+2SPQQ/WyV7p/Tow== + dependencies: + lodash "^4.17.15" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jest@^24.1.0: + version "24.1.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.5.tgz#1e866a9f0deac587d0a3d5d7cefe99815a580de2" + integrity sha512-FIP3lwC8EzEG+rOs1y96cOJmMVpdFNreoDJv29B5vIupVssRi8zrSY3QadogT0K3h1Y8TMxJ6ZSAzYUmFCp2hg== + dependencies: + "@typescript-eslint/experimental-utils" "^4.0.1" + +eslint-plugin-jsx-a11y@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== + dependencies: + "@babel/runtime" "^7.11.2" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" + +eslint-plugin-react-hooks@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" + integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== + +eslint-plugin-react@^7.21.5: + version "7.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" + integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== + dependencies: + array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + object.entries "^1.1.2" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.18.1" + string.prototype.matchall "^4.0.2" + +eslint-plugin-testing-library@^3.9.2: + version "3.10.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.1.tgz#4dd02306d601c3238fdabf1d1dbc5f2a8e85d531" + integrity sha512-nQIFe2muIFv2oR2zIuXE4vTbcFNx8hZKRzgHZqJg8rfopIWwoTwtlbCCNELT/jXzVe1uZF68ALGYoDXjLczKiQ== + dependencies: + "@typescript-eslint/experimental-utils" "^3.10.1" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint-webpack-plugin@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.2.tgz#4ee17577d6392bf72048080a1678d6237183db81" + integrity sha512-ndD9chZ/kaGnjjx7taRg7c6FK/YKb29SSYzaLtPBIYLYJQmZtuKqtQbAvTS2ymiMQT6X0VW9vZIHK0KLstv93Q== + dependencies: + "@types/eslint" "^7.2.6" + arrify "^2.0.1" + jest-worker "^26.6.2" + micromatch "^4.0.2" + schema-utils "^3.0.0" + +eslint@^7.11.0: + version "7.20.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.20.0.tgz#db07c4ca4eda2e2316e7aa57ac7fc91ec550bdc7" + integrity sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.3.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + file-entry-cache "^6.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.20" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^26.6.0, expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== + dependencies: + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastq@^1.6.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e" + integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-entry-cache@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" + integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" + integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.13.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147" + integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== + dependencies: + "@babel/code-frame" "^7.5.5" + chalk "^2.4.1" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.1.2, fsevents@^2.1.3, fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^11.0.1: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^1.2.1, html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-webpack-plugin@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" + integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +immer@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" + integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.0.0, is-core-module@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + +is-regex@^1.0.4, is-regex@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== + dependencies: + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" + +jest-circus@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705" + integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.0" + "@jest/test-result" "^26.6.0" + "@jest/types" "^26.6.0" + "@types/babel__traverse" "^7.0.4" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^26.6.0" + is-generator-fn "^2.0.0" + jest-each "^26.6.0" + jest-matcher-utils "^26.6.0" + jest-message-util "^26.6.0" + jest-runner "^26.6.0" + jest-runtime "^26.6.0" + jest-snapshot "^26.6.0" + jest-util "^26.6.0" + pretty-format "^26.6.0" + stack-utils "^2.0.2" + throat "^5.0.0" + +jest-cli@^26.6.0: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + dependencies: + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" + prompts "^2.0.1" + yargs "^15.4.1" + +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" + +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.6.0, jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + dependencies: + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^26.6.2" + is-generator-fn "^2.0.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" + +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + dependencies: + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-message-util@^26.6.0, jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + dependencies: + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" + +jest-resolve@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1" + integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== + dependencies: + "@jest/types" "^26.6.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.0" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" + slash "^3.0.0" + +jest-runner@^26.6.0, jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^26.6.0, jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" + +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + natural-compare "^1.4.0" + pretty-format "^26.6.2" + semver "^7.3.2" + +jest-util@^26.6.0, jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" + +jest-watch-typeahead@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63" + integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^26.0.0" + jest-watcher "^26.3.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + +jest-watcher@^26.3.0, jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== + dependencies: + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" + +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^26.5.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25" + integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== + dependencies: + "@jest/core" "^26.6.0" + import-local "^3.0.2" + jest-cli "^26.6.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.2.3" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" + integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@2.0.0, loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel@^1.6.8: + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.46.0, "mime-db@>= 1.43.0 < 2": + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.29" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" + integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== + dependencies: + mime-db "1.46.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" + integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanoid@^3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== + dependencies: + querystring "^0.2.0" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" + integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" + +node-releases@^1.1.61, node-releases@^1.1.70: + version "1.1.70" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" + integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.8.0, object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.0, object.entries@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" + integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== + dependencies: + postcss "^7" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== + dependencies: + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" + integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== + dependencies: + postcss "^8.1.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^8.1.0: + version "8.2.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" + integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== + dependencies: + colorette "^1.2.1" + nanoid "^3.1.20" + source-map "^0.6.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +pretty-bytes@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-format@^26.6.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@2.4.0, prompts@^2.0.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" + integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" + integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== + dependencies: + core-js "^3.6.5" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.7" + whatwg-fetch "^3.4.1" + +react-dev-utils@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" + integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== + dependencies: + "@babel/code-frame" "7.10.4" + address "1.1.2" + browserslist "4.14.2" + chalk "2.4.2" + cross-spawn "7.0.3" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.1.0" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "4.1.6" + global-modules "2.0.0" + globby "11.0.1" + gzip-size "5.1.1" + immer "8.0.1" + is-root "2.1.0" + loader-utils "2.0.0" + open "^7.0.2" + pkg-up "3.1.0" + prompts "2.4.0" + react-error-overlay "^6.0.9" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-error-overlay@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + +react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + +react-refresh@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== + +react-scripts@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345" + integrity sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A== + dependencies: + "@babel/core" "7.12.3" + "@pmmmwh/react-refresh-webpack-plugin" "0.4.3" + "@svgr/webpack" "5.5.0" + "@typescript-eslint/eslint-plugin" "^4.5.0" + "@typescript-eslint/parser" "^4.5.0" + babel-eslint "^10.1.0" + babel-jest "^26.6.0" + babel-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.7" + babel-preset-react-app "^10.0.0" + bfj "^7.0.2" + camelcase "^6.1.0" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "4.3.0" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^7.11.0" + eslint-config-react-app "^6.0.0" + eslint-plugin-flowtype "^5.2.0" + eslint-plugin-import "^2.22.1" + eslint-plugin-jest "^24.1.0" + eslint-plugin-jsx-a11y "^6.3.1" + eslint-plugin-react "^7.21.5" + eslint-plugin-react-hooks "^4.2.0" + eslint-plugin-testing-library "^3.9.2" + eslint-webpack-plugin "^2.5.2" + file-loader "6.1.1" + fs-extra "^9.0.1" + html-webpack-plugin "4.5.0" + identity-obj-proxy "3.0.0" + jest "26.6.0" + jest-circus "26.6.0" + jest-resolve "26.6.0" + jest-watch-typeahead "0.6.1" + mini-css-extract-plugin "0.11.3" + optimize-css-assets-webpack-plugin "5.0.4" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "4.2.1" + postcss-loader "3.0.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" + postcss-safe-parser "5.0.2" + prompts "2.4.0" + react-app-polyfill "^2.0.0" + react-dev-utils "^11.0.3" + react-refresh "^0.8.3" + resolve "1.18.1" + resolve-url-loader "^3.1.2" + sass-loader "^10.0.5" + semver "7.3.2" + style-loader "1.3.0" + terser-webpack-plugin "4.2.3" + ts-pnp "1.2.0" + url-loader "4.1.1" + webpack "4.44.2" + webpack-dev-server "3.11.1" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "5.1.4" + optionalDependencies: + fsevents "^2.1.3" + +react@17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.7" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c" + integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" + integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== + dependencies: + css-select "^2.0.2" + dom-converter "^0.2" + htmlparser2 "^3.10.1" + lodash "^4.17.20" + strip-ansi "^3.0.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" + integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== + dependencies: + adjust-sourcemap-loader "3.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" + integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== + dependencies: + is-core-module "^2.0.0" + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8.1: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-terser@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" + integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^4.0.0" + terser "^4.6.2" + +rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.31.1: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + +sass-loader@^10.0.5: + version "10.1.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" + integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== + dependencies: + klona "^2.0.4" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.8: + version "1.10.8" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + dependencies: + node-forge "^0.10.0" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1, semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add" + integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== + dependencies: + debug "^3.2.6" + eventsource "^1.0.7" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.4.7" + +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + dependencies: + faye-websocket "^0.11.3" + uuid "^3.4.0" + websocket-driver "^0.7.4" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-length@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" + integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has-symbols "^1.0.1" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.7.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + dependencies: + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" + integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.3.4: + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" + integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-pnp@1.2.0, ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + +tsutils@^3.17.1: + version "3.20.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" + integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.3.0.tgz#ada7c045f07ead08abf9e2edd29be1a0c0661132" + integrity sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse@^1.4.3, url-parse@^1.4.7: + version "1.5.1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + +v8-to-istanbul@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" + integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.1: + version "3.11.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" + integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.8" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + sockjs-client "^1.5.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.44.2: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.4.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.1.tgz#93bc4005af6c2cc30ba3e42ec3125947c8f54ed3" + integrity sha512-IEmN/ZfmMw6G1hgZpVd0LuZXOQDisrMOZrzYd5x3RAK4bMPlJohKUZWZ9t/QsTvH0dV9TbPDcc2OSuIDcihnHA== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" + integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== + dependencies: + workbox-core "^5.1.4" + +workbox-broadcast-update@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" + integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== + dependencies: + workbox-core "^5.1.4" + +workbox-build@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" + integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== + dependencies: + "@babel/core" "^7.8.4" + "@babel/preset-env" "^7.8.4" + "@babel/runtime" "^7.8.4" + "@hapi/joi" "^15.1.0" + "@rollup/plugin-node-resolve" "^7.1.1" + "@rollup/plugin-replace" "^2.3.1" + "@surma/rollup-plugin-off-main-thread" "^1.1.1" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^8.1.0" + glob "^7.1.6" + lodash.template "^4.5.0" + pretty-bytes "^5.3.0" + rollup "^1.31.1" + rollup-plugin-babel "^4.3.3" + rollup-plugin-terser "^5.3.1" + source-map "^0.7.3" + source-map-url "^0.4.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + tempy "^0.3.0" + upath "^1.2.0" + workbox-background-sync "^5.1.4" + workbox-broadcast-update "^5.1.4" + workbox-cacheable-response "^5.1.4" + workbox-core "^5.1.4" + workbox-expiration "^5.1.4" + workbox-google-analytics "^5.1.4" + workbox-navigation-preload "^5.1.4" + workbox-precaching "^5.1.4" + workbox-range-requests "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + workbox-streams "^5.1.4" + workbox-sw "^5.1.4" + workbox-window "^5.1.4" + +workbox-cacheable-response@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" + integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== + dependencies: + workbox-core "^5.1.4" + +workbox-core@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" + integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== + +workbox-expiration@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" + integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== + dependencies: + workbox-core "^5.1.4" + +workbox-google-analytics@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" + integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== + dependencies: + workbox-background-sync "^5.1.4" + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + +workbox-navigation-preload@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" + integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== + dependencies: + workbox-core "^5.1.4" + +workbox-precaching@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" + integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== + dependencies: + workbox-core "^5.1.4" + +workbox-range-requests@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" + integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== + dependencies: + workbox-core "^5.1.4" + +workbox-routing@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" + integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== + dependencies: + workbox-core "^5.1.4" + +workbox-strategies@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" + integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-streams@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" + integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-sw@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" + integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== + +workbox-webpack-plugin@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" + integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== + dependencies: + "@babel/runtime" "^7.5.5" + fast-json-stable-stringify "^2.0.0" + source-map-url "^0.4.0" + upath "^1.1.2" + webpack-sources "^1.3.0" + workbox-build "^5.1.4" + +workbox-window@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" + integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== + dependencies: + workbox-core "^5.1.4" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.2.3: + version "7.4.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" + integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/node_modules/.bin/create-react-app b/node_modules/.bin/create-react-app new file mode 100644 index 0000000000..934abf4788 --- /dev/null +++ b/node_modules/.bin/create-react-app @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../create-react-app/index.js" "$@" + ret=$? +else + node "$basedir/../create-react-app/index.js" "$@" + ret=$? +fi +exit $ret diff --git a/node_modules/.bin/create-react-app.cmd b/node_modules/.bin/create-react-app.cmd new file mode 100644 index 0000000000..60c7a69618 --- /dev/null +++ b/node_modules/.bin/create-react-app.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\create-react-app\index.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\create-react-app\index.js" %* +) \ No newline at end of file diff --git a/node_modules/.bin/envinfo b/node_modules/.bin/envinfo new file mode 100644 index 0000000000..2421663e05 --- /dev/null +++ b/node_modules/.bin/envinfo @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../envinfo/dist/cli.js" "$@" + ret=$? +else + node "$basedir/../envinfo/dist/cli.js" "$@" + ret=$? +fi +exit $ret diff --git a/node_modules/.bin/envinfo.cmd b/node_modules/.bin/envinfo.cmd new file mode 100644 index 0000000000..272c18ba0b --- /dev/null +++ b/node_modules/.bin/envinfo.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\envinfo\dist\cli.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\envinfo\dist\cli.js" %* +) \ No newline at end of file diff --git a/node_modules/.bin/mkdirp b/node_modules/.bin/mkdirp new file mode 100644 index 0000000000..4b0046722f --- /dev/null +++ b/node_modules/.bin/mkdirp @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@" + ret=$? +else + node "$basedir/../mkdirp/bin/cmd.js" "$@" + ret=$? +fi +exit $ret diff --git a/node_modules/.bin/mkdirp.cmd b/node_modules/.bin/mkdirp.cmd new file mode 100644 index 0000000000..0d2cdd7c48 --- /dev/null +++ b/node_modules/.bin/mkdirp.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\mkdirp\bin\cmd.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\mkdirp\bin\cmd.js" %* +) \ No newline at end of file diff --git a/node_modules/.bin/node-which b/node_modules/.bin/node-which new file mode 100644 index 0000000000..645ab6c6a8 --- /dev/null +++ b/node_modules/.bin/node-which @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../which/bin/node-which" "$@" + ret=$? +else + node "$basedir/../which/bin/node-which" "$@" + ret=$? +fi +exit $ret diff --git a/node_modules/.bin/node-which.cmd b/node_modules/.bin/node-which.cmd new file mode 100644 index 0000000000..9985519159 --- /dev/null +++ b/node_modules/.bin/node-which.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\which\bin\node-which" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\which\bin\node-which" %* +) \ No newline at end of file diff --git a/node_modules/.bin/rimraf b/node_modules/.bin/rimraf new file mode 100644 index 0000000000..3cebd6e8ff --- /dev/null +++ b/node_modules/.bin/rimraf @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../rimraf/bin.js" "$@" + ret=$? +else + node "$basedir/../rimraf/bin.js" "$@" + ret=$? +fi +exit $ret diff --git a/node_modules/.bin/rimraf.cmd b/node_modules/.bin/rimraf.cmd new file mode 100644 index 0000000000..9333ec64e1 --- /dev/null +++ b/node_modules/.bin/rimraf.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\rimraf\bin.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\rimraf\bin.js" %* +) \ No newline at end of file diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver new file mode 100644 index 0000000000..6f6e6c7f8f --- /dev/null +++ b/node_modules/.bin/semver @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../semver/bin/semver.js" "$@" + ret=$? +else + node "$basedir/../semver/bin/semver.js" "$@" + ret=$? +fi +exit $ret diff --git a/node_modules/.bin/semver.cmd b/node_modules/.bin/semver.cmd new file mode 100644 index 0000000000..152bc92316 --- /dev/null +++ b/node_modules/.bin/semver.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\semver\bin\semver.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\semver\bin\semver.js" %* +) \ No newline at end of file diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 0000000000..b2210edb02 --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,107 @@ +{ + "systemParams": "win32-x64-83", + "modulesFolders": [ + "node_modules" + ], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [ + "create-react-app@^4.0.3", + "src@^1.1.2" + ], + "lockfileEntries": { + "@node-redis/client@^1.0.0": "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.0.tgz#25f6773c3a6997367772dc4d0eacd6e954063490", + "@node-redis/json@^1.0.0": "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.0.tgz#11ba5882ac1f3226a8042f5de318c94bad520802", + "@node-redis/search@^1.0.0": "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.0.tgz#3926c5cb0276cfa2d0ed6a92fd654743ee4ef188", + "ansi-styles@^4.1.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937", + "at-least-node@^1.0.0": "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2", + "balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee", + "block-stream@*": "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a", + "brace-expansion@^1.1.7": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd", + "buffer-from@^0.1.1": "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0", + "builtins@^1.0.3": "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88", + "chalk@4.1.0": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a", + "cluster-key-slot@1.1.0": "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d", + "color-convert@^2.0.1": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3", + "color-name@~1.1.4": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2", + "commander@4.1.1": "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068", + "concat-map@0.0.1": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b", + "core-util-is@~1.0.0": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85", + "create-react-app@^4.0.3": "https://registry.yarnpkg.com/create-react-app/-/create-react-app-4.0.3.tgz#7220aa0837308f63fe0e56e65867f0bb2b6786de", + "cross-spawn@7.0.3": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6", + "debug@^2.2.0": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", + "duplexer2@~0.0.2": "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db", + "envinfo@7.7.3": "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc", + "fs-extra@9.0.1": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc", + "fs.realpath@^1.0.0": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f", + "fstream-ignore@^1.0.5": "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105", + "fstream@^1.0.0": "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045", + "fstream@^1.0.10": "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045", + "fstream@^1.0.12": "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045", + "generic-pool@3.8.2": "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.8.2.tgz#aab4f280adb522fdfbdc5e5b64d718d3683f04e9", + "glob@^7.1.3": "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023", + "graceful-fs@^4.1.2": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a", + "graceful-fs@^4.1.6": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a", + "graceful-fs@^4.2.0": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a", + "has-flag@^4.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b", + "hyperquest@2.1.3": "https://registry.yarnpkg.com/hyperquest/-/hyperquest-2.1.3.tgz#523127d7a343181b40bf324e231d2576edf52633", + "inflight@^1.0.4": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9", + "inherits@2": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "inherits@~2.0.0": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "inherits@~2.0.1": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "inherits@~2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "isarray@0.0.1": "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf", + "isarray@~1.0.0": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11", + "isexe@^2.0.0": "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10", + "jsonfile@^6.0.1": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae", + "kleur@^3.0.3": "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e", + "minimatch@^3.0.0": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083", + "minimatch@^3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083", + "minimist@^1.2.5": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602", + "mkdirp@>=0.5 0": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def", + "ms@2.0.0": "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8", + "once@^1.3.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", + "once@^1.3.3": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", + "path-is-absolute@^1.0.0": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f", + "path-key@^3.1.0": "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375", + "process-nextick-args@~2.0.0": "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2", + "prompts@2.4.0": "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7", + "readable-stream@>=1.0.33-1 <1.1.0-0": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c", + "readable-stream@^2.1.4": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", + "readable-stream@~1.1.9": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9", + "redis-errors@^1.0.0": "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad", + "redis-parser@3.0.0": "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4", + "redis-url@~0.2.0": "https://registry.yarnpkg.com/redis-url/-/redis-url-0.2.0.tgz#1b7a2daccc3ea8264b1fb656c0d901d9ca9c5470", + "redis@>= 0.0.1": "https://registry.yarnpkg.com/redis/-/redis-4.0.0.tgz#faefb8f156c231cacdd7b0ea854d91e92d3ea7d4", + "rimraf@2": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec", + "rimraf@^2.5.1": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec", + "rimraf@^3.0.0": "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a", + "safe-buffer@~5.1.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", + "safe-buffer@~5.1.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", + "semver@7.3.2": "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938", + "shebang-command@^2.0.0": "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea", + "shebang-regex@^3.0.0": "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172", + "sisteransi@^1.0.5": "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed", + "src@^1.1.2": "https://registry.yarnpkg.com/src/-/src-1.1.2.tgz#78abdd1c08caca26cc6cf45bd580b56d93acfb7f", + "string_decoder@~0.10.x": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94", + "string_decoder@~1.1.1": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8", + "supports-color@^7.1.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da", + "tar-pack@3.4.1": "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f", + "tar@^2.2.1": "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40", + "through2@~0.6.3": "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48", + "tmp@0.2.1": "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14", + "uid-number@^0.0.6": "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81", + "underscore@~1.6.0": "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8", + "universalify@^1.0.0": "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d", + "universalify@^2.0.0": "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717", + "util-deprecate@~1.0.1": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", + "uuid@~1.4.1": "https://registry.yarnpkg.com/uuid/-/uuid-1.4.2.tgz#453019f686966a6df83cdc5244e7c990ecc332fc", + "validate-npm-package-name@3.0.0": "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e", + "which@^2.0.1": "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1", + "wrappy@1": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f", + "xtend@>=4.0.0 <4.1.0-0": "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54", + "yallist@4.0.0": "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + }, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/node_modules/@node-redis/client/CHANGELOG.md b/node_modules/@node-redis/client/CHANGELOG.md new file mode 100644 index 0000000000..39ea947b06 --- /dev/null +++ b/node_modules/@node-redis/client/CHANGELOG.md @@ -0,0 +1,926 @@ +# Changelog + +## v4.0.0 - 24 Nov, 2021 + +This version is a major change and refactor, adding modern JavaScript capabilities and multiple breaking changes. See the [migration guide](../../docs/v3-to-v4.md) for tips on how to upgrade. + +### Breaking Changes + +- All functions return Promises by default +- Dropped support for Node.js 10.x, the minimum supported Node.js version is now 12.x +- `createClient` takes new and different arguments +- The `prefix`, `rename_commands` configuration options to `createClient` have been removed +- The `enable_offline_queue` configuration option is removed, executing commands on a closed client (without calling `.connect()` or after calling `.disconnect()`) will reject immediately +- Login credentials are no longer saved when using `.auth()` directly + +### Features + +- Added support for Promises +- Added built-in TypeScript declaration files enabling code completion +- Added support for [clustering](../../README.md#cluster) +- Added idiomatic arguments and responses to [Redis commands](../../README.md#redis-commands) +- Added full support for [Lua Scripts](../../README.md#lua-scripts) +- Added support for [SCAN iterators](../../README.md#scan-iterator) +- Added the ability to extend Node Redis with Redis Module commands + +## v3.1.2 + +### Fixes + +- Exclude unnecessary files from tarball + +## v3.1.1 + +### Enhancements + +- Upgrade node and dependencies + +### Fixes + +- Fix a potential exponential regex in monitor mode + +## v3.1.0 - 31 Mar, 2021 + +### Enhancements + +- Upgrade node and dependencies and redis-commands to support Redis 6 +- Add support for Redis 6 `auth pass [user]` + +## v3.0.0 - 09 Feb, 2020 + +This version is mainly a release to distribute all the unreleased changes on master since 2017 and additionally removes +a lot of old deprecated features and old internals in preparation for an upcoming modernization refactor (v4). + +### Breaking Changes + +- Dropped support for Node.js < 6 +- Dropped support for `hiredis` (no longer required) +- Removed previously deprecated `drain` event +- Removed previously deprecated `idle` event +- Removed previously deprecated `parser` option +- Removed previously deprecated `max_delay` option +- Removed previously deprecated `max_attempts` option +- Removed previously deprecated `socket_no_delay` option + +### Bug Fixes + +- Removed development files from published package (#1370) +- Duplicate function now allows db param to be passed (#1311) + +### Features + +- Upgraded to latest `redis-commands` package +- Upgraded to latest `redis-parser` package, v3.0.0, which brings performance improvements +- Replaced `double-ended-queue` with `denque`, which brings performance improvements +- Add timestamps to debug traces +- Add `socket_initial_delay` option for `socket.setKeepAlive` (#1396) +- Add support for `rediss` protocol in url (#1282) + +## v2.8.0 - 31 Jul, 2017 + +Features + +- Accept UPPER_CASE commands in send_command +- Add arbitrary commands to the prototype by using `Redis.addCommand(name)` + +Bugfixes + +- Fixed not always copying subscribe unsubscribe arguments +- Fixed emitting internal errors while reconnecting with auth +- Fixed crashing with invalid url option + +## v2.7.1 - 14 Mar, 2017 + +Bugfixes + +- Fixed monitor mode not working in combination with IPv6 (2.6.0 regression) + +## v2.7.0 - 11 Mar, 2017 + +Features + +- All returned errors are from now a subclass of `RedisError`. + +Bugfixes + +- Fixed rename_commands not accepting `null` as value +- Fixed `AbortError`s and `AggregateError`s not showing the error message in the stack trace + +## v2.6.5 - 15 Jan, 2017 + +Bugfixes + +- Fixed parser not being reset in case the redis connection closed ASAP for overcoming of output buffer limits +- Fixed parser reset if (p)message_buffer listener is attached + +## v2.6.4 - 12 Jan, 2017 + +Bugfixes + +- Fixed monitor mode not working in combination with IPv6, sockets or lua scripts (2.6.0 regression) + +## v2.6.3 - 31 Oct, 2016 + +Bugfixes + +- Do not change the tls setting to camel_case +- Fix domain handling in combination with the offline queue (2.5.3 regression) + +## v2.6.2 - 16 Jun, 2016 + +Bugfixes + +- Fixed individual callbacks of a transaction not being called (2.6.0 regression) + +## v2.6.1 - 02 Jun, 2016 + +Bugfixes + +- Fixed invalid function name being exported + +## v2.6.0 - 01 Jun, 2016 + +In addition to the pre-releases the following changes exist in v.2.6.0: + +Features + +- Updated [redis-parser](https://github.com/NodeRedis/node-redis-parser) dependency ([changelog](https://github.com/NodeRedis/node-redis-parser/releases/tag/v.2.0.0)) +- The JS parser is from now on the new default as it is a lot faster than the hiredis parser +- This is no BC as there is no changed behavior for the user at all but just a performance improvement. Explicitly requireing the Hiredis parser is still possible. +- Added name property to all Redis functions (Node.js >= 4.0) +- Improved stack traces in development and debug mode + +Bugfixes + +- Reverted support for `__proto__` (v.2.6.0-2) to prevent and breaking change + +Deprecations + +- The `parser` option is deprecated and should be removed. The built-in Javascript parser is a lot faster than the hiredis parser and has more features + +## v2.6.0-2 - 29 Apr, 2016 + +Features + +- Added support for the new [CLIENT REPLY ON|OFF|SKIP](http://redis.io/commands/client-reply) command (Redis v.3.2) +- Added support for camelCase +- The Node.js landscape default is to use camelCase. node_redis is a bit out of the box here + but from now on it is possible to use both, just as you prefer! +- If there's any documented variable missing as camelCased, please open a issue for it +- Improve error handling significantly +- Only emit an error if the error has not already been handled in a callback +- Improved unspecific error messages e.g. "Connection gone from end / close event" +- Added `args` to command errors to improve identification of the error +- Added origin to errors if there's e.g. a connection error +- Added ReplyError class. All Redis errors are from now on going to be of that class +- Added AbortError class. A subclass of AbortError. All unresolved and by node_redis rejected commands are from now on of that class +- Added AggregateError class. If a unresolved and by node_redis rejected command has no callback and + this applies to more than a single command, the errors for the commands without callback are aggregated + to a single error that is emitted in debug_mode in that case. +- Added `message_buffer` / `pmessage_buffer` events. That event is always going to emit a buffer +- Listening to the `message` event at the same time is always going to return the same message as string +- Added callback option to the duplicate function +- Added support for `__proto__` and other reserved keywords as hgetall field +- Updated [redis-commands](https://github.com/NodeRedis/redis-commands) dependency ([changelog](https://github.com/NodeRedis/redis-commands/releases/tag/v.1.2.0)) + +Bugfixes + +- Fixed v.2.5.0 auth command regression (under special circumstances a reconnect would not authenticate properly) +- Fixed v.2.6.0-0 pub sub mode and quit command regressions: +- Entering pub sub mode not working if a earlier called and still running command returned an error +- Unsubscribe callback not called if unsubscribing from all channels and resubscribing right away +- Quit command resulting in an error in some cases +- Fixed special handled functions in batch and multi context not working the same as without (e.g. select and info) +- Be aware that not all commands work in combination with transactions but they all work with batch +- Fixed address always set to 127.0.0.1:6379 in case host / port is set in the `tls` options instead of the general options + +## v2.6.0-1 - 01 Apr, 2016 + +A second pre-release with further fixes. This is likely going to be released as 2.6.0 stable without further changes. + +Features + +- Added type validations for client.send_command arguments + +Bugfixes + +- Fixed client.send_command not working properly with every command and every option +- Fixed pub sub mode unsubscribing from all channels in combination with the new `string_numbers` option crashing +- Fixed pub sub mode unsubscribing from all channels not respected while reconnecting +- Fixed pub sub mode events in combination with the `string_numbers` option emitting the number of channels not as number + +## v2.6.0-0 - 27 Mar, 2016 + +This is mainly a very important bug fix release with some smaller features. + +Features + +- Monitor and pub sub mode now work together with the offline queue +- All commands that were send after a connection loss are now going to be send after reconnecting +- Activating monitor mode does now work together with arbitrary commands including pub sub mode +- Pub sub mode is completely rewritten and all known issues fixed +- Added `string_numbers` option to get back strings instead of numbers +- Quit command is from now on always going to end the connection properly + +Bugfixes + +- Fixed calling monitor command while other commands are still running +- Fixed monitor and pub sub mode not working together +- Fixed monitor mode not working in combination with the offline queue +- Fixed pub sub mode not working in combination with the offline queue +- Fixed pub sub mode resubscribing not working with non utf8 buffer channels +- Fixed pub sub mode crashing if calling unsubscribe / subscribe in various combinations +- Fixed pub sub mode emitting unsubscribe even if no channels were unsubscribed +- Fixed pub sub mode emitting a message without a message published +- Fixed quit command not ending the connection and resulting in further reconnection if called while reconnecting + +The quit command did not end connections earlier if the connection was down at that time and this could have +lead to strange situations, therefor this was fixed to end the connection right away in those cases. + +## v2.5.3 - 21 Mar, 2016 + +Bugfixes + +- Revert throwing on invalid data types and print a warning instead + +## v2.5.2 - 16 Mar, 2016 + +Bugfixes + +- Fixed breaking changes against Redis 2.4 introduced in 2.5.0 / 2.5.1 + +## v2.5.1 - 15 Mar, 2016 + +Bugfixes + +- Fixed info command not working anymore with optional section argument + +## v2.5.0 - 15 Mar, 2016 + +Same changelog as the pre-release + +## v2.5.0-1 - 07 Mar, 2016 + +This is a big release with some substantial underlining changes. Therefor this is released as a pre-release and I encourage anyone who's able to, to test this out. + +It took way to long to release this one and the next release cycles will be shorter again. + +This release is also going to deprecate a couple things to prepare for a future v.3 (it'll still take a while to v.3). + +Features + +- The parsers moved into the [redis-parser](https://github.com/NodeRedis/node-redis-parser) module and will be maintained in there from now on +- Improve js parser speed significantly for big SUNION/SINTER/LRANGE/ZRANGE +- Improve redis-url parsing to also accept the database-number and options as query parameters as suggested in [IANA](http://www.iana.org/assignments/uri-schemes/prov/redis) +- Added a `retry_unfulfilled_commands` option +- Setting this to 'true' results in retrying all commands that were not fulfilled on a connection loss after the reconnect. Use with caution +- Added a `db` option to select the database while connecting (this is [not recommended](https://groups.google.com/forum/#!topic/redis-db/vS5wX8X4Cjg)) +- Added a `password` option as alias for auth_pass +- The client.server_info is from now on updated while using the info command +- Gracefuly handle redis protocol errors from now on +- Added a `warning` emitter that receives node_redis warnings like auth not required and deprecation messages +- Added a `retry_strategy` option that replaces all reconnect options +- The reconnecting event from now on also receives: +- The error message why the reconnect happened (params.error) +- The amount of times the client was connected (params.times_connected) +- The total reconnecting time since the last time connected (params.total_retry_time) +- Always respect the command execution order no matter if the reply could be returned sync or not (former exceptions: [#937](https://github.com/NodeRedis/node_redis/issues/937#issuecomment-167525939)) +- redis.createClient is now checking input values stricter and detects more faulty input +- Started refactoring internals into individual modules +- Pipelining speed improvements + +Bugfixes + +- Fixed explicit undefined as a command callback in a multi context +- Fixed hmset failing to detect the first key as buffer or date if the key is of that type +- Fixed do not run toString on an array argument and throw a "invalid data" error instead +- This is not considered as breaking change, as this is likely a error in your code and if you want to have such a behavior you should handle this beforehand +- The same applies to Map / Set and individual Object types +- Fixed redis url not accepting the protocol being omitted or protocols other than the redis protocol for convenience +- Fixed parsing the db keyspace even if the first database does not begin with a zero +- Fixed handling of errors occurring while receiving pub sub messages +- Fixed huge string pipelines crashing NodeJS (Pipeline size above 256mb) +- Fixed rename_commands and prefix option not working together +- Fixed ready being emitted to early in case a slave is still syncing / master down + +Deprecations + +- Using any command with a argument being set to null or undefined is deprecated +- From v.3.0.0 on using a command with such an argument will return an error instead +- If you want to keep the old behavior please use a precheck in your code that converts the arguments to a string. +- Using SET or SETEX with a undefined or null value will from now on also result in converting the value to "null" / "undefined" to have a consistent behavior. This is not considered as breaking change, as it returned an error earlier. +- Using .end(flush) without the flush parameter is deprecated and the flush parameter should explicitly be used +- From v.3.0.0 on using .end without flush will result in an error +- Using .end without flush means that any command that did not yet return is going to silently fail. Therefor this is considered harmful and you should explicitly silence such errors if you are sure you want this +- Depending on the return value of a command to detect the backpressure is deprecated +- From version 3.0.0 on node_redis might not return true / false as a return value anymore. Please rely on client.should_buffer instead +- The `socket_nodelay` option is deprecated and will be removed in v.3.0.0 +- If you want to buffer commands you should use [.batch or .multi](./README.md) instead. This is necessary to reduce the amount of different options and this is very likely reducing your throughput if set to false. +- If you are sure you want to activate the NAGLE algorithm you can still activate it by using client.stream.setNoDelay(false) +- The `max_attempts` option is deprecated and will be removed in v.3.0.0. Please use the `retry_strategy` instead +- The `retry_max_delay` option is deprecated and will be removed in v.3.0.0. Please use the `retry_strategy` instead +- The drain event is deprecated and will be removed in v.3.0.0. Please listen to the stream drain event instead +- The idle event is deprecated and will likely be removed in v.3.0.0. If you rely on this feature please open a new ticket in node_redis with your use case +- Redis < v. 2.6 is not officially supported anymore and might not work in all cases. Please update to a newer redis version as it is not possible to test for these old versions +- Removed non documented command syntax (adding the callback to an arguments array instead of passing it as individual argument) + +## v2.4.2 - 27 Nov, 2015 + +Bugfixes + +- Fixed not emitting ready after reconnect with disable_resubscribing ([@maxgalbu](https://github.com/maxgalbu)) + +## v2.4.1 - 25 Nov, 2015 + +Bugfixes + +- Fixed a js parser regression introduced in 2.4.0 ([@BridgeAR](https://github.com/BridgeAR)) + +## v2.4.0 - 25 Nov, 2015 + +Features + +- Added `tls` option to initiate a connection to a redis server behind a TLS proxy. Thanks ([@paddybyers](https://github.com/paddybyers)) +- Added `prefix` option to auto key prefix any command with the provided prefix ([@luin](https://github.com/luin) & [@BridgeAR](https://github.com/BridgeAR)) +- Added `url` option to pass the connection url with the options object ([@BridgeAR](https://github.com/BridgeAR)) +- Added `client.duplicate([options])` to duplicate the current client and return a new one with the same options ([@BridgeAR](https://github.com/BridgeAR)) +- Improve performance by up to 20% on almost all use cases ([@BridgeAR](https://github.com/BridgeAR)) + +Bugfixes + +- Fixed js parser handling big values slow ([@BridgeAR](https://github.com/BridgeAR)) +- The speed is now on par with the hiredis parser. + +## v2.3.1 - 18 Nov, 2015 + +Bugfixes + +- Fixed saving buffers with charsets other than utf-8 while using multi ([@BridgeAR](https://github.com/BridgeAR)) +- Fixed js parser handling big values very slow ([@BridgeAR](https://github.com/BridgeAR)) +- The speed is up to ~500% faster than before but still up to ~50% slower than the hiredis parser. + +## v2.3.0 - 30 Oct, 2015 + +Features + +- Improve speed further for: ([@BridgeAR](https://github.com/BridgeAR)) +- saving big strings (up to +300%) +- using .multi / .batch (up to +50% / on Node.js 0.10.x +300%) +- saving small buffers +- Increased coverage to 99% ([@BridgeAR](https://github.com/BridgeAR)) +- Refactored manual backpressure control ([@BridgeAR](https://github.com/BridgeAR)) +- Removed the high water mark and low water mark. Such a mechanism should be implemented by a user instead +- The `drain` event is from now on only emitted if the stream really had to buffer +- Reduced the default connect_timeout to be one hour instead of 24h ([@BridgeAR](https://github.com/BridgeAR)) +- Added .path to redis.createClient(options); ([@BridgeAR](https://github.com/BridgeAR)) +- Ignore info command, if not available on server ([@ivanB1975](https://github.com/ivanB1975)) + +Bugfixes + +- Fixed a js parser error that could result in a timeout ([@BridgeAR](https://github.com/BridgeAR)) +- Fixed .multi / .batch used with Node.js 0.10.x not working properly after a reconnect ([@BridgeAR](https://github.com/BridgeAR)) +- Fixed fired but not yet returned commands not being rejected after a connection loss ([@BridgeAR](https://github.com/BridgeAR)) +- Fixed connect_timeout not respected if no connection has ever been established ([@gagle](https://github.com/gagle) & [@benjie](https://github.com/benjie)) +- Fixed return_buffers in pub sub mode ([@komachi](https://github.com/komachi)) + +## v2.2.5 - 18 Oct, 2015 + +Bugfixes + +- Fixed undefined options passed to a new instance not accepted (possible with individual .createClient functions) ([@BridgeAR](https://github.com/BridgeAR)) + +## v2.2.4 - 17 Oct, 2015 + +Bugfixes + +- Fixed unspecific error message for unresolvable commands ([@BridgeAR](https://github.com/BridgeAR)) +- Fixed not allowed command error in pubsub mode not being returned in a provided callback ([@BridgeAR](https://github.com/BridgeAR)) +- Fixed to many commands forbidden in pub sub mode ([@BridgeAR](https://github.com/BridgeAR)) +- Fixed mutation of the arguments array passed to .multi / .batch constructor ([@BridgeAR](https://github.com/BridgeAR)) +- Fixed mutation of the options object passed to createClient ([@BridgeAR](https://github.com/BridgeAR)) +- Fixed error callback in .multi not called if connection in broken mode ([@BridgeAR](https://github.com/BridgeAR)) + +## v2.2.3 - 14 Oct, 2015 + +Bugfixes + +- Fixed multi not being executed on Node 0.10.x if node_redis not yet ready ([@BridgeAR](https://github.com/BridgeAR)) + +## v2.2.2 - 14 Oct, 2015 + +Bugfixes + +- Fixed regular commands not being executed after a .multi until .exec was called ([@BridgeAR](https://github.com/BridgeAR)) + +## v2.2.1 - 12 Oct, 2015 + +No code change + +## v2.2.0 - 12 Oct, 2015 - The peregrino falcon + +The peregrino falcon is the fasted bird on earth and this is what this release is all about: Increased performance for heavy usage by up to **400%** [sic!] and increased overall performance for any command as well. Please check the benchmarks in the [README.md](README.md) for further details. + +Features + +- Added rename_commands options to handle renamed commands from the redis config ([@digmxl](https://github.com/digmxl) & [@BridgeAR](https://github.com/BridgeAR)) +- Added disable_resubscribing option to prevent a client from resubscribing after reconnecting ([@BridgeAR](https://github.com/BridgeAR)) +- Increased performance ([@BridgeAR](https://github.com/BridgeAR)) +- exchanging built in queue with [@petkaantonov](https://github.com/petkaantonov)'s [double-ended queue](https://github.com/petkaantonov/deque) +- prevent polymorphism +- optimize statements +- Added _.batch_ command, similar to .multi but without transaction ([@BridgeAR](https://github.com/BridgeAR)) +- Improved pipelining to minimize the [RTT](http://redis.io/topics/pipelining) further ([@BridgeAR](https://github.com/BridgeAR)) + +Bugfixes + +- Fixed a javascript parser regression introduced in 2.0 that could result in timeouts on high load. ([@BridgeAR](https://github.com/BridgeAR)) +- I was not able to write a regression test for this, since the error seems to only occur under heavy load with special conditions. So please have a look for timeouts with the js parser, if you use it and report all issues and switch to the hiredis parser in the meanwhile. If you're able to come up with a reproducable test case, this would be even better :) +- Fixed should_buffer boolean for .exec, .select and .auth commands not being returned and fix a couple special conditions ([@BridgeAR](https://github.com/BridgeAR)) + +If you do not rely on transactions but want to reduce the RTT you can use .batch from now on. It'll behave just the same as .multi but it does not have any transaction and therefor won't roll back any failed commands.
+Both .multi and .batch are from now on going to cache the commands and release them while calling .exec. + +Please consider using .batch instead of looping through a lot of commands one by one. This will significantly improve your performance. + +Here are some stats compared to ioredis 1.9.1 (Lenovo T450s i7-5600U): + + simple set + 82,496 op/s » ioredis + 112,617 op/s » node_redis + + simple get + 82,015 op/s » ioredis + 105,701 op/s » node_redis + + simple get with pipeline + 10,233 op/s » ioredis + 26,541 op/s » node_redis (using .batch) + + lrange 100 + 7,321 op/s » ioredis + 26,155 op/s » node_redis + + publish + 90,524 op/s » ioredis + 112,823 op/s » node_redis + + subscribe + 43,783 op/s » ioredis + 61,889 op/s » node_redis + +To conclude: we can proudly say that node_redis is very likely outperforming any other node redis client. + +Known issues + +- The pub sub system has some flaws and those will be addressed in the next minor release + +## v2.1.0 - Oct 02, 2015 + +Features: + +- Addded optional flush parameter to `.end`. If set to true, commands fired after using .end are going to be rejected instead of being ignored. (@crispy1989) +- Addded: host and port can now be provided in a single options object. E.g. redis.createClient({ host: 'localhost', port: 1337, max_attempts: 5 }); (@BridgeAR) +- Speedup common cases (@BridgeAR) + +Bugfixes: + +- Fix argument mutation while using the array notation with the multi constructor (@BridgeAR) +- Fix multi.hmset key not being type converted if used with an object and key not being a string (@BridgeAR) +- Fix parser errors not being catched properly (@BridgeAR) +- Fix a crash that could occur if a redis server does not return the info command as usual #541 (@BridgeAR) +- Explicitly passing undefined as a callback statement will work again. E.g. client.publish('channel', 'message', undefined); (@BridgeAR) + +## v2.0.1 - Sep 24, 2015 + +Bugfixes: + +- Fix argument mutation while using the array notation in combination with keys / callbacks ([#866](.)). (@BridgeAR) + +## v2.0.0 - Sep 21, 2015 + +This is the biggest release that node_redis had since it was released in 2010. A long list of outstanding bugs has been fixed, so we are very happy to present you redis 2.0 and we highly recommend updating as soon as possible. + +# What's new in 2.0 + +- Implemented a "connection is broken" mode if no connection could be established +- node_redis no longer throws under any circumstances, preventing it from terminating applications. +- Multi error handling is now working properly +- Consistent command behavior including multi +- Windows support +- Improved performance +- A lot of code cleanup +- Many bug fixes +- Better user support! + +## Features: + +- Added a "redis connection is broken" mode after reaching max connection attempts / exceeding connection timeout. (@BridgeAR) +- Added NODE_DEBUG=redis env to activate the debug_mode (@BridgeAR) +- Added a default connection timeout of 24h instead of never timing out as a default (@BridgeAR) +- Added: Network errors and other stream errors will from now on include the error code as `err.code` property (@BridgeAR) +- Added: Errors thrown by redis will now include the redis error code as `err.code` property. (@skeggse & @BridgeAR) +- Added: Errors thrown by node_redis will now include a `err.command` property for the command used (@BridgeAR) +- Added new commands and drop support for deprecated _substr_ (@BridgeAR) +- Added new possibilities how to provide the command arguments (@BridgeAR) +- The entries in the keyspace of the server_info is now an object instead of a string. (@SinisterLight & @BridgeAR) +- Small speedup here and there (e.g. by not using .toLowerCase() anymore) (@BridgeAR) +- Full windows support (@bcoe) +- Increased coverage by 10% and add a lot of tests to make sure everything works as it should. We now reached 97% :-) (@BridgeAR) +- Remove dead code, clean up and refactor very old chunks (@BridgeAR) +- Don't flush the offline queue if reconnecting (@BridgeAR) +- Emit all errors insteaf of throwing sometimes and sometimes emitting them (@BridgeAR) +- _auth_pass_ passwords are now checked to be a valid password (@jcppman & @BridgeAR) + +## Bug fixes: + +- Don't kill the app anymore by randomly throwing errors sync instead of emitting them (@BridgeAR) +- Don't catch user errors anymore occuring in callbacks (no try callback anymore & more fixes for the parser) (@BridgeAR) +- Early garbage collection of queued items (@dohse) +- Fix js parser returning errors as strings (@BridgeAR) +- Do not wrap errors into other errors (@BridgeAR) +- Authentication failures are now returned in the callback instead of being emitted (@BridgeAR) +- Fix a memory leak on reconnect (@rahar) +- Using `send_command` directly may now also be called without the args as stated in the [README.md](./README.md) (@BridgeAR) +- Fix the multi.exec error handling (@BridgeAR) +- Fix commands being inconsistent and behaving wrong (@BridgeAR) +- Channel names with spaces are now properly resubscribed after a reconnection (@pbihler) +- Do not try to reconnect after the connection timeout has been exceeded (@BridgeAR) +- Ensure the execution order is observed if using .eval (@BridgeAR) +- Fix commands not being rejected after calling .quit (@BridgeAR) +- Fix .auth calling the callback twice if already connected (@BridgeAR) +- Fix detect_buffers not working in pub sub mode and while monitoring (@BridgeAR) +- Fix channel names always being strings instead of buffers while return_buffers is true (@BridgeAR) +- Don't print any debug statements if not asked for (@BridgeAR) +- Fix a couple small other bugs + +## Breaking changes: + +1. redis.send_command commands have to be lower case from now on. This does only apply if you use `.send_command` directly instead of the convenient methods like `redis.command`. +2. Error messages have changed quite a bit. If you depend on a specific wording please check your application carfully. +3. Errors are from now on always either returned if a callback is present or emitted. They won't be thrown (neither sync, nor async). +4. The Multi error handling has changed a lot! + +- All errors are from now on errors instead of strings (this only applied to the js parser). +- If an error occurs while queueing the commands an EXECABORT error will be returned including the failed commands as `.errors` property instead of an array with errors. +- If an error occurs while executing the commands and that command has a callback it'll return the error as first parameter (`err, undefined` instead of `null, undefined`). +- All the errors occuring while executing the commands will stay in the result value as error instance (if you used the js parser before they would have been strings). Be aware that the transaction won't be aborted if those error occurr! +- If `multi.exec` does not have a callback and an EXECABORT error occurrs, it'll emit that error instead. + +5. If redis can't connect to your redis server it'll give up after a certain point of failures (either max connection attempts or connection timeout exceeded). If that is the case it'll emit an CONNECTION_BROKEN error. You'll have to initiate a new client to try again afterwards. +6. The offline queue is not flushed anymore on a reconnect. It'll stay until node_redis gives up trying to reach the server or until you close the connection. +7. Before this release node_redis catched user errors and threw them async back. This is not the case anymore! No user behavior of what so ever will be tracked or catched. +8. The keyspace of `redis.server_info` (db0...) is from now on an object instead of an string. + +NodeRedis also thanks @qdb, @tobek, @cvibhagool, @frewsxcv, @davidbanham, @serv, @vitaliylag, @chrishamant, @GamingCoder and all other contributors that I may have missed for their contributions! + +From now on we'll push new releases more frequently out and fix further long outstanding things and implement new features. + +
+ +## v1.0.0 - Aug 30, 2015 + +- Huge issue and pull-request cleanup. Thanks Blain! (@blainsmith) +- [#658](https://github.com/NodeRedis/node_redis/pull/658) Client now parses URL-format connection strings (e.g., redis://foo:pass@127.0.0.1:8080) (@kuwabarahiroshi) +- [#749](https://github.com/NodeRedis/node_redis/pull/749) Fix reconnection bug when client is in monitoring mode (@danielbprice) +- [#786](https://github.com/NodeRedis/node_redis/pull/786) Refactor createClient. Fixes #651 (@BridgeAR) +- [#793](https://github.com/NodeRedis/node_redis/pull/793) Refactor tests and improve test coverage (@erinspice, @bcoe) +- [#733](https://github.com/NodeRedis/node_redis/pull/733) Fixes detect_buffers functionality in the context of exec. Fixes #732, #263 (@raydog) +- [#785](https://github.com/NodeRedis/node_redis/pull/785) Tiny speedup by using 'use strict' (@BridgeAR) +- Fix extraneous error output due to pubsub tests (Mikael Kohlmyr) + +## v0.12.1 - Aug 10, 2014 + +- Fix IPv6/IPv4 family selection in node 0.11+ (Various) + +## v0.12.0 - Aug 9, 2014 + +- Fix unix socket support (Jack Tang) +- Improve createClient argument handling (Jack Tang) + +## v0.11.0 - Jul 10, 2014 + +- IPv6 Support. (Yann Stephan) +- Revert error emitting and go back to throwing errors. (Bryce Baril) +- Set socket_keepalive to prevent long-lived client timeouts. (mohit) +- Correctly reset retry timer. (ouotuo) +- Domains protection from bad user exit. (Jake Verbaten) +- Fix reconnection socket logic to prevent misqueued entries. (Iain Proctor) + +## v0.10.3 - May 22, 2014 + +- Update command list to match Redis 2.8.9 (Charles Feng) + +## v0.10.2 - May 18, 2014 + +- Better binary key handling for HGETALL. (Nick Apperson) +- Fix test not resetting `error` handler. (CrypticSwarm) +- Fix SELECT error semantics. (Bryan English) + +## v0.10.1 - February 17, 2014 + +- Skip plucking redis version from the INFO stream if INFO results weren't provided. (Robert Sköld) + +## v0.10.0 - December 21, 2013 + +- Instead of throwing errors asynchronously, emit errors on client. (Bryce Baril) + +## v0.9.2 - December 15, 2013 + +- Regenerate commands for new 2.8.x Redis commands. (Marek Ventur) +- Correctly time reconnect counts when using 'auth'. (William Hockey) + +## v0.9.1 - November 23, 2013 + +- Allow hmset to accept numeric keys. (Alex Stokes) +- Fix TypeError for multiple MULTI/EXEC errors. (Kwangsu Kim) + +## v0.9.0 - October 17, 2013 + +- Domains support. (Forrest L Norvell) + +## v0.8.6 - October 2, 2013 + +- If error is already an Error, don't wrap it in another Error. (Mathieu M-Gosselin) +- Fix retry delay logic (Ian Babrou) +- Return Errors instead of strings where Errors are expected (Ian Babrou) +- Add experimental `.unref()` method to RedisClient (Bryce Baril / Olivier Lalonde) +- Strengthen checking of reply to prevent conflating "message" or "pmessage" fields with pub_sub replies. (Bryce Baril) + +## v0.8.5 - September 26, 2013 + +- Add `auth_pass` option to connect and immediately authenticate (Henrik Peinar) + +## v0.8.4 - June 24, 2013 + +Many contributed features and fixes, including: + +- Ignore password set if not needed. (jbergknoff) +- Improved compatibility with 0.10.X for tests and client.end() (Bryce Baril) +- Protect connection retries from application exceptions. (Amos Barreto) +- Better exception handling for Multi/Exec (Thanasis Polychronakis) +- Renamed pubsub mode to subscriber mode (Luke Plaster) +- Treat SREM like SADD when passed an array (Martin Ciparelli) +- Fix empty unsub/punsub TypeError (Jeff Barczewski) +- Only attempt to run a callback if it one was provided (jifeng) + +## v0.8.3 - April 09, 2013 + +Many contributed features and fixes, including: + +- Fix some tests for Node.js version 0.9.x+ changes (Roman Ivanilov) +- Fix error when commands submitted after idle event handler (roamm) +- Bypass Redis for no-op SET/SETEX commands (jifeng) +- Fix HMGET + detect_buffers (Joffrey F) +- Fix CLIENT LOAD functionality (Jonas Dohse) +- Add percentage outputs to diff_multi_bench_output.js (Bryce Baril) +- Add retry_max_delay option (Tomasz Durka) +- Fix parser off-by-one errors with nested multi-bulk replies (Bryce Baril) +- Prevent parser from sinking application-side exceptions (Bryce Baril) +- Fix parser incorrect buffer skip when parsing multi-bulk errors (Bryce Baril) +- Reverted previous change with throwing on non-string values with HMSET (David Trejo) +- Fix command queue sync issue when using pubsub (Tom Leach) +- Fix compatibility with two-word Redis commands (Jonas Dohse) +- Add EVAL with array syntax (dmoena) +- Fix tests due to Redis reply order changes in 2.6.5+ (Bryce Baril) +- Added a test for the SLOWLOG command (Nitesh Sinha) +- Fix SMEMBERS order dependency in test broken by Redis changes (Garrett Johnson) +- Update commands for new Redis commands (David Trejo) +- Prevent exception from SELECT on subscriber reconnection (roamm) + +## v0.8.2 - November 11, 2012 + +Another version bump because 0.8.1 didn't get applied properly for some mysterious reason. +Sorry about that. + +Changed name of "faster" parser to "javascript". + +## v0.8.1 - September 11, 2012 + +Important bug fix for null responses (Jerry Sievert) + +## v0.8.0 - September 10, 2012 + +Many contributed features and fixes, including: + +- Pure JavaScript reply parser that is usually faster than hiredis (Jerry Sievert) +- Remove hiredis as optionalDependency from package.json. It still works if you want it. +- Restore client state on reconnect, including select, subscribe, and monitor. (Ignacio Burgueño) +- Fix idle event (Trae Robrock) +- Many documentation improvements and bug fixes (David Trejo) + +## v0.7.2 - April 29, 2012 + +Many contributed fixes. Thank you, contributors. + +- [GH-190] - pub/sub mode fix (Brian Noguchi) +- [GH-165] - parser selection fix (TEHEK) +- numerous documentation and examples updates +- auth errors emit Errors instead of Strings (David Trejo) + +## v0.7.1 - November 15, 2011 + +Fix regression in reconnect logic. + +Very much need automated tests for reconnection and queue logic. + +## v0.7.0 - November 14, 2011 + +Many contributed fixes. Thanks everybody. + +- [GH-127] - properly re-initialize parser on reconnect +- [GH-136] - handle passing undefined as callback (Ian Babrou) +- [GH-139] - properly handle exceptions thrown in pub/sub event handlers (Felix Geisendörfer) +- [GH-141] - detect closing state on stream error (Felix Geisendörfer) +- [GH-142] - re-select database on reconnection (Jean-Hugues Pinson) +- [GH-146] - add sort example (Maksim Lin) + +Some more goodies: + +- Fix bugs with node 0.6 +- Performance improvements +- New version of `multi_bench.js` that tests more realistic scenarios +- [GH-140] - support optional callback for subscribe commands +- Properly flush and error out command queue when connection fails +- Initial work on reconnection thresholds + +## v0.6.7 - July 30, 2011 + +(accidentally skipped v0.6.6) + +Fix and test for [GH-123] + +Passing an Array as as the last argument should expand as users +expect. The old behavior was to coerce the arguments into Strings, +which did surprising things with Arrays. + +## v0.6.5 - July 6, 2011 + +Contributed changes: + +- Support SlowBuffers (Umair Siddique) +- Add Multi to exports (Louis-Philippe Perron) +- Fix for drain event calculation (Vladimir Dronnikov) + +Thanks! + +## v0.6.4 - June 30, 2011 + +Fix bug with optional callbacks for hmset. + +## v0.6.2 - June 30, 2011 + +Bugs fixed: + +- authentication retry while server is loading db (danmaz74) [GH-101] +- command arguments processing issue with arrays + +New features: + +- Auto update of new commands from redis.io (Dave Hoover) +- Performance improvements and backpressure controls. +- Commands now return the true/false value from the underlying socket write(s). +- Implement command_queue high water and low water for more better control of queueing. + +See `examples/backpressure_drain.js` for more information. + +## v0.6.1 - June 29, 2011 + +Add support and tests for Redis scripting through EXEC command. + +Bug fix for monitor mode. (forddg) + +Auto update of new commands from redis.io (Dave Hoover) + +## v0.6.0 - April 21, 2011 + +Lots of bugs fixed. + +- connection error did not properly trigger reconnection logic [GH-85] +- client.hmget(key, [val1, val2]) was not expanding properly [GH-66] +- client.quit() while in pub/sub mode would throw an error [GH-87] +- client.multi(['hmset', 'key', {foo: 'bar'}]) fails [GH-92] +- unsubscribe before subscribe would make things very confused [GH-88] +- Add BRPOPLPUSH [GH-79] + +## v0.5.11 - April 7, 2011 + +Added DISCARD + +I originally didn't think DISCARD would do anything here because of the clever MULTI interface, but somebody +pointed out to me that DISCARD can be used to flush the WATCH set. + +## v0.5.10 - April 6, 2011 + +Added HVALS + +## v0.5.9 - March 14, 2011 + +Fix bug with empty Array arguments - Andy Ray + +## v0.5.8 - March 14, 2011 + +Add `MONITOR` command and special monitor command reply parsing. + +## v0.5.7 - February 27, 2011 + +Add magical auth command. + +Authentication is now remembered by the client and will be automatically sent to the server +on every connection, including any reconnections. + +## v0.5.6 - February 22, 2011 + +Fix bug in ready check with `return_buffers` set to `true`. + +Thanks to Dean Mao and Austin Chau. + +## v0.5.5 - February 16, 2011 + +Add probe for server readiness. + +When a Redis server starts up, it might take a while to load the dataset into memory. +During this time, the server will accept connections, but will return errors for all non-INFO +commands. Now node_redis will send an INFO command whenever it connects to a server. +If the info command indicates that the server is not ready, the client will keep trying until +the server is ready. Once it is ready, the client will emit a "ready" event as well as the +"connect" event. The client will queue up all commands sent before the server is ready, just +like it did before. When the server is ready, all offline/non-ready commands will be replayed. +This should be backward compatible with previous versions. + +To disable this ready check behavior, set `options.no_ready_check` when creating the client. + +As a side effect of this change, the key/val params from the info command are available as +`client.server_options`. Further, the version string is decomposed into individual elements +in `client.server_options.versions`. + +## v0.5.4 - February 11, 2011 + +Fix excess memory consumption from Queue backing store. + +Thanks to Gustaf Sjöberg. + +## v0.5.3 - February 5, 2011 + +Fix multi/exec error reply callback logic. + +Thanks to Stella Laurenzo. + +## v0.5.2 - January 18, 2011 + +Fix bug where unhandled error replies confuse the parser. + +## v0.5.1 - January 18, 2011 + +Fix bug where subscribe commands would not handle redis-server startup error properly. + +## v0.5.0 - December 29, 2010 + +Some bug fixes: + +- An important bug fix in reconnection logic. Previously, reply callbacks would be invoked twice after + a reconnect. +- Changed error callback argument to be an actual Error object. + +New feature: + +- Add friendly syntax for HMSET using an object. + +## v0.4.1 - December 8, 2010 + +Remove warning about missing hiredis. You probably do want it though. + +## v0.4.0 - December 5, 2010 + +Support for multiple response parsers and hiredis C library from Pieter Noordhuis. +Return Strings instead of Buffers by default. +Empty nested mb reply bug fix. + +## v0.3.9 - November 30, 2010 + +Fix parser bug on failed EXECs. + +## v0.3.8 - November 10, 2010 + +Fix for null MULTI response when WATCH condition fails. + +## v0.3.7 - November 9, 2010 + +Add "drain" and "idle" events. + +## v0.3.6 - November 3, 2010 + +Add all known Redis commands from Redis master, even ones that are coming in 2.2 and beyond. + +Send a friendlier "error" event message on stream errors like connection refused / reset. + +## v0.3.5 - October 21, 2010 + +A few bug fixes. + +- Fixed bug with `nil` multi-bulk reply lengths that showed up with `BLPOP` timeouts. +- Only emit `end` once when connection goes away. +- Fixed bug in `test.js` where driver finished before all tests completed. + +## unversioned wasteland + +See the git history for what happened before. diff --git a/node_modules/@node-redis/client/README.md b/node_modules/@node-redis/client/README.md new file mode 100644 index 0000000000..6007608ea3 --- /dev/null +++ b/node_modules/@node-redis/client/README.md @@ -0,0 +1,2 @@ +# @node-redis/client +The source code and documentation for this package are in the main [node-redis](https://github.com/redis/node-redis) repo. diff --git a/node_modules/@node-redis/client/dist/index.d.ts b/node_modules/@node-redis/client/dist/index.d.ts new file mode 100644 index 0000000000..b83c94bbbd --- /dev/null +++ b/node_modules/@node-redis/client/dist/index.d.ts @@ -0,0 +1,6 @@ +import RedisClient from './lib/client'; +import RedisCluster from './lib/cluster'; +export declare const createClient: typeof RedisClient.create; +export declare const commandOptions: typeof RedisClient.commandOptions; +export declare const createCluster: typeof RedisCluster.create; +export { defineScript } from './lib/lua-script'; diff --git a/node_modules/@node-redis/client/dist/index.js b/node_modules/@node-redis/client/dist/index.js new file mode 100644 index 0000000000..e4b306078f --- /dev/null +++ b/node_modules/@node-redis/client/dist/index.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defineScript = exports.createCluster = exports.commandOptions = exports.createClient = void 0; +const client_1 = require("./lib/client"); +const cluster_1 = require("./lib/cluster"); +exports.createClient = client_1.default.create; +exports.commandOptions = client_1.default.commandOptions; +exports.createCluster = cluster_1.default.create; +var lua_script_1 = require("./lib/lua-script"); +Object.defineProperty(exports, "defineScript", { enumerable: true, get: function () { return lua_script_1.defineScript; } }); diff --git a/node_modules/@node-redis/client/dist/lib/client/commands-queue.d.ts b/node_modules/@node-redis/client/dist/lib/client/commands-queue.d.ts new file mode 100644 index 0000000000..3bc9241228 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/commands-queue.d.ts @@ -0,0 +1,30 @@ +/// +import { RedisCommandArguments, RedisCommandRawReply } from '../commands'; +export interface QueueCommandOptions { + asap?: boolean; + chainId?: symbol; + signal?: AbortSignal; +} +export declare enum PubSubSubscribeCommands { + SUBSCRIBE = "SUBSCRIBE", + PSUBSCRIBE = "PSUBSCRIBE" +} +export declare enum PubSubUnsubscribeCommands { + UNSUBSCRIBE = "UNSUBSCRIBE", + PUNSUBSCRIBE = "PUNSUBSCRIBE" +} +declare type PubSubArgumentTypes = Buffer | string; +export declare type PubSubListener = (message: T, channel: T) => unknown; +export default class RedisCommandsQueue { + #private; + constructor(maxLength: number | null | undefined); + addCommand(args: RedisCommandArguments, options?: QueueCommandOptions, bufferMode?: boolean): Promise; + subscribe(command: PubSubSubscribeCommands, channels: PubSubArgumentTypes | Array, listener: PubSubListener, bufferMode?: T): Promise; + unsubscribe(command: PubSubUnsubscribeCommands, channels?: string | Array, listener?: PubSubListener, bufferMode?: T): Promise; + resubscribe(): Promise | undefined; + getCommandToSend(): RedisCommandArguments | undefined; + parseResponse(data: Buffer): void; + flushWaitingForReply(err: Error): void; + flushAll(err: Error): void; +} +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/client/commands-queue.js b/node_modules/@node-redis/client/dist/lib/client/commands-queue.js new file mode 100644 index 0000000000..8eb8515bf5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/commands-queue.js @@ -0,0 +1,283 @@ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _RedisCommandsQueue_instances, _a, _RedisCommandsQueue_flushQueue, _RedisCommandsQueue_emitPubSubMessage, _RedisCommandsQueue_maxLength, _RedisCommandsQueue_waitingToBeSent, _RedisCommandsQueue_waitingForReply, _RedisCommandsQueue_pubSubState, _RedisCommandsQueue_PUB_SUB_MESSAGES, _RedisCommandsQueue_parser, _RedisCommandsQueue_chainInExecution, _RedisCommandsQueue_initiatePubSubState, _RedisCommandsQueue_pushPubSubCommand, _RedisCommandsQueue_shiftWaitingForReply; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PubSubUnsubscribeCommands = exports.PubSubSubscribeCommands = void 0; +const LinkedList = require("yallist"); +const errors_1 = require("../errors"); +// We need to use 'require', because it's not possible with Typescript to import +// classes that are exported as 'module.exports = class`, without esModuleInterop +// set to true. +const RedisParser = require('redis-parser'); +var PubSubSubscribeCommands; +(function (PubSubSubscribeCommands) { + PubSubSubscribeCommands["SUBSCRIBE"] = "SUBSCRIBE"; + PubSubSubscribeCommands["PSUBSCRIBE"] = "PSUBSCRIBE"; +})(PubSubSubscribeCommands = exports.PubSubSubscribeCommands || (exports.PubSubSubscribeCommands = {})); +var PubSubUnsubscribeCommands; +(function (PubSubUnsubscribeCommands) { + PubSubUnsubscribeCommands["UNSUBSCRIBE"] = "UNSUBSCRIBE"; + PubSubUnsubscribeCommands["PUNSUBSCRIBE"] = "PUNSUBSCRIBE"; +})(PubSubUnsubscribeCommands = exports.PubSubUnsubscribeCommands || (exports.PubSubUnsubscribeCommands = {})); +class RedisCommandsQueue { + constructor(maxLength) { + _RedisCommandsQueue_instances.add(this); + _RedisCommandsQueue_maxLength.set(this, void 0); + _RedisCommandsQueue_waitingToBeSent.set(this, new LinkedList()); + _RedisCommandsQueue_waitingForReply.set(this, new LinkedList()); + _RedisCommandsQueue_pubSubState.set(this, void 0); + _RedisCommandsQueue_parser.set(this, new RedisParser({ + returnReply: (reply) => { + if (__classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f") && Array.isArray(reply)) { + if (__classPrivateFieldGet(RedisCommandsQueue, _a, "f", _RedisCommandsQueue_PUB_SUB_MESSAGES).message.equals(reply[0])) { + return __classPrivateFieldGet(RedisCommandsQueue, _a, "m", _RedisCommandsQueue_emitPubSubMessage).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f").listeners.channels, reply[2], reply[1]); + } + else if (__classPrivateFieldGet(RedisCommandsQueue, _a, "f", _RedisCommandsQueue_PUB_SUB_MESSAGES).pMessage.equals(reply[0])) { + return __classPrivateFieldGet(RedisCommandsQueue, _a, "m", _RedisCommandsQueue_emitPubSubMessage).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f").listeners.patterns, reply[3], reply[2], reply[1]); + } + else if (__classPrivateFieldGet(RedisCommandsQueue, _a, "f", _RedisCommandsQueue_PUB_SUB_MESSAGES).subscribe.equals(reply[0]) || + __classPrivateFieldGet(RedisCommandsQueue, _a, "f", _RedisCommandsQueue_PUB_SUB_MESSAGES).pSubscribe.equals(reply[0]) || + __classPrivateFieldGet(RedisCommandsQueue, _a, "f", _RedisCommandsQueue_PUB_SUB_MESSAGES).unsubscribe.equals(reply[0]) || + __classPrivateFieldGet(RedisCommandsQueue, _a, "f", _RedisCommandsQueue_PUB_SUB_MESSAGES).pUnsubscribe.equals(reply[0])) { + if (--__classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, "f").head.value.channelsCounter === 0) { + __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_shiftWaitingForReply).call(this).resolve(); + } + return; + } + } + __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_shiftWaitingForReply).call(this).resolve(reply); + }, + returnError: (err) => __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_shiftWaitingForReply).call(this).reject(err) + })); + _RedisCommandsQueue_chainInExecution.set(this, void 0); + __classPrivateFieldSet(this, _RedisCommandsQueue_maxLength, maxLength, "f"); + } + addCommand(args, options, bufferMode) { + var _b; + if (__classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f")) { + return Promise.reject(new Error('Cannot send commands in PubSub mode')); + } + else if (__classPrivateFieldGet(this, _RedisCommandsQueue_maxLength, "f") && __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, "f").length + __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, "f").length >= __classPrivateFieldGet(this, _RedisCommandsQueue_maxLength, "f")) { + return Promise.reject(new Error('The queue is full')); + } + else if ((_b = options === null || options === void 0 ? void 0 : options.signal) === null || _b === void 0 ? void 0 : _b.aborted) { + return Promise.reject(new errors_1.AbortError()); + } + return new Promise((resolve, reject) => { + const node = new LinkedList.Node({ + args, + chainId: options === null || options === void 0 ? void 0 : options.chainId, + bufferMode, + resolve, + reject + }); + if (options === null || options === void 0 ? void 0 : options.signal) { + const listener = () => { + __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, "f").removeNode(node); + node.value.reject(new errors_1.AbortError()); + }; + node.value.abort = { + signal: options.signal, + listener + }; + // AbortSignal type is incorrent + options.signal.addEventListener('abort', listener, { + once: true + }); + } + if (options === null || options === void 0 ? void 0 : options.asap) { + __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, "f").unshiftNode(node); + } + else { + __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, "f").pushNode(node); + } + }); + } + subscribe(command, channels, listener, bufferMode) { + const pubSubState = __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_initiatePubSubState).call(this), channelsToSubscribe = [], listenersMap = command === PubSubSubscribeCommands.SUBSCRIBE ? pubSubState.listeners.channels : pubSubState.listeners.patterns; + for (const channel of (Array.isArray(channels) ? channels : [channels])) { + const channelString = typeof channel === 'string' ? channel : channel.toString(); + let listeners = listenersMap.get(channelString); + if (!listeners) { + listeners = { + buffers: new Set(), + strings: new Set() + }; + listenersMap.set(channelString, listeners); + channelsToSubscribe.push(channel); + } + // https://github.com/microsoft/TypeScript/issues/23132 + (bufferMode ? listeners.buffers : listeners.strings).add(listener); + } + if (!channelsToSubscribe.length) { + return Promise.resolve(); + } + return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_pushPubSubCommand).call(this, command, channelsToSubscribe); + } + unsubscribe(command, channels, listener, bufferMode) { + if (!__classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f")) { + return Promise.resolve(); + } + const listeners = command === PubSubUnsubscribeCommands.UNSUBSCRIBE ? + __classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f").listeners.channels : + __classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f").listeners.patterns; + if (!channels) { + const size = listeners.size; + listeners.clear(); + return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_pushPubSubCommand).call(this, command, size); + } + const channelsToUnsubscribe = []; + for (const channel of (Array.isArray(channels) ? channels : [channels])) { + const sets = listeners.get(channel); + if (!sets) + continue; + let shouldUnsubscribe; + if (listener) { + // https://github.com/microsoft/TypeScript/issues/23132 + (bufferMode ? sets.buffers : sets.strings).delete(listener); + shouldUnsubscribe = !sets.buffers.size && !sets.strings.size; + } + else { + shouldUnsubscribe = true; + } + if (shouldUnsubscribe) { + channelsToUnsubscribe.push(channel); + listeners.delete(channel); + } + } + if (!channelsToUnsubscribe.length) { + return Promise.resolve(); + } + return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_pushPubSubCommand).call(this, command, channelsToUnsubscribe); + } + resubscribe() { + if (!__classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f")) { + return; + } + // TODO: acl error on one channel/pattern will reject the whole command + return Promise.all([ + __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_pushPubSubCommand).call(this, PubSubSubscribeCommands.SUBSCRIBE, [...__classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f").listeners.channels.keys()]), + __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_pushPubSubCommand).call(this, PubSubSubscribeCommands.PSUBSCRIBE, [...__classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f").listeners.patterns.keys()]) + ]); + } + getCommandToSend() { + const toSend = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, "f").shift(); + if (toSend) { + __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, "f").push({ + resolve: toSend.resolve, + reject: toSend.reject, + channelsCounter: toSend.channelsCounter, + bufferMode: toSend.bufferMode + }); + } + __classPrivateFieldSet(this, _RedisCommandsQueue_chainInExecution, toSend === null || toSend === void 0 ? void 0 : toSend.chainId, "f"); + return toSend === null || toSend === void 0 ? void 0 : toSend.args; + } + parseResponse(data) { + var _b, _c; + __classPrivateFieldGet(this, _RedisCommandsQueue_parser, "f").setReturnBuffers(!!((_b = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, "f").head) === null || _b === void 0 ? void 0 : _b.value.bufferMode) || + !!((_c = __classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f")) === null || _c === void 0 ? void 0 : _c.subscribed)); + __classPrivateFieldGet(this, _RedisCommandsQueue_parser, "f").execute(data); + } + flushWaitingForReply(err) { + var _b; + __classPrivateFieldGet(RedisCommandsQueue, _a, "m", _RedisCommandsQueue_flushQueue).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, "f"), err); + if (!__classPrivateFieldGet(this, _RedisCommandsQueue_chainInExecution, "f")) { + return; + } + while (((_b = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, "f").head) === null || _b === void 0 ? void 0 : _b.value.chainId) === __classPrivateFieldGet(this, _RedisCommandsQueue_chainInExecution, "f")) { + __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, "f").shift(); + } + __classPrivateFieldSet(this, _RedisCommandsQueue_chainInExecution, undefined, "f"); + } + flushAll(err) { + __classPrivateFieldGet(RedisCommandsQueue, _a, "m", _RedisCommandsQueue_flushQueue).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, "f"), err); + __classPrivateFieldGet(RedisCommandsQueue, _a, "m", _RedisCommandsQueue_flushQueue).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, "f"), err); + } +} +exports.default = RedisCommandsQueue; +_a = RedisCommandsQueue, _RedisCommandsQueue_maxLength = new WeakMap(), _RedisCommandsQueue_waitingToBeSent = new WeakMap(), _RedisCommandsQueue_waitingForReply = new WeakMap(), _RedisCommandsQueue_pubSubState = new WeakMap(), _RedisCommandsQueue_parser = new WeakMap(), _RedisCommandsQueue_chainInExecution = new WeakMap(), _RedisCommandsQueue_instances = new WeakSet(), _RedisCommandsQueue_flushQueue = function _RedisCommandsQueue_flushQueue(queue, err) { + while (queue.length) { + queue.shift().reject(err); + } +}, _RedisCommandsQueue_emitPubSubMessage = function _RedisCommandsQueue_emitPubSubMessage(listenersMap, message, channel, pattern) { + const keyString = (pattern || channel).toString(), listeners = listenersMap.get(keyString); + for (const listener of listeners.buffers) { + listener(message, channel); + } + if (!listeners.strings.size) + return; + const messageString = message.toString(), channelString = pattern ? channel.toString() : keyString; + for (const listener of listeners.strings) { + listener(messageString, channelString); + } +}, _RedisCommandsQueue_initiatePubSubState = function _RedisCommandsQueue_initiatePubSubState() { + var _b; + return __classPrivateFieldSet(this, _RedisCommandsQueue_pubSubState, (_b = __classPrivateFieldGet(this, _RedisCommandsQueue_pubSubState, "f")) !== null && _b !== void 0 ? _b : { + subscribed: 0, + subscribing: 0, + unsubscribing: 0, + listeners: { + channels: new Map(), + patterns: new Map() + } + }, "f"); +}, _RedisCommandsQueue_pushPubSubCommand = function _RedisCommandsQueue_pushPubSubCommand(command, channels) { + return new Promise((resolve, reject) => { + const pubSubState = __classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_initiatePubSubState).call(this), isSubscribe = command === PubSubSubscribeCommands.SUBSCRIBE || command === PubSubSubscribeCommands.PSUBSCRIBE, inProgressKey = isSubscribe ? 'subscribing' : 'unsubscribing', commandArgs = [command]; + let channelsCounter; + if (typeof channels === 'number') { // unsubscribe only + channelsCounter = channels; + } + else { + commandArgs.push(...channels); + channelsCounter = channels.length; + } + pubSubState[inProgressKey] += channelsCounter; + __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, "f").push({ + args: commandArgs, + channelsCounter, + bufferMode: true, + resolve: () => { + pubSubState[inProgressKey] -= channelsCounter; + if (isSubscribe) { + pubSubState.subscribed += channelsCounter; + } + else { + pubSubState.subscribed -= channelsCounter; + if (!pubSubState.subscribed && !pubSubState.subscribing && !pubSubState.subscribed) { + __classPrivateFieldSet(this, _RedisCommandsQueue_pubSubState, undefined, "f"); + } + } + resolve(); + }, + reject: () => { + pubSubState[inProgressKey] -= channelsCounter * (isSubscribe ? 1 : -1); + reject(); + } + }); + }); +}, _RedisCommandsQueue_shiftWaitingForReply = function _RedisCommandsQueue_shiftWaitingForReply() { + if (!__classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, "f").length) { + throw new Error('Got an unexpected reply from Redis'); + } + return __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, "f").shift(); +}; +_RedisCommandsQueue_PUB_SUB_MESSAGES = { value: { + message: Buffer.from('message'), + pMessage: Buffer.from('pmessage'), + subscribe: Buffer.from('subscribe'), + pSubscribe: Buffer.from('psubscribe'), + unsubscribe: Buffer.from('unsunscribe'), + pUnsubscribe: Buffer.from('punsubscribe') + } }; diff --git a/node_modules/@node-redis/client/dist/lib/client/commands.d.ts b/node_modules/@node-redis/client/dist/lib/client/commands.d.ts new file mode 100644 index 0000000000..b592ad3b0d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/commands.d.ts @@ -0,0 +1,585 @@ +import * as ACL_CAT from '../commands/ACL_CAT'; +import * as ACL_DELUSER from '../commands/ACL_DELUSER'; +import * as ACL_GENPASS from '../commands/ACL_GENPASS'; +import * as ACL_GETUSER from '../commands/ACL_GETUSER'; +import * as ACL_LIST from '../commands/ACL_LIST'; +import * as ACL_LOAD from '../commands/ACL_LOAD'; +import * as ACL_LOG_RESET from '../commands/ACL_LOG_RESET'; +import * as ACL_LOG from '../commands/ACL_LOG'; +import * as ACL_SAVE from '../commands/ACL_SAVE'; +import * as ACL_SETUSER from '../commands/ACL_SETUSER'; +import * as ACL_USERS from '../commands/ACL_USERS'; +import * as ACL_WHOAMI from '../commands/ACL_WHOAMI'; +import * as ASKING from '../commands/ASKING'; +import * as AUTH from '../commands/AUTH'; +import * as BGREWRITEAOF from '../commands/BGREWRITEAOF'; +import * as BGSAVE from '../commands/BGSAVE'; +import * as CLIENT_ID from '../commands/CLIENT_ID'; +import * as CLIENT_INFO from '../commands/CLIENT_INFO'; +import * as CLUSTER_ADDSLOTS from '../commands/CLUSTER_ADDSLOTS'; +import * as CLUSTER_FLUSHSLOTS from '../commands/CLUSTER_FLUSHSLOTS'; +import * as CLUSTER_INFO from '../commands/CLUSTER_INFO'; +import * as CLUSTER_NODES from '../commands/CLUSTER_NODES'; +import * as CLUSTER_MEET from '../commands/CLUSTER_MEET'; +import * as CLUSTER_RESET from '../commands/CLUSTER_RESET'; +import * as CLUSTER_SETSLOT from '../commands/CLUSTER_SETSLOT'; +import * as CLUSTER_SLOTS from '../commands/CLUSTER_SLOTS'; +import * as COMMAND_COUNT from '../commands/COMMAND_COUNT'; +import * as COMMAND_GETKEYS from '../commands/COMMAND_GETKEYS'; +import * as COMMAND_INFO from '../commands/COMMAND_INFO'; +import * as COMMAND from '../commands/COMMAND'; +import * as CONFIG_GET from '../commands/CONFIG_GET'; +import * as CONFIG_RESETASTAT from '../commands/CONFIG_RESETSTAT'; +import * as CONFIG_REWRITE from '../commands/CONFIG_REWRITE'; +import * as CONFIG_SET from '../commands/CONFIG_SET'; +import * as DBSIZE from '../commands/DBSIZE'; +import * as DISCARD from '../commands/DISCARD'; +import * as ECHO from '../commands/ECHO'; +import * as FAILOVER from '../commands/FAILOVER'; +import * as FLUSHALL from '../commands/FLUSHALL'; +import * as FLUSHDB from '../commands/FLUSHDB'; +import * as HELLO from '../commands/HELLO'; +import * as INFO from '../commands/INFO'; +import * as KEYS from '../commands/KEYS'; +import * as LASTSAVE from '../commands/LASTSAVE'; +import * as LOLWUT from '../commands/LOLWUT'; +import * as MEMOERY_DOCTOR from '../commands/MEMORY_DOCTOR'; +import * as MEMORY_MALLOC_STATS from '../commands/MEMORY_MALLOC-STATS'; +import * as MEMORY_PURGE from '../commands/MEMORY_PURGE'; +import * as MEMORY_STATS from '../commands/MEMORY_STATS'; +import * as MEMORY_USAGE from '../commands/MEMORY_USAGE'; +import * as MODULE_LIST from '../commands/MODULE_LIST'; +import * as MODULE_LOAD from '../commands/MODULE_LOAD'; +import * as MODULE_UNLOAD from '../commands/MODULE_UNLOAD'; +import * as MOVE from '../commands/MOVE'; +import * as PING from '../commands/PING'; +import * as PUBSUB_CHANNELS from '../commands/PUBSUB_CHANNELS'; +import * as PUBSUB_NUMPAT from '../commands/PUBSUB_NUMPAT'; +import * as PUBSUB_NUMSUB from '../commands/PUBSUB_NUMSUB'; +import * as RANDOMKEY from '../commands/RANDOMKEY'; +import * as READONLY from '../commands/READONLY'; +import * as READWRITE from '../commands/READWRITE'; +import * as REPLICAOF from '../commands/REPLICAOF'; +import * as RESTORE_ASKING from '../commands/RESTORE-ASKING'; +import * as ROLE from '../commands/ROLE'; +import * as SAVE from '../commands/SAVE'; +import * as SCAN from '../commands/SCAN'; +import * as SCRIPT_DEBUG from '../commands/SCRIPT_DEBUG'; +import * as SCRIPT_EXISTS from '../commands/SCRIPT_EXISTS'; +import * as SCRIPT_FLUSH from '../commands/SCRIPT_FLUSH'; +import * as SCRIPT_KILL from '../commands/SCRIPT_KILL'; +import * as SCRIPT_LOAD from '../commands/SCRIPT_LOAD'; +import * as SHUTDOWN from '../commands/SHUTDOWN'; +import * as SWAPDB from '../commands/SWAPDB'; +import * as TIME from '../commands/TIME'; +import * as UNWATCH from '../commands/UNWATCH'; +import * as WAIT from '../commands/WAIT'; +declare const _default: { + ACL_CAT: typeof ACL_CAT; + aclCat: typeof ACL_CAT; + ACL_DELUSER: typeof ACL_DELUSER; + aclDelUser: typeof ACL_DELUSER; + ACL_GENPASS: typeof ACL_GENPASS; + aclGenPass: typeof ACL_GENPASS; + ACL_GETUSER: typeof ACL_GETUSER; + aclGetUser: typeof ACL_GETUSER; + ACL_LIST: typeof ACL_LIST; + aclList: typeof ACL_LIST; + ACL_LOAD: typeof ACL_LOAD; + aclLoad: typeof ACL_LOAD; + ACL_LOG_RESET: typeof ACL_LOG_RESET; + aclLogReset: typeof ACL_LOG_RESET; + ACL_LOG: typeof ACL_LOG; + aclLog: typeof ACL_LOG; + ACL_SAVE: typeof ACL_SAVE; + aclSave: typeof ACL_SAVE; + ACL_SETUSER: typeof ACL_SETUSER; + aclSetUser: typeof ACL_SETUSER; + ACL_USERS: typeof ACL_USERS; + aclUsers: typeof ACL_USERS; + ACL_WHOAMI: typeof ACL_WHOAMI; + aclWhoAmI: typeof ACL_WHOAMI; + ASKING: typeof ASKING; + asking: typeof ASKING; + AUTH: typeof AUTH; + auth: typeof AUTH; + BGREWRITEAOF: typeof BGREWRITEAOF; + bgRewriteAof: typeof BGREWRITEAOF; + BGSAVE: typeof BGSAVE; + bgSave: typeof BGSAVE; + CLIENT_ID: typeof CLIENT_ID; + clientId: typeof CLIENT_ID; + CLIENT_INFO: typeof CLIENT_INFO; + clientInfo: typeof CLIENT_INFO; + CLUSTER_ADDSLOTS: typeof CLUSTER_ADDSLOTS; + clusterAddSlots: typeof CLUSTER_ADDSLOTS; + CLUSTER_FLUSHSLOTS: typeof CLUSTER_FLUSHSLOTS; + clusterFlushSlots: typeof CLUSTER_FLUSHSLOTS; + CLUSTER_INFO: typeof CLUSTER_INFO; + clusterInfo: typeof CLUSTER_INFO; + CLUSTER_NODES: typeof CLUSTER_NODES; + clusterNodes: typeof CLUSTER_NODES; + CLUSTER_MEET: typeof CLUSTER_MEET; + clusterMeet: typeof CLUSTER_MEET; + CLUSTER_RESET: typeof CLUSTER_RESET; + clusterReset: typeof CLUSTER_RESET; + CLUSTER_SETSLOT: typeof CLUSTER_SETSLOT; + clusterSetSlot: typeof CLUSTER_SETSLOT; + CLUSTER_SLOTS: typeof CLUSTER_SLOTS; + clusterSlots: typeof CLUSTER_SLOTS; + COMMAND_COUNT: typeof COMMAND_COUNT; + commandCount: typeof COMMAND_COUNT; + COMMAND_GETKEYS: typeof COMMAND_GETKEYS; + commandGetKeys: typeof COMMAND_GETKEYS; + COMMAND_INFO: typeof COMMAND_INFO; + commandInfo: typeof COMMAND_INFO; + COMMAND: typeof COMMAND; + command: typeof COMMAND; + CONFIG_GET: typeof CONFIG_GET; + configGet: typeof CONFIG_GET; + CONFIG_RESETASTAT: typeof CONFIG_RESETASTAT; + configResetStat: typeof CONFIG_RESETASTAT; + CONFIG_REWRITE: typeof CONFIG_REWRITE; + configRewrite: typeof CONFIG_REWRITE; + CONFIG_SET: typeof CONFIG_SET; + configSet: typeof CONFIG_SET; + DBSIZE: typeof DBSIZE; + dbSize: typeof DBSIZE; + DISCARD: typeof DISCARD; + discard: typeof DISCARD; + ECHO: typeof ECHO; + echo: typeof ECHO; + FAILOVER: typeof FAILOVER; + failover: typeof FAILOVER; + FLUSHALL: typeof FLUSHALL; + flushAll: typeof FLUSHALL; + FLUSHDB: typeof FLUSHDB; + flushDb: typeof FLUSHDB; + HELLO: typeof HELLO; + hello: typeof HELLO; + INFO: typeof INFO; + info: typeof INFO; + KEYS: typeof KEYS; + keys: typeof KEYS; + LASTSAVE: typeof LASTSAVE; + lastSave: typeof LASTSAVE; + LOLWUT: typeof LOLWUT; + lolwut: typeof LOLWUT; + MEMOERY_DOCTOR: typeof MEMOERY_DOCTOR; + memoryDoctor: typeof MEMOERY_DOCTOR; + 'MEMORY_MALLOC-STATS': typeof MEMORY_MALLOC_STATS; + memoryMallocStats: typeof MEMORY_MALLOC_STATS; + MEMORY_PURGE: typeof MEMORY_PURGE; + memoryPurge: typeof MEMORY_PURGE; + MEMORY_STATS: typeof MEMORY_STATS; + memoryStats: typeof MEMORY_STATS; + MEMORY_USAGE: typeof MEMORY_USAGE; + memoryUsage: typeof MEMORY_USAGE; + MODULE_LIST: typeof MODULE_LIST; + moduleList: typeof MODULE_LIST; + MODULE_LOAD: typeof MODULE_LOAD; + moduleLoad: typeof MODULE_LOAD; + MODULE_UNLOAD: typeof MODULE_UNLOAD; + moduleUnload: typeof MODULE_UNLOAD; + MOVE: typeof MOVE; + move: typeof MOVE; + PING: typeof PING; + ping: typeof PING; + PUBSUB_CHANNELS: typeof PUBSUB_CHANNELS; + pubSubChannels: typeof PUBSUB_CHANNELS; + PUBSUB_NUMPAT: typeof PUBSUB_NUMPAT; + pubSubNumPat: typeof PUBSUB_NUMPAT; + PUBSUB_NUMSUB: typeof PUBSUB_NUMSUB; + pubSubNumSub: typeof PUBSUB_NUMSUB; + RANDOMKEY: typeof RANDOMKEY; + randomKey: typeof RANDOMKEY; + READONLY: typeof READONLY; + readonly: typeof READONLY; + READWRITE: typeof READWRITE; + readwrite: typeof READWRITE; + REPLICAOF: typeof REPLICAOF; + replicaOf: typeof REPLICAOF; + 'RESTORE-ASKING': typeof RESTORE_ASKING; + restoreAsking: typeof RESTORE_ASKING; + ROLE: typeof ROLE; + role: typeof ROLE; + SAVE: typeof SAVE; + save: typeof SAVE; + SCAN: typeof SCAN; + scan: typeof SCAN; + SCRIPT_DEBUG: typeof SCRIPT_DEBUG; + scriptDebug: typeof SCRIPT_DEBUG; + SCRIPT_EXISTS: typeof SCRIPT_EXISTS; + scriptExists: typeof SCRIPT_EXISTS; + SCRIPT_FLUSH: typeof SCRIPT_FLUSH; + scriptFlush: typeof SCRIPT_FLUSH; + SCRIPT_KILL: typeof SCRIPT_KILL; + scriptKill: typeof SCRIPT_KILL; + SCRIPT_LOAD: typeof SCRIPT_LOAD; + scriptLoad: typeof SCRIPT_LOAD; + SHUTDOWN: typeof SHUTDOWN; + shutdown: typeof SHUTDOWN; + SWAPDB: typeof SWAPDB; + swapDb: typeof SWAPDB; + TIME: typeof TIME; + time: typeof TIME; + UNWATCH: typeof UNWATCH; + unwatch: typeof UNWATCH; + WAIT: typeof WAIT; + wait: typeof WAIT; + APPEND: typeof import("../commands/APPEND"); + append: typeof import("../commands/APPEND"); + BITCOUNT: typeof import("../commands/BITCOUNT"); + bitCount: typeof import("../commands/BITCOUNT"); + BITFIELD: typeof import("../commands/BITFIELD"); + bitField: typeof import("../commands/BITFIELD"); + BITOP: typeof import("../commands/BITOP"); + bitOp: typeof import("../commands/BITOP"); + BITPOS: typeof import("../commands/BITPOS"); + bitPos: typeof import("../commands/BITPOS"); + BLMOVE: typeof import("../commands/BLMOVE"); + blMove: typeof import("../commands/BLMOVE"); + BLPOP: typeof import("../commands/BLPOP"); + blPop: typeof import("../commands/BLPOP"); + BRPOP: typeof import("../commands/BRPOP"); + brPop: typeof import("../commands/BRPOP"); + BRPOPLPUSH: typeof import("../commands/BRPOPLPUSH"); + brPopLPush: typeof import("../commands/BRPOPLPUSH"); + BZPOPMAX: typeof import("../commands/BZPOPMAX"); + bzPopMax: typeof import("../commands/BZPOPMAX"); + BZPOPMIN: typeof import("../commands/BZPOPMIN"); + bzPopMin: typeof import("../commands/BZPOPMIN"); + COPY: typeof import("../commands/COPY"); + copy: typeof import("../commands/COPY"); + DECR: typeof import("../commands/DECR"); + decr: typeof import("../commands/DECR"); + DECRBY: typeof import("../commands/DECRBY"); + decrBy: typeof import("../commands/DECRBY"); + DEL: typeof import("../commands/DEL"); + del: typeof import("../commands/DEL"); + DUMP: typeof import("../commands/DUMP"); + dump: typeof import("../commands/DUMP"); + EVAL: typeof import("../commands/EVAL"); + eval: typeof import("../commands/EVAL"); + EVALSHA: typeof import("../commands/EVALSHA"); + evalSha: typeof import("../commands/EVALSHA"); + EXISTS: typeof import("../commands/EXISTS"); + exists: typeof import("../commands/EXISTS"); + EXPIRE: typeof import("../commands/EXPIRE"); + expire: typeof import("../commands/EXPIRE"); + EXPIREAT: typeof import("../commands/EXPIREAT"); + expireAt: typeof import("../commands/EXPIREAT"); + GEOADD: typeof import("../commands/GEOADD"); + geoAdd: typeof import("../commands/GEOADD"); + GEODIST: typeof import("../commands/GEODIST"); + geoDist: typeof import("../commands/GEODIST"); + GEOHASH: typeof import("../commands/GEOHASH"); + geoHash: typeof import("../commands/GEOHASH"); + GEOPOS: typeof import("../commands/GEOPOS"); + geoPos: typeof import("../commands/GEOPOS"); + GEOSEARCH_WITH: typeof import("../commands/GEOSEARCH_WITH"); + geoSearchWith: typeof import("../commands/GEOSEARCH_WITH"); + GEOSEARCH: typeof import("../commands/GEOSEARCH"); + geoSearch: typeof import("../commands/GEOSEARCH"); + GEOSEARCHSTORE: typeof import("../commands/GEOSEARCHSTORE"); + geoSearchStore: typeof import("../commands/GEOSEARCHSTORE"); + GET_BUFFER: typeof import("../commands/GET_BUFFER"); + getBuffer: typeof import("../commands/GET_BUFFER"); + GET: typeof import("../commands/GET"); + get: typeof import("../commands/GET"); + GETBIT: typeof import("../commands/GETBIT"); + getBit: typeof import("../commands/GETBIT"); + GETDEL: typeof import("../commands/GETDEL"); + getDel: typeof import("../commands/GETDEL"); + GETEX: typeof import("../commands/GETEX"); + getEx: typeof import("../commands/GETEX"); + GETRANGE: typeof import("../commands/GETRANGE"); + getRange: typeof import("../commands/GETRANGE"); + GETSET: typeof import("../commands/GETSET"); + getSet: typeof import("../commands/GETSET"); + HDEL: typeof import("../commands/HDEL"); + hDel: typeof import("../commands/HDEL"); + HEXISTS: typeof import("../commands/HEXISTS"); + hExists: typeof import("../commands/HEXISTS"); + HGET: typeof import("../commands/HGET"); + hGet: typeof import("../commands/HGET"); + HGETALL: typeof import("../commands/HGETALL"); + hGetAll: typeof import("../commands/HGETALL"); + HINCRBY: typeof import("../commands/HINCRBY"); + hIncrBy: typeof import("../commands/HINCRBY"); + HINCRBYFLOAT: typeof import("../commands/HINCRBYFLOAT"); + hIncrByFloat: typeof import("../commands/HINCRBYFLOAT"); + HKEYS: typeof import("../commands/HKEYS"); + hKeys: typeof import("../commands/HKEYS"); + HLEN: typeof import("../commands/HLEN"); + hLen: typeof import("../commands/HLEN"); + HMGET: typeof import("../commands/HMGET"); + hmGet: typeof import("../commands/HMGET"); + HRANDFIELD_COUNT_WITHVALUES: typeof import("../commands/HRANDFIELD_COUNT_WITHVALUES"); + hRandFieldCountWithValues: typeof import("../commands/HRANDFIELD_COUNT_WITHVALUES"); + HRANDFIELD_COUNT: typeof import("../commands/HRANDFIELD_COUNT"); + hRandFieldCount: typeof import("../commands/HRANDFIELD_COUNT"); + HRANDFIELD: typeof import("../commands/HRANDFIELD"); + hRandField: typeof import("../commands/HRANDFIELD"); + HSCAN: typeof import("../commands/HSCAN"); + hScan: typeof import("../commands/HSCAN"); + HSET: typeof import("../commands/HSET"); + hSet: typeof import("../commands/HSET"); + HSETNX: typeof import("../commands/HSETNX"); + hSetNX: typeof import("../commands/HSETNX"); + HSTRLEN: typeof import("../commands/HSTRLEN"); + hStrLen: typeof import("../commands/HSTRLEN"); + HVALS: typeof import("../commands/HVALS"); + hVals: typeof import("../commands/HVALS"); + INCR: typeof import("../commands/INCR"); + incr: typeof import("../commands/INCR"); + INCRBY: typeof import("../commands/INCRBY"); + incrBy: typeof import("../commands/INCRBY"); + INCRBYFLOAT: typeof import("../commands/INCRBYFLOAT"); + incrByFloat: typeof import("../commands/INCRBYFLOAT"); + LINDEX: typeof import("../commands/LINDEX"); + lIndex: typeof import("../commands/LINDEX"); + LINSERT: typeof import("../commands/LINSERT"); + lInsert: typeof import("../commands/LINSERT"); + LLEN: typeof import("../commands/LLEN"); + lLen: typeof import("../commands/LLEN"); + LMOVE: typeof import("../commands/LMOVE"); + lMove: typeof import("../commands/LMOVE"); + LPOP_COUNT: typeof import("../commands/LPOP_COUNT"); + lPopCount: typeof import("../commands/LPOP_COUNT"); + LPOP: typeof import("../commands/LPOP"); + lPop: typeof import("../commands/LPOP"); + LPOS_COUNT: typeof import("../commands/LPOS_COUNT"); + lPosCount: typeof import("../commands/LPOS_COUNT"); + LPOS: typeof import("../commands/LPOS"); + lPos: typeof import("../commands/LPOS"); + LPUSH: typeof import("../commands/LPUSH"); + lPush: typeof import("../commands/LPUSH"); + LPUSHX: typeof import("../commands/LPUSHX"); + lPushX: typeof import("../commands/LPUSHX"); + LRANGE: typeof import("../commands/LRANGE"); + lRange: typeof import("../commands/LRANGE"); + LREM: typeof import("../commands/LREM"); + lRem: typeof import("../commands/LREM"); + LSET: typeof import("../commands/LSET"); + lSet: typeof import("../commands/LSET"); + LTRIM: typeof import("../commands/LTRIM"); + lTrim: typeof import("../commands/LTRIM"); + MGET: typeof import("../commands/MGET"); + mGet: typeof import("../commands/MGET"); + MIGRATE: typeof import("../commands/MIGRATE"); + migrate: typeof import("../commands/MIGRATE"); + MSET: typeof import("../commands/MSET"); + mSet: typeof import("../commands/MSET"); + MSETNX: typeof import("../commands/MSETNX"); + mSetNX: typeof import("../commands/MSETNX"); + PERSIST: typeof import("../commands/PERSIST"); + persist: typeof import("../commands/PERSIST"); + PEXPIRE: typeof import("../commands/PEXPIRE"); + pExpire: typeof import("../commands/PEXPIRE"); + PEXPIREAT: typeof import("../commands/PEXPIREAT"); + pExpireAt: typeof import("../commands/PEXPIREAT"); + PFADD: typeof import("../commands/PFADD"); + pfAdd: typeof import("../commands/PFADD"); + PFCOUNT: typeof import("../commands/PFCOUNT"); + pfCount: typeof import("../commands/PFCOUNT"); + PFMERGE: typeof import("../commands/PFMERGE"); + pfMerge: typeof import("../commands/PFMERGE"); + PSETEX: typeof import("../commands/PSETEX"); + pSetEx: typeof import("../commands/PSETEX"); + PTTL: typeof import("../commands/PTTL"); + pTTL: typeof import("../commands/PTTL"); + PUBLISH: typeof import("../commands/PUBLISH"); + publish: typeof import("../commands/PUBLISH"); + RENAME: typeof import("../commands/RENAME"); + rename: typeof import("../commands/RENAME"); + RENAMENX: typeof import("../commands/RENAMENX"); + renameNX: typeof import("../commands/RENAMENX"); + RPOP_COUNT: typeof import("../commands/RPOP_COUNT"); + rPopCount: typeof import("../commands/RPOP_COUNT"); + RPOP: typeof import("../commands/RPOP"); + rPop: typeof import("../commands/RPOP"); + RPOPLPUSH: typeof import("../commands/RPOPLPUSH"); + rPopLPush: typeof import("../commands/RPOPLPUSH"); + RPUSH: typeof import("../commands/RPUSH"); + rPush: typeof import("../commands/RPUSH"); + RPUSHX: typeof import("../commands/RPUSHX"); + rPushX: typeof import("../commands/RPUSHX"); + SADD: typeof import("../commands/SADD"); + sAdd: typeof import("../commands/SADD"); + SCARD: typeof import("../commands/SCARD"); + sCard: typeof import("../commands/SCARD"); + SDIFF: typeof import("../commands/SDIFF"); + sDiff: typeof import("../commands/SDIFF"); + SDIFFSTORE: typeof import("../commands/SDIFFSTORE"); + sDiffStore: typeof import("../commands/SDIFFSTORE"); + SINTER: typeof import("../commands/SINTER"); + sInter: typeof import("../commands/SINTER"); + SINTERSTORE: typeof import("../commands/SINTERSTORE"); + sInterStore: typeof import("../commands/SINTERSTORE"); + SET: typeof import("../commands/SET"); + set: typeof import("../commands/SET"); + SETBIT: typeof import("../commands/SETBIT"); + setBit: typeof import("../commands/SETBIT"); + SETEX: typeof import("../commands/SETEX"); + setEx: typeof import("../commands/SETEX"); + SETNX: typeof import("../commands/SETNX"); + setNX: typeof import("../commands/SETNX"); + SETRANGE: typeof import("../commands/SETRANGE"); + setRange: typeof import("../commands/SETRANGE"); + SISMEMBER: typeof import("../commands/SISMEMBER"); + sIsMember: typeof import("../commands/SISMEMBER"); + SMEMBERS: typeof import("../commands/SMEMBERS"); + sMembers: typeof import("../commands/SMEMBERS"); + SMISMEMBER: typeof import("../commands/SMISMEMBER"); + smIsMember: typeof import("../commands/SMISMEMBER"); + SMOVE: typeof import("../commands/SMOVE"); + sMove: typeof import("../commands/SMOVE"); + SORT: typeof import("../commands/SORT"); + sort: typeof import("../commands/SORT"); + SPOP: typeof import("../commands/SPOP"); + sPop: typeof import("../commands/SPOP"); + SRANDMEMBER_COUNT: typeof import("../commands/SRANDMEMBER_COUNT"); + sRandMemberCount: typeof import("../commands/SRANDMEMBER_COUNT"); + SRANDMEMBER: typeof import("../commands/SRANDMEMBER"); + sRandMember: typeof import("../commands/SRANDMEMBER"); + SREM: typeof import("../commands/SREM"); + sRem: typeof import("../commands/SREM"); + SSCAN: typeof import("../commands/SSCAN"); + sScan: typeof import("../commands/SSCAN"); + STRLEN: typeof import("../commands/STRLEN"); + strLen: typeof import("../commands/STRLEN"); + SUNION: typeof import("../commands/SUNION"); + sUnion: typeof import("../commands/SUNION"); + SUNIONSTORE: typeof import("../commands/SUNIONSTORE"); + sUnionStore: typeof import("../commands/SUNIONSTORE"); + TOUCH: typeof import("../commands/TOUCH"); + touch: typeof import("../commands/TOUCH"); + TTL: typeof import("../commands/TTL"); + ttl: typeof import("../commands/TTL"); + TYPE: typeof import("../commands/TYPE"); + type: typeof import("../commands/TYPE"); + UNLINK: typeof import("../commands/UNLINK"); + unlink: typeof import("../commands/UNLINK"); + WATCH: typeof import("../commands/WATCH"); + watch: typeof import("../commands/WATCH"); + XACK: typeof import("../commands/XACK"); + xAck: typeof import("../commands/XACK"); + XADD: typeof import("../commands/XADD"); + xAdd: typeof import("../commands/XADD"); + XAUTOCLAIM_JUSTID: typeof import("../commands/XAUTOCLAIM_JUSTID"); + xAutoClaimJustId: typeof import("../commands/XAUTOCLAIM_JUSTID"); + XAUTOCLAIM: typeof import("../commands/XAUTOCLAIM"); + xAutoClaim: typeof import("../commands/XAUTOCLAIM"); + XCLAIM: typeof import("../commands/XCLAIM"); + xClaim: typeof import("../commands/XCLAIM"); + XCLAIM_JUSTID: typeof import("../commands/XCLAIM_JUSTID"); + xClaimJustId: typeof import("../commands/XCLAIM_JUSTID"); + XDEL: typeof import("../commands/XDEL"); + xDel: typeof import("../commands/XDEL"); + XGROUP_CREATE: typeof import("../commands/XGROUP_CREATE"); + xGroupCreate: typeof import("../commands/XGROUP_CREATE"); + XGROUP_CREATECONSUMER: typeof import("../commands/XGROUP_CREATECONSUMER"); + xGroupCreateConsumer: typeof import("../commands/XGROUP_CREATECONSUMER"); + XGROUP_DELCONSUMER: typeof import("../commands/XGROUP_DELCONSUMER"); + xGroupDelConsumer: typeof import("../commands/XGROUP_DELCONSUMER"); + XGROUP_DESTROY: typeof import("../commands/XGROUP_DESTROY"); + xGroupDestroy: typeof import("../commands/XGROUP_DESTROY"); + XGROUP_SETID: typeof import("../commands/XGROUP_SETID"); + xGroupSetId: typeof import("../commands/XGROUP_SETID"); + XINFO_CONSUMERS: typeof import("../commands/XINFO_CONSUMERS"); + xInfoConsumers: typeof import("../commands/XINFO_CONSUMERS"); + XINFO_GROUPS: typeof import("../commands/XINFO_GROUPS"); + xInfoGroups: typeof import("../commands/XINFO_GROUPS"); + XINFO_STREAM: typeof import("../commands/XINFO_STREAM"); + xInfoStream: typeof import("../commands/XINFO_STREAM"); + XLEN: typeof import("../commands/XLEN"); + xLen: typeof import("../commands/XLEN"); + XPENDING_RANGE: typeof import("../commands/XPENDING_RANGE"); + xPendingRange: typeof import("../commands/XPENDING_RANGE"); + XPENDING: typeof import("../commands/XPENDING"); + xPending: typeof import("../commands/XPENDING"); + XRANGE: typeof import("../commands/XRANGE"); + xRange: typeof import("../commands/XRANGE"); + XREAD: typeof import("../commands/XREAD"); + xRead: typeof import("../commands/XREAD"); + XREADGROUP: typeof import("../commands/XREADGROUP"); + xReadGroup: typeof import("../commands/XREADGROUP"); + XREVRANGE: typeof import("../commands/XREVRANGE"); + xRevRange: typeof import("../commands/XREVRANGE"); + XTRIM: typeof import("../commands/XTRIM"); + xTrim: typeof import("../commands/XTRIM"); + ZADD: typeof import("../commands/ZADD"); + zAdd: typeof import("../commands/ZADD"); + ZCARD: typeof import("../commands/ZCARD"); + zCard: typeof import("../commands/ZCARD"); + ZCOUNT: typeof import("../commands/ZCOUNT"); + zCount: typeof import("../commands/ZCOUNT"); + ZDIFF_WITHSCORES: typeof import("../commands/ZDIFF_WITHSCORES"); + zDiffWithScores: typeof import("../commands/ZDIFF_WITHSCORES"); + ZDIFF: typeof import("../commands/ZDIFF"); + zDiff: typeof import("../commands/ZDIFF"); + ZDIFFSTORE: typeof import("../commands/ZDIFFSTORE"); + zDiffStore: typeof import("../commands/ZDIFFSTORE"); + ZINCRBY: typeof import("../commands/ZINCRBY"); + zIncrBy: typeof import("../commands/ZINCRBY"); + ZINTER_WITHSCORES: typeof import("../commands/ZINTER_WITHSCORES"); + zInterWithScores: typeof import("../commands/ZINTER_WITHSCORES"); + ZINTER: typeof import("../commands/ZINTER"); + zInter: typeof import("../commands/ZINTER"); + ZINTERSTORE: typeof import("../commands/ZINTERSTORE"); + zInterStore: typeof import("../commands/ZINTERSTORE"); + ZLEXCOUNT: typeof import("../commands/ZLEXCOUNT"); + zLexCount: typeof import("../commands/ZLEXCOUNT"); + ZMSCORE: typeof import("../commands/ZMSCORE"); + zmScore: typeof import("../commands/ZMSCORE"); + ZPOPMAX_COUNT: typeof import("../commands/ZPOPMAX_COUNT"); + zPopMaxCount: typeof import("../commands/ZPOPMAX_COUNT"); + ZPOPMAX: typeof import("../commands/ZPOPMAX"); + zPopMax: typeof import("../commands/ZPOPMAX"); + ZPOPMIN_COUNT: typeof import("../commands/ZPOPMIN_COUNT"); + zPopMinCount: typeof import("../commands/ZPOPMIN_COUNT"); + ZPOPMIN: typeof import("../commands/ZPOPMIN"); + zPopMin: typeof import("../commands/ZPOPMIN"); + ZRANDMEMBER_COUNT_WITHSCORES: typeof import("../commands/ZRANDMEMBER_COUNT_WITHSCORES"); + zRandMemberCountWithScores: typeof import("../commands/ZRANDMEMBER_COUNT_WITHSCORES"); + ZRANDMEMBER_COUNT: typeof import("../commands/ZRANDMEMBER_COUNT"); + zRandMemberCount: typeof import("../commands/ZRANDMEMBER_COUNT"); + ZRANDMEMBER: typeof import("../commands/ZRANDMEMBER"); + zRandMember: typeof import("../commands/ZRANDMEMBER"); + ZRANGE_WITHSCORES: typeof import("../commands/ZRANGE_WITHSCORES"); + zRangeWithScores: typeof import("../commands/ZRANGE_WITHSCORES"); + ZRANGE: typeof import("../commands/ZRANGE"); + zRange: typeof import("../commands/ZRANGE"); + ZRANGEBYLEX: typeof import("../commands/ZRANGEBYLEX"); + zRangeByLex: typeof import("../commands/ZRANGEBYLEX"); + ZRANGEBYSCORE_WITHSCORES: typeof import("../commands/ZRANGEBYSCORE_WITHSCORES"); + zRangeByScoreWithScores: typeof import("../commands/ZRANGEBYSCORE_WITHSCORES"); + ZRANGEBYSCORE: typeof import("../commands/ZRANGEBYSCORE"); + zRangeByScore: typeof import("../commands/ZRANGEBYSCORE"); + ZRANGESTORE: typeof import("../commands/ZRANGESTORE"); + zRangeStore: typeof import("../commands/ZRANGESTORE"); + ZRANK: typeof import("../commands/ZRANK"); + zRank: typeof import("../commands/ZRANK"); + ZREM: typeof import("../commands/ZREM"); + zRem: typeof import("../commands/ZREM"); + ZREMRANGEBYLEX: typeof import("../commands/ZREMRANGEBYLEX"); + zRemRangeByLex: typeof import("../commands/ZREMRANGEBYLEX"); + ZREMRANGEBYRANK: typeof import("../commands/ZREMRANGEBYRANK"); + zRemRangeByRank: typeof import("../commands/ZREMRANGEBYRANK"); + ZREMRANGEBYSCORE: typeof import("../commands/ZREMRANGEBYSCORE"); + zRemRangeByScore: typeof import("../commands/ZREMRANGEBYSCORE"); + ZREVRANK: typeof import("../commands/ZREVRANK"); + zRevRank: typeof import("../commands/ZREVRANK"); + ZSCAN: typeof import("../commands/ZSCAN"); + zScan: typeof import("../commands/ZSCAN"); + ZSCORE: typeof import("../commands/ZSCORE"); + zScore: typeof import("../commands/ZSCORE"); + ZUNION_WITHSCORES: typeof import("../commands/ZUNION_WITHSCORES"); + zUnionWithScores: typeof import("../commands/ZUNION_WITHSCORES"); + ZUNION: typeof import("../commands/ZUNION"); + zUnion: typeof import("../commands/ZUNION"); + ZUNIONSTORE: typeof import("../commands/ZUNIONSTORE"); + zUnionStore: typeof import("../commands/ZUNIONSTORE"); +}; +export default _default; diff --git a/node_modules/@node-redis/client/dist/lib/client/commands.js b/node_modules/@node-redis/client/dist/lib/client/commands.js new file mode 100644 index 0000000000..bae2acd7e3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/commands.js @@ -0,0 +1,234 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const commands_1 = require("../cluster/commands"); +const ACL_CAT = require("../commands/ACL_CAT"); +const ACL_DELUSER = require("../commands/ACL_DELUSER"); +const ACL_GENPASS = require("../commands/ACL_GENPASS"); +const ACL_GETUSER = require("../commands/ACL_GETUSER"); +const ACL_LIST = require("../commands/ACL_LIST"); +const ACL_LOAD = require("../commands/ACL_LOAD"); +const ACL_LOG_RESET = require("../commands/ACL_LOG_RESET"); +const ACL_LOG = require("../commands/ACL_LOG"); +const ACL_SAVE = require("../commands/ACL_SAVE"); +const ACL_SETUSER = require("../commands/ACL_SETUSER"); +const ACL_USERS = require("../commands/ACL_USERS"); +const ACL_WHOAMI = require("../commands/ACL_WHOAMI"); +const ASKING = require("../commands/ASKING"); +const AUTH = require("../commands/AUTH"); +const BGREWRITEAOF = require("../commands/BGREWRITEAOF"); +const BGSAVE = require("../commands/BGSAVE"); +const CLIENT_ID = require("../commands/CLIENT_ID"); +const CLIENT_INFO = require("../commands/CLIENT_INFO"); +const CLUSTER_ADDSLOTS = require("../commands/CLUSTER_ADDSLOTS"); +const CLUSTER_FLUSHSLOTS = require("../commands/CLUSTER_FLUSHSLOTS"); +const CLUSTER_INFO = require("../commands/CLUSTER_INFO"); +const CLUSTER_NODES = require("../commands/CLUSTER_NODES"); +const CLUSTER_MEET = require("../commands/CLUSTER_MEET"); +const CLUSTER_RESET = require("../commands/CLUSTER_RESET"); +const CLUSTER_SETSLOT = require("../commands/CLUSTER_SETSLOT"); +const CLUSTER_SLOTS = require("../commands/CLUSTER_SLOTS"); +const COMMAND_COUNT = require("../commands/COMMAND_COUNT"); +const COMMAND_GETKEYS = require("../commands/COMMAND_GETKEYS"); +const COMMAND_INFO = require("../commands/COMMAND_INFO"); +const COMMAND = require("../commands/COMMAND"); +const CONFIG_GET = require("../commands/CONFIG_GET"); +const CONFIG_RESETASTAT = require("../commands/CONFIG_RESETSTAT"); +const CONFIG_REWRITE = require("../commands/CONFIG_REWRITE"); +const CONFIG_SET = require("../commands/CONFIG_SET"); +const DBSIZE = require("../commands/DBSIZE"); +const DISCARD = require("../commands/DISCARD"); +const ECHO = require("../commands/ECHO"); +const FAILOVER = require("../commands/FAILOVER"); +const FLUSHALL = require("../commands/FLUSHALL"); +const FLUSHDB = require("../commands/FLUSHDB"); +const HELLO = require("../commands/HELLO"); +const INFO = require("../commands/INFO"); +const KEYS = require("../commands/KEYS"); +const LASTSAVE = require("../commands/LASTSAVE"); +const LOLWUT = require("../commands/LOLWUT"); +const MEMOERY_DOCTOR = require("../commands/MEMORY_DOCTOR"); +const MEMORY_MALLOC_STATS = require("../commands/MEMORY_MALLOC-STATS"); +const MEMORY_PURGE = require("../commands/MEMORY_PURGE"); +const MEMORY_STATS = require("../commands/MEMORY_STATS"); +const MEMORY_USAGE = require("../commands/MEMORY_USAGE"); +const MODULE_LIST = require("../commands/MODULE_LIST"); +const MODULE_LOAD = require("../commands/MODULE_LOAD"); +const MODULE_UNLOAD = require("../commands/MODULE_UNLOAD"); +const MOVE = require("../commands/MOVE"); +const PING = require("../commands/PING"); +const PUBSUB_CHANNELS = require("../commands/PUBSUB_CHANNELS"); +const PUBSUB_NUMPAT = require("../commands/PUBSUB_NUMPAT"); +const PUBSUB_NUMSUB = require("../commands/PUBSUB_NUMSUB"); +const RANDOMKEY = require("../commands/RANDOMKEY"); +const READONLY = require("../commands/READONLY"); +const READWRITE = require("../commands/READWRITE"); +const REPLICAOF = require("../commands/REPLICAOF"); +const RESTORE_ASKING = require("../commands/RESTORE-ASKING"); +const ROLE = require("../commands/ROLE"); +const SAVE = require("../commands/SAVE"); +const SCAN = require("../commands/SCAN"); +const SCRIPT_DEBUG = require("../commands/SCRIPT_DEBUG"); +const SCRIPT_EXISTS = require("../commands/SCRIPT_EXISTS"); +const SCRIPT_FLUSH = require("../commands/SCRIPT_FLUSH"); +const SCRIPT_KILL = require("../commands/SCRIPT_KILL"); +const SCRIPT_LOAD = require("../commands/SCRIPT_LOAD"); +const SHUTDOWN = require("../commands/SHUTDOWN"); +const SWAPDB = require("../commands/SWAPDB"); +const TIME = require("../commands/TIME"); +const UNWATCH = require("../commands/UNWATCH"); +const WAIT = require("../commands/WAIT"); +exports.default = { + ...commands_1.default, + ACL_CAT, + aclCat: ACL_CAT, + ACL_DELUSER, + aclDelUser: ACL_DELUSER, + ACL_GENPASS, + aclGenPass: ACL_GENPASS, + ACL_GETUSER, + aclGetUser: ACL_GETUSER, + ACL_LIST, + aclList: ACL_LIST, + ACL_LOAD, + aclLoad: ACL_LOAD, + ACL_LOG_RESET, + aclLogReset: ACL_LOG_RESET, + ACL_LOG, + aclLog: ACL_LOG, + ACL_SAVE, + aclSave: ACL_SAVE, + ACL_SETUSER, + aclSetUser: ACL_SETUSER, + ACL_USERS, + aclUsers: ACL_USERS, + ACL_WHOAMI, + aclWhoAmI: ACL_WHOAMI, + ASKING, + asking: ASKING, + AUTH, + auth: AUTH, + BGREWRITEAOF, + bgRewriteAof: BGREWRITEAOF, + BGSAVE, + bgSave: BGSAVE, + CLIENT_ID, + clientId: CLIENT_ID, + CLIENT_INFO, + clientInfo: CLIENT_INFO, + CLUSTER_ADDSLOTS, + clusterAddSlots: CLUSTER_ADDSLOTS, + CLUSTER_FLUSHSLOTS, + clusterFlushSlots: CLUSTER_FLUSHSLOTS, + CLUSTER_INFO, + clusterInfo: CLUSTER_INFO, + CLUSTER_NODES, + clusterNodes: CLUSTER_NODES, + CLUSTER_MEET, + clusterMeet: CLUSTER_MEET, + CLUSTER_RESET, + clusterReset: CLUSTER_RESET, + CLUSTER_SETSLOT, + clusterSetSlot: CLUSTER_SETSLOT, + CLUSTER_SLOTS, + clusterSlots: CLUSTER_SLOTS, + COMMAND_COUNT, + commandCount: COMMAND_COUNT, + COMMAND_GETKEYS, + commandGetKeys: COMMAND_GETKEYS, + COMMAND_INFO, + commandInfo: COMMAND_INFO, + COMMAND, + command: COMMAND, + CONFIG_GET, + configGet: CONFIG_GET, + CONFIG_RESETASTAT, + configResetStat: CONFIG_RESETASTAT, + CONFIG_REWRITE, + configRewrite: CONFIG_REWRITE, + CONFIG_SET, + configSet: CONFIG_SET, + DBSIZE, + dbSize: DBSIZE, + DISCARD, + discard: DISCARD, + ECHO, + echo: ECHO, + FAILOVER, + failover: FAILOVER, + FLUSHALL, + flushAll: FLUSHALL, + FLUSHDB, + flushDb: FLUSHDB, + HELLO, + hello: HELLO, + INFO, + info: INFO, + KEYS, + keys: KEYS, + LASTSAVE, + lastSave: LASTSAVE, + LOLWUT, + lolwut: LOLWUT, + MEMOERY_DOCTOR, + memoryDoctor: MEMOERY_DOCTOR, + 'MEMORY_MALLOC-STATS': MEMORY_MALLOC_STATS, + memoryMallocStats: MEMORY_MALLOC_STATS, + MEMORY_PURGE, + memoryPurge: MEMORY_PURGE, + MEMORY_STATS, + memoryStats: MEMORY_STATS, + MEMORY_USAGE, + memoryUsage: MEMORY_USAGE, + MODULE_LIST, + moduleList: MODULE_LIST, + MODULE_LOAD, + moduleLoad: MODULE_LOAD, + MODULE_UNLOAD, + moduleUnload: MODULE_UNLOAD, + MOVE, + move: MOVE, + PING, + ping: PING, + PUBSUB_CHANNELS, + pubSubChannels: PUBSUB_CHANNELS, + PUBSUB_NUMPAT, + pubSubNumPat: PUBSUB_NUMPAT, + PUBSUB_NUMSUB, + pubSubNumSub: PUBSUB_NUMSUB, + RANDOMKEY, + randomKey: RANDOMKEY, + READONLY, + readonly: READONLY, + READWRITE, + readwrite: READWRITE, + REPLICAOF, + replicaOf: REPLICAOF, + 'RESTORE-ASKING': RESTORE_ASKING, + restoreAsking: RESTORE_ASKING, + ROLE, + role: ROLE, + SAVE, + save: SAVE, + SCAN, + scan: SCAN, + SCRIPT_DEBUG, + scriptDebug: SCRIPT_DEBUG, + SCRIPT_EXISTS, + scriptExists: SCRIPT_EXISTS, + SCRIPT_FLUSH, + scriptFlush: SCRIPT_FLUSH, + SCRIPT_KILL, + scriptKill: SCRIPT_KILL, + SCRIPT_LOAD, + scriptLoad: SCRIPT_LOAD, + SHUTDOWN, + shutdown: SHUTDOWN, + SWAPDB, + swapDb: SWAPDB, + TIME, + time: TIME, + UNWATCH, + unwatch: UNWATCH, + WAIT, + wait: WAIT +}; diff --git a/node_modules/@node-redis/client/dist/lib/client/index.d.ts b/node_modules/@node-redis/client/dist/lib/client/index.d.ts new file mode 100644 index 0000000000..9f58d5a73d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/index.d.ts @@ -0,0 +1,86 @@ +/// +import COMMANDS from './commands'; +import { RedisCommand, RedisCommandArguments, RedisCommandRawReply, RedisCommandReply, RedisModules, RedisPlugins, RedisScript, RedisScripts } from '../commands'; +import { RedisSocketOptions } from './socket'; +import { PubSubListener, QueueCommandOptions } from './commands-queue'; +import { RedisClientMultiCommandType } from './multi-command'; +import { RedisMultiQueuedCommand } from '../multi-command'; +import { EventEmitter } from 'events'; +import { CommandOptions } from '../command-options'; +import { ScanOptions, ZMember } from '../commands/generic-transformers'; +import { ScanCommandOptions } from '../commands/SCAN'; +import { HScanTuple } from '../commands/HSCAN'; +import { LegacyCommandArguments } from '../commander'; +import { Options as PoolOptions } from 'generic-pool'; +export interface RedisClientOptions extends RedisPlugins { + url?: string; + socket?: RedisSocketOptions; + username?: string; + password?: string; + database?: number; + commandsQueueMaxLength?: number; + readonly?: boolean; + legacyMode?: boolean; + isolationPoolOptions?: PoolOptions; +} +export declare type RedisClientCommandSignature = (...args: Parameters | [options: CommandOptions, ...rest: Parameters]) => Promise>; +declare type WithCommands = { + [P in keyof typeof COMMANDS]: RedisClientCommandSignature<(typeof COMMANDS)[P]>; +}; +export declare type WithModules = { + [P in keyof M as M[P] extends never ? never : P]: { + [C in keyof M[P]]: RedisClientCommandSignature; + }; +}; +export declare type WithScripts = { + [P in keyof S as S[P] extends never ? never : P]: RedisClientCommandSignature; +}; +export declare type RedisClientType, S extends RedisScripts = Record> = RedisClient & WithCommands & WithModules & WithScripts; +export declare type InstantiableRedisClient = new (...args: ConstructorParameters) => RedisClientType; +export interface ClientCommandOptions extends QueueCommandOptions { + isolated?: boolean; +} +declare type ClientLegacyCallback = (err: Error | null, reply?: RedisCommandRawReply) => void; +export declare type ClientLegacyCommandArguments = LegacyCommandArguments | [...LegacyCommandArguments, ClientLegacyCallback]; +export default class RedisClient extends EventEmitter { + #private; + static commandOptions(options: ClientCommandOptions): CommandOptions; + static extend, S extends RedisScripts = Record>(plugins?: RedisPlugins): InstantiableRedisClient; + static create, S extends RedisScripts = Record>(options?: RedisClientOptions): RedisClientType; + static parseURL(url: string): RedisClientOptions, Record>; + get options(): RedisClientOptions | undefined; + get isOpen(): boolean; + get v4(): Record; + constructor(options?: RedisClientOptions); + duplicate(overrides?: Partial>): RedisClientType; + connect(): Promise; + commandsExecutor(command: RedisCommand, args: Array): Promise>; + sendCommand(args: RedisCommandArguments, options?: ClientCommandOptions, bufferMode?: boolean): Promise; + scriptsExecutor(script: RedisScript, args: Array): Promise>; + executeScript(script: RedisScript, args: RedisCommandArguments, options?: ClientCommandOptions, bufferMode?: boolean): Promise>; + SELECT(db: number): Promise; + SELECT(options: CommandOptions, db: number): Promise; + select: { + (db: number): Promise; + (options: CommandOptions, db: number): Promise; + }; + SUBSCRIBE(channels: string | Array, listener: PubSubListener, bufferMode?: T): Promise; + subscribe: (channels: string | Array, listener: PubSubListener, bufferMode?: T | undefined) => Promise; + PSUBSCRIBE(patterns: string | Array, listener: PubSubListener, bufferMode?: T): Promise; + pSubscribe: (patterns: string | Array, listener: PubSubListener, bufferMode?: T | undefined) => Promise; + UNSUBSCRIBE(channels?: string | Array, listener?: PubSubListener, bufferMode?: T): Promise; + unsubscribe: (channels?: string | string[] | undefined, listener?: PubSubListener | undefined, bufferMode?: T | undefined) => Promise; + PUNSUBSCRIBE(patterns?: string | Array, listener?: PubSubListener, bufferMode?: T): Promise; + pUnsubscribe: (patterns?: string | string[] | undefined, listener?: PubSubListener | undefined, bufferMode?: T | undefined) => Promise; + QUIT(): Promise; + quit: () => Promise; + executeIsolated(fn: (client: RedisClientType) => T | Promise): Promise; + multi(): RedisClientMultiCommandType; + multiExecutor(commands: Array, chainId?: symbol): Promise>; + scanIterator(options?: ScanCommandOptions): AsyncIterable; + hScanIterator(key: string, options?: ScanOptions): AsyncIterable; + sScanIterator(key: string, options?: ScanOptions): AsyncIterable; + zScanIterator(key: string, options?: ScanOptions): AsyncIterable; + disconnect(): Promise; +} +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/client/index.js b/node_modules/@node-redis/client/dist/lib/client/index.js new file mode 100644 index 0000000000..f1e695da80 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/index.js @@ -0,0 +1,426 @@ +"use strict"; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var _RedisClient_instances, _RedisClient_options, _RedisClient_socket, _RedisClient_queue, _RedisClient_isolationPool, _RedisClient_v4, _RedisClient_selectedDB, _RedisClient_initiateOptions, _RedisClient_initiateSocket, _RedisClient_initiateQueue, _RedisClient_legacyMode, _RedisClient_defineLegacyCommand, _RedisClient_sendCommand, _RedisClient_subscribe, _RedisClient_unsubscribe, _RedisClient_tick, _RedisClient_destroyIsolationPool; +Object.defineProperty(exports, "__esModule", { value: true }); +const commands_1 = require("./commands"); +const socket_1 = require("./socket"); +const commands_queue_1 = require("./commands-queue"); +const multi_command_1 = require("./multi-command"); +const events_1 = require("events"); +const command_options_1 = require("../command-options"); +const commander_1 = require("../commander"); +const generic_pool_1 = require("generic-pool"); +const errors_1 = require("../errors"); +const url_1 = require("url"); +class RedisClient extends events_1.EventEmitter { + constructor(options) { + super(); + _RedisClient_instances.add(this); + _RedisClient_options.set(this, void 0); + _RedisClient_socket.set(this, void 0); + _RedisClient_queue.set(this, void 0); + _RedisClient_isolationPool.set(this, void 0); + _RedisClient_v4.set(this, {}); + _RedisClient_selectedDB.set(this, 0); + Object.defineProperty(this, "select", { + enumerable: true, + configurable: true, + writable: true, + value: this.SELECT + }); + Object.defineProperty(this, "subscribe", { + enumerable: true, + configurable: true, + writable: true, + value: this.SUBSCRIBE + }); + Object.defineProperty(this, "pSubscribe", { + enumerable: true, + configurable: true, + writable: true, + value: this.PSUBSCRIBE + }); + Object.defineProperty(this, "unsubscribe", { + enumerable: true, + configurable: true, + writable: true, + value: this.UNSUBSCRIBE + }); + Object.defineProperty(this, "pUnsubscribe", { + enumerable: true, + configurable: true, + writable: true, + value: this.PUNSUBSCRIBE + }); + Object.defineProperty(this, "quit", { + enumerable: true, + configurable: true, + writable: true, + value: this.QUIT + }); + __classPrivateFieldSet(this, _RedisClient_options, __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_initiateOptions).call(this, options), "f"); + __classPrivateFieldSet(this, _RedisClient_socket, __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_initiateSocket).call(this), "f"); + __classPrivateFieldSet(this, _RedisClient_queue, __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_initiateQueue).call(this), "f"); + __classPrivateFieldSet(this, _RedisClient_isolationPool, (0, generic_pool_1.createPool)({ + create: async () => { + const duplicate = this.duplicate({ + isolationPoolOptions: undefined + }); + await duplicate.connect(); + return duplicate; + }, + destroy: client => client.disconnect() + }, options === null || options === void 0 ? void 0 : options.isolationPoolOptions), "f"); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_legacyMode).call(this); + } + static commandOptions(options) { + return (0, command_options_1.commandOptions)(options); + } + static extend(plugins) { + const Client = (0, commander_1.extendWithModulesAndScripts)({ + BaseClass: RedisClient, + modules: plugins === null || plugins === void 0 ? void 0 : plugins.modules, + modulesCommandsExecutor: RedisClient.prototype.commandsExecutor, + scripts: plugins === null || plugins === void 0 ? void 0 : plugins.scripts, + scriptsExecutor: RedisClient.prototype.scriptsExecutor + }); + if (Client !== RedisClient) { + Client.prototype.Multi = multi_command_1.default.extend(plugins); + } + return Client; + } + static create(options) { + return new (RedisClient.extend(options))(options); + } + static parseURL(url) { + // https://www.iana.org/assignments/uri-schemes/prov/redis + const { hostname, port, protocol, username, password, pathname } = new url_1.URL(url), parsed = { + socket: { + host: hostname + } + }; + if (protocol === 'rediss:') { + parsed.socket.tls = true; + } + else if (protocol !== 'redis:') { + throw new TypeError('Invalid protocol'); + } + if (port) { + parsed.socket.port = Number(port); + } + if (username) { + parsed.username = decodeURIComponent(username); + } + if (password) { + parsed.password = decodeURIComponent(password); + } + if (pathname.length > 1) { + const database = Number(pathname.substring(1)); + if (isNaN(database)) { + throw new TypeError('Invalid pathname'); + } + parsed.database = database; + } + return parsed; + } + get options() { + return __classPrivateFieldGet(this, _RedisClient_options, "f"); + } + get isOpen() { + return __classPrivateFieldGet(this, _RedisClient_socket, "f").isOpen; + } + get v4() { + var _a; + if (!((_a = __classPrivateFieldGet(this, _RedisClient_options, "f")) === null || _a === void 0 ? void 0 : _a.legacyMode)) { + throw new Error('the client is not in "legacy mode"'); + } + return __classPrivateFieldGet(this, _RedisClient_v4, "f"); + } + duplicate(overrides) { + return new (Object.getPrototypeOf(this).constructor)({ + ...__classPrivateFieldGet(this, _RedisClient_options, "f"), + ...overrides + }); + } + async connect() { + await __classPrivateFieldGet(this, _RedisClient_socket, "f").connect(); + } + async commandsExecutor(command, args) { + const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(command, args); + return (0, commander_1.transformCommandReply)(command, await __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_sendCommand).call(this, redisArgs, options, command.BUFFER_MODE), redisArgs.preserve); + } + sendCommand(args, options, bufferMode) { + return __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_sendCommand).call(this, args, options, bufferMode); + } + async scriptsExecutor(script, args) { + const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(script, args); + return (0, commander_1.transformCommandReply)(script, await this.executeScript(script, redisArgs, options, script.BUFFER_MODE), redisArgs.preserve); + } + async executeScript(script, args, options, bufferMode) { + var _a, _b; + try { + return await __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_sendCommand).call(this, [ + 'EVALSHA', + script.SHA1, + script.NUMBER_OF_KEYS.toString(), + ...args + ], options, bufferMode); + } + catch (err) { + if (!((_b = (_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.startsWith) === null || _b === void 0 ? void 0 : _b.call(_a, 'NOSCRIPT'))) { + throw err; + } + return await __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_sendCommand).call(this, [ + 'EVAL', + script.SCRIPT, + script.NUMBER_OF_KEYS.toString(), + ...args + ], options, bufferMode); + } + } + async SELECT(options, db) { + if (!(0, command_options_1.isCommandOptions)(options)) { + db = options; + options = null; + } + await __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_sendCommand).call(this, ['SELECT', db.toString()], options); + __classPrivateFieldSet(this, _RedisClient_selectedDB, db, "f"); + } + SUBSCRIBE(channels, listener, bufferMode) { + return __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_subscribe).call(this, commands_queue_1.PubSubSubscribeCommands.SUBSCRIBE, channels, listener, bufferMode); + } + PSUBSCRIBE(patterns, listener, bufferMode) { + return __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_subscribe).call(this, commands_queue_1.PubSubSubscribeCommands.PSUBSCRIBE, patterns, listener, bufferMode); + } + UNSUBSCRIBE(channels, listener, bufferMode) { + return __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_unsubscribe).call(this, commands_queue_1.PubSubUnsubscribeCommands.UNSUBSCRIBE, channels, listener, bufferMode); + } + PUNSUBSCRIBE(patterns, listener, bufferMode) { + return __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_unsubscribe).call(this, commands_queue_1.PubSubUnsubscribeCommands.PUNSUBSCRIBE, patterns, listener, bufferMode); + } + QUIT() { + return __classPrivateFieldGet(this, _RedisClient_socket, "f").quit(() => { + const quitPromise = __classPrivateFieldGet(this, _RedisClient_queue, "f").addCommand(['QUIT']); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_tick).call(this); + return Promise.all([ + quitPromise, + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_destroyIsolationPool).call(this) + ]); + }); + } + executeIsolated(fn) { + return __classPrivateFieldGet(this, _RedisClient_isolationPool, "f").use(fn); + } + multi() { + var _a; + return new this.Multi(this.multiExecutor.bind(this), (_a = __classPrivateFieldGet(this, _RedisClient_options, "f")) === null || _a === void 0 ? void 0 : _a.legacyMode); + } + multiExecutor(commands, chainId) { + const promise = Promise.all(commands.map(({ args }) => { + return __classPrivateFieldGet(this, _RedisClient_queue, "f").addCommand(args, RedisClient.commandOptions({ + chainId + })); + })); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_tick).call(this); + return promise; + } + async *scanIterator(options) { + let cursor = 0; + do { + const reply = await this.scan(cursor, options); + cursor = reply.cursor; + for (const key of reply.keys) { + yield key; + } + } while (cursor !== 0); + } + async *hScanIterator(key, options) { + let cursor = 0; + do { + const reply = await this.hScan(key, cursor, options); + cursor = reply.cursor; + for (const tuple of reply.tuples) { + yield tuple; + } + } while (cursor !== 0); + } + async *sScanIterator(key, options) { + let cursor = 0; + do { + const reply = await this.sScan(key, cursor, options); + cursor = reply.cursor; + for (const member of reply.members) { + yield member; + } + } while (cursor !== 0); + } + async *zScanIterator(key, options) { + let cursor = 0; + do { + const reply = await this.zScan(key, cursor, options); + cursor = reply.cursor; + for (const member of reply.members) { + yield member; + } + } while (cursor !== 0); + } + async disconnect() { + __classPrivateFieldGet(this, _RedisClient_queue, "f").flushAll(new errors_1.DisconnectsClientError()); + __classPrivateFieldGet(this, _RedisClient_socket, "f").disconnect(); + await __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_destroyIsolationPool).call(this); + } +} +exports.default = RedisClient; +_RedisClient_options = new WeakMap(), _RedisClient_socket = new WeakMap(), _RedisClient_queue = new WeakMap(), _RedisClient_isolationPool = new WeakMap(), _RedisClient_v4 = new WeakMap(), _RedisClient_selectedDB = new WeakMap(), _RedisClient_instances = new WeakSet(), _RedisClient_initiateOptions = function _RedisClient_initiateOptions(options) { + if (options === null || options === void 0 ? void 0 : options.url) { + const parsed = RedisClient.parseURL(options.url); + if (options.socket) { + parsed.socket = Object.assign(options.socket, parsed.socket); + } + Object.assign(options, parsed); + } + if (options === null || options === void 0 ? void 0 : options.database) { + __classPrivateFieldSet(this, _RedisClient_selectedDB, options.database, "f"); + } + return options; +}, _RedisClient_initiateSocket = function _RedisClient_initiateSocket() { + var _a; + const socketInitiator = async () => { + var _a, _b, _c, _d; + const promises = []; + if (__classPrivateFieldGet(this, _RedisClient_selectedDB, "f") !== 0) { + promises.push(__classPrivateFieldGet(this, _RedisClient_queue, "f").addCommand(['SELECT', __classPrivateFieldGet(this, _RedisClient_selectedDB, "f").toString()], { asap: true })); + } + if ((_a = __classPrivateFieldGet(this, _RedisClient_options, "f")) === null || _a === void 0 ? void 0 : _a.readonly) { + promises.push(__classPrivateFieldGet(this, _RedisClient_queue, "f").addCommand(commands_1.default.READONLY.transformArguments(), { asap: true })); + } + if (((_b = __classPrivateFieldGet(this, _RedisClient_options, "f")) === null || _b === void 0 ? void 0 : _b.username) || ((_c = __classPrivateFieldGet(this, _RedisClient_options, "f")) === null || _c === void 0 ? void 0 : _c.password)) { + promises.push(__classPrivateFieldGet(this, _RedisClient_queue, "f").addCommand(commands_1.default.AUTH.transformArguments({ + username: __classPrivateFieldGet(this, _RedisClient_options, "f").username, + password: (_d = __classPrivateFieldGet(this, _RedisClient_options, "f").password) !== null && _d !== void 0 ? _d : '' + }), { asap: true })); + } + const resubscribePromise = __classPrivateFieldGet(this, _RedisClient_queue, "f").resubscribe(); + if (resubscribePromise) { + promises.push(resubscribePromise); + } + if (promises.length) { + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_tick).call(this, true); + await Promise.all(promises); + } + }; + return new socket_1.default(socketInitiator, (_a = __classPrivateFieldGet(this, _RedisClient_options, "f")) === null || _a === void 0 ? void 0 : _a.socket) + .on('data', data => __classPrivateFieldGet(this, _RedisClient_queue, "f").parseResponse(data)) + .on('error', err => { + this.emit('error', err); + __classPrivateFieldGet(this, _RedisClient_queue, "f").flushWaitingForReply(err); + }) + .on('connect', () => this.emit('connect')) + .on('ready', () => { + this.emit('ready'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_tick).call(this); + }) + .on('reconnecting', () => this.emit('reconnecting')) + .on('drain', () => __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_tick).call(this)) + .on('end', () => this.emit('end')); +}, _RedisClient_initiateQueue = function _RedisClient_initiateQueue() { + var _a; + return new commands_queue_1.default((_a = __classPrivateFieldGet(this, _RedisClient_options, "f")) === null || _a === void 0 ? void 0 : _a.commandsQueueMaxLength); +}, _RedisClient_legacyMode = function _RedisClient_legacyMode() { + var _a; + if (!((_a = __classPrivateFieldGet(this, _RedisClient_options, "f")) === null || _a === void 0 ? void 0 : _a.legacyMode)) + return; + __classPrivateFieldGet(this, _RedisClient_v4, "f").sendCommand = __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_sendCommand).bind(this); + this.sendCommand = (...args) => { + let callback; + if (typeof args[args.length - 1] === 'function') { + callback = args.pop(); + } + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_sendCommand).call(this, (0, commander_1.transformLegacyCommandArguments)(args)) + .then((reply) => { + if (!callback) + return; + // https://github.com/NodeRedis/node-redis#commands:~:text=minimal%20parsing + callback(null, reply); + }) + .catch((err) => { + if (!callback) { + this.emit('error', err); + return; + } + callback(err); + }); + }; + for (const name of Object.keys(commands_1.default)) { + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, name); + } + // hard coded commands + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'SELECT'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'select'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'SUBSCRIBE'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'subscribe'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'PSUBSCRIBE'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'pSubscribe'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'UNSUBSCRIBE'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'unsubscribe'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'PUNSUBSCRIBE'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'pUnsubscribe'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'QUIT'); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_defineLegacyCommand).call(this, 'quit'); +}, _RedisClient_defineLegacyCommand = function _RedisClient_defineLegacyCommand(name) { + __classPrivateFieldGet(this, _RedisClient_v4, "f")[name] = this[name].bind(this); + this[name] = (...args) => { + this.sendCommand(name, ...args); + }; +}, _RedisClient_sendCommand = function _RedisClient_sendCommand(args, options, bufferMode) { + if (!__classPrivateFieldGet(this, _RedisClient_socket, "f").isOpen) { + return Promise.reject(new errors_1.ClientClosedError()); + } + if (options === null || options === void 0 ? void 0 : options.isolated) { + return this.executeIsolated(isolatedClient => isolatedClient.sendCommand(args, { + ...options, + isolated: false + })); + } + const promise = __classPrivateFieldGet(this, _RedisClient_queue, "f").addCommand(args, options, bufferMode); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_tick).call(this); + return promise; +}, _RedisClient_subscribe = function _RedisClient_subscribe(command, channels, listener, bufferMode) { + const promise = __classPrivateFieldGet(this, _RedisClient_queue, "f").subscribe(command, channels, listener, bufferMode); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_tick).call(this); + return promise; +}, _RedisClient_unsubscribe = function _RedisClient_unsubscribe(command, channels, listener, bufferMode) { + const promise = __classPrivateFieldGet(this, _RedisClient_queue, "f").unsubscribe(command, channels, listener, bufferMode); + __classPrivateFieldGet(this, _RedisClient_instances, "m", _RedisClient_tick).call(this); + return promise; +}, _RedisClient_tick = function _RedisClient_tick(force = false) { + if (__classPrivateFieldGet(this, _RedisClient_socket, "f").writableNeedDrain || (!force && !__classPrivateFieldGet(this, _RedisClient_socket, "f").isReady)) { + return; + } + __classPrivateFieldGet(this, _RedisClient_socket, "f").cork(); + while (!__classPrivateFieldGet(this, _RedisClient_socket, "f").writableNeedDrain) { + const args = __classPrivateFieldGet(this, _RedisClient_queue, "f").getCommandToSend(); + if (args === undefined) + break; + __classPrivateFieldGet(this, _RedisClient_socket, "f").writeCommand(args); + } +}, _RedisClient_destroyIsolationPool = async function _RedisClient_destroyIsolationPool() { + await __classPrivateFieldGet(this, _RedisClient_isolationPool, "f").drain(); + await __classPrivateFieldGet(this, _RedisClient_isolationPool, "f").clear(); +}; +(0, commander_1.extendWithCommands)({ + BaseClass: RedisClient, + commands: commands_1.default, + executor: RedisClient.prototype.commandsExecutor +}); +RedisClient.prototype.Multi = multi_command_1.default; diff --git a/node_modules/@node-redis/client/dist/lib/client/multi-command.d.ts b/node_modules/@node-redis/client/dist/lib/client/multi-command.d.ts new file mode 100644 index 0000000000..3c93e332ef --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/multi-command.d.ts @@ -0,0 +1,30 @@ +import COMMANDS from './commands'; +import { RedisCommand, RedisCommandArguments, RedisCommandRawReply, RedisModules, RedisPlugins, RedisScript, RedisScripts } from '../commands'; +import RedisMultiCommand, { RedisMultiQueuedCommand } from '../multi-command'; +declare type RedisClientMultiCommandSignature = (...args: Parameters) => RedisClientMultiCommandType; +declare type WithCommands = { + [P in keyof typeof COMMANDS]: RedisClientMultiCommandSignature<(typeof COMMANDS)[P], M, S>; +}; +declare type WithModules = { + [P in keyof M as M[P] extends never ? never : P]: { + [C in keyof M[P]]: RedisClientMultiCommandSignature; + }; +}; +declare type WithScripts = { + [P in keyof S as S[P] extends never ? never : P]: RedisClientMultiCommandSignature; +}; +export declare type RedisClientMultiCommandType, S extends RedisScripts = Record> = RedisClientMultiCommand & WithCommands & WithModules & WithScripts; +export declare type RedisClientMultiExecutor = (queue: Array, chainId?: symbol) => Promise>; +export default class RedisClientMultiCommand { + #private; + static extend(plugins?: RedisPlugins): new (...args: ConstructorParameters) => RedisClientMultiCommandType; + readonly v4: Record; + constructor(executor: RedisClientMultiExecutor, legacyMode?: boolean); + commandsExecutor(command: RedisCommand, args: Array): this; + addCommand(args: RedisCommandArguments, transformReply?: RedisCommand['transformReply']): this; + scriptsExecutor(script: RedisScript, args: Array): this; + exec(execAsPipeline?: boolean): Promise>; + EXEC: (execAsPipeline?: boolean) => Promise>; + execAsPipeline(): Promise>; +} +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/client/multi-command.js b/node_modules/@node-redis/client/dist/lib/client/multi-command.js new file mode 100644 index 0000000000..cbfa0617df --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/multi-command.js @@ -0,0 +1,109 @@ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _RedisClientMultiCommand_instances, _RedisClientMultiCommand_multi, _RedisClientMultiCommand_executor, _RedisClientMultiCommand_legacyMode, _RedisClientMultiCommand_defineLegacyCommand; +Object.defineProperty(exports, "__esModule", { value: true }); +const commands_1 = require("./commands"); +const multi_command_1 = require("../multi-command"); +const commander_1 = require("../commander"); +class RedisClientMultiCommand { + constructor(executor, legacyMode = false) { + _RedisClientMultiCommand_instances.add(this); + _RedisClientMultiCommand_multi.set(this, new multi_command_1.default()); + _RedisClientMultiCommand_executor.set(this, void 0); + Object.defineProperty(this, "v4", { + enumerable: true, + configurable: true, + writable: true, + value: {} + }); + Object.defineProperty(this, "EXEC", { + enumerable: true, + configurable: true, + writable: true, + value: this.exec + }); + __classPrivateFieldSet(this, _RedisClientMultiCommand_executor, executor, "f"); + if (legacyMode) { + __classPrivateFieldGet(this, _RedisClientMultiCommand_instances, "m", _RedisClientMultiCommand_legacyMode).call(this); + } + } + static extend(plugins) { + return (0, commander_1.extendWithModulesAndScripts)({ + BaseClass: RedisClientMultiCommand, + modules: plugins === null || plugins === void 0 ? void 0 : plugins.modules, + modulesCommandsExecutor: RedisClientMultiCommand.prototype.commandsExecutor, + scripts: plugins === null || plugins === void 0 ? void 0 : plugins.scripts, + scriptsExecutor: RedisClientMultiCommand.prototype.scriptsExecutor + }); + } + commandsExecutor(command, args) { + return this.addCommand(command.transformArguments(...args), command.transformReply); + } + addCommand(args, transformReply) { + __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, "f").addCommand(args, transformReply); + return this; + } + scriptsExecutor(script, args) { + __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, "f").addScript(script, args); + return this; + } + async exec(execAsPipeline = false) { + if (execAsPipeline) { + return this.execAsPipeline(); + } + const commands = __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, "f").exec(); + if (!commands) + return []; + return __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, "f").handleExecReplies(await __classPrivateFieldGet(this, _RedisClientMultiCommand_executor, "f").call(this, commands, multi_command_1.default.generateChainId())); + } + async execAsPipeline() { + if (!__classPrivateFieldGet(this, _RedisClientMultiCommand_multi, "f").queue.length) + return []; + return __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, "f").transformReplies(await __classPrivateFieldGet(this, _RedisClientMultiCommand_executor, "f").call(this, __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, "f").queue)); + } +} +exports.default = RedisClientMultiCommand; +_RedisClientMultiCommand_multi = new WeakMap(), _RedisClientMultiCommand_executor = new WeakMap(), _RedisClientMultiCommand_instances = new WeakSet(), _RedisClientMultiCommand_legacyMode = function _RedisClientMultiCommand_legacyMode() { + this.v4.addCommand = this.addCommand.bind(this); + this.addCommand = (...args) => { + __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, "f").addCommand((0, commander_1.transformLegacyCommandArguments)(args)); + return this; + }; + this.v4.exec = this.exec.bind(this); + this.exec = (callback) => { + this.v4.exec() + .then((reply) => { + if (!callback) + return; + callback(null, reply); + }) + .catch((err) => { + if (!callback) { + // this.emit('error', err); + return; + } + callback(err); + }); + }; + for (const name of Object.keys(commands_1.default)) { + __classPrivateFieldGet(this, _RedisClientMultiCommand_instances, "m", _RedisClientMultiCommand_defineLegacyCommand).call(this, name); + } +}, _RedisClientMultiCommand_defineLegacyCommand = function _RedisClientMultiCommand_defineLegacyCommand(name) { + this.v4[name] = this[name].bind(this.v4); + this[name] = (...args) => this.addCommand(name, args); +}; +(0, commander_1.extendWithCommands)({ + BaseClass: RedisClientMultiCommand, + commands: commands_1.default, + executor: RedisClientMultiCommand.prototype.commandsExecutor +}); diff --git a/node_modules/@node-redis/client/dist/lib/client/socket.d.ts b/node_modules/@node-redis/client/dist/lib/client/socket.d.ts new file mode 100644 index 0000000000..4421afcedf --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/socket.d.ts @@ -0,0 +1,34 @@ +/// +import { EventEmitter } from 'events'; +import * as tls from 'tls'; +import { RedisCommandArguments } from '../commands'; +export interface RedisSocketCommonOptions { + connectTimeout?: number; + noDelay?: boolean; + keepAlive?: number | false; + reconnectStrategy?(retries: number): number | Error; +} +export interface RedisNetSocketOptions extends RedisSocketCommonOptions { + port?: number; + host?: string; +} +export interface RedisUnixSocketOptions extends RedisSocketCommonOptions { + path: string; +} +export interface RedisTlsSocketOptions extends RedisNetSocketOptions, tls.SecureContextOptions, tls.CommonConnectionOptions { + tls: true; +} +export declare type RedisSocketOptions = RedisNetSocketOptions | RedisUnixSocketOptions | RedisTlsSocketOptions; +export declare type RedisSocketInitiator = () => Promise; +export default class RedisSocket extends EventEmitter { + #private; + get isOpen(): boolean; + get isReady(): boolean; + get writableNeedDrain(): boolean; + constructor(initiator?: RedisSocketInitiator, options?: RedisSocketOptions); + connect(): Promise; + writeCommand(args: RedisCommandArguments): void; + disconnect(): void; + quit(fn: () => Promise): Promise; + cork(): void; +} diff --git a/node_modules/@node-redis/client/dist/lib/client/socket.js b/node_modules/@node-redis/client/dist/lib/client/socket.js new file mode 100644 index 0000000000..4156ad769d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/client/socket.js @@ -0,0 +1,203 @@ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _RedisSocket_instances, _a, _RedisSocket_initiateOptions, _RedisSocket_defaultReconnectStrategy, _RedisSocket_isUnixSocket, _RedisSocket_isTlsSocket, _RedisSocket_initiator, _RedisSocket_options, _RedisSocket_socket, _RedisSocket_isOpen, _RedisSocket_isReady, _RedisSocket_writableNeedDrain, _RedisSocket_connect, _RedisSocket_retryConnection, _RedisSocket_createSocket, _RedisSocket_createNetSocket, _RedisSocket_createTlsSocket, _RedisSocket_onSocketError, _RedisSocket_isCorked; +Object.defineProperty(exports, "__esModule", { value: true }); +const events_1 = require("events"); +const net = require("net"); +const tls = require("tls"); +const commander_1 = require("../commander"); +const errors_1 = require("../errors"); +const utils_1 = require("../utils"); +class RedisSocket extends events_1.EventEmitter { + constructor(initiator, options) { + super(); + _RedisSocket_instances.add(this); + _RedisSocket_initiator.set(this, void 0); + _RedisSocket_options.set(this, void 0); + _RedisSocket_socket.set(this, void 0); + _RedisSocket_isOpen.set(this, false); + _RedisSocket_isReady.set(this, false); + // `writable.writableNeedDrain` was added in v15.2.0 and therefore can't be used + // https://nodejs.org/api/stream.html#stream_writable_writableneeddrain + _RedisSocket_writableNeedDrain.set(this, false); + _RedisSocket_isCorked.set(this, false); + __classPrivateFieldSet(this, _RedisSocket_initiator, initiator, "f"); + __classPrivateFieldSet(this, _RedisSocket_options, __classPrivateFieldGet(RedisSocket, _a, "m", _RedisSocket_initiateOptions).call(RedisSocket, options), "f"); + } + get isOpen() { + return __classPrivateFieldGet(this, _RedisSocket_isOpen, "f"); + } + get isReady() { + return __classPrivateFieldGet(this, _RedisSocket_isReady, "f"); + } + get writableNeedDrain() { + return __classPrivateFieldGet(this, _RedisSocket_writableNeedDrain, "f"); + } + async connect() { + if (__classPrivateFieldGet(this, _RedisSocket_isOpen, "f")) { + throw new Error('Socket already opened'); + } + return __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_connect).call(this); + } + writeCommand(args) { + if (!__classPrivateFieldGet(this, _RedisSocket_socket, "f")) { + throw new errors_1.ClientClosedError(); + } + for (const toWrite of (0, commander_1.encodeCommand)(args)) { + __classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, !__classPrivateFieldGet(this, _RedisSocket_socket, "f").write(toWrite), "f"); + } + } + disconnect() { + if (!__classPrivateFieldGet(this, _RedisSocket_socket, "f")) { + throw new errors_1.ClientClosedError(); + } + else { + __classPrivateFieldSet(this, _RedisSocket_isOpen, __classPrivateFieldSet(this, _RedisSocket_isReady, false, "f"), "f"); + } + __classPrivateFieldGet(this, _RedisSocket_socket, "f").destroy(); + __classPrivateFieldSet(this, _RedisSocket_socket, undefined, "f"); + this.emit('end'); + } + async quit(fn) { + if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, "f")) { + throw new errors_1.ClientClosedError(); + } + __classPrivateFieldSet(this, _RedisSocket_isOpen, false, "f"); + await fn(); + this.disconnect(); + } + cork() { + if (!__classPrivateFieldGet(this, _RedisSocket_socket, "f")) { + return; + } + if (!__classPrivateFieldGet(this, _RedisSocket_isCorked, "f")) { + __classPrivateFieldGet(this, _RedisSocket_socket, "f").cork(); + __classPrivateFieldSet(this, _RedisSocket_isCorked, true, "f"); + queueMicrotask(() => { + var _b; + (_b = __classPrivateFieldGet(this, _RedisSocket_socket, "f")) === null || _b === void 0 ? void 0 : _b.uncork(); + __classPrivateFieldSet(this, _RedisSocket_isCorked, false, "f"); + }); + } + } +} +exports.default = RedisSocket; +_a = RedisSocket, _RedisSocket_initiator = new WeakMap(), _RedisSocket_options = new WeakMap(), _RedisSocket_socket = new WeakMap(), _RedisSocket_isOpen = new WeakMap(), _RedisSocket_isReady = new WeakMap(), _RedisSocket_writableNeedDrain = new WeakMap(), _RedisSocket_isCorked = new WeakMap(), _RedisSocket_instances = new WeakSet(), _RedisSocket_initiateOptions = function _RedisSocket_initiateOptions(options) { + var _b, _c, _d, _e, _f; + var _g, _h; + options !== null && options !== void 0 ? options : (options = {}); + if (!__classPrivateFieldGet(RedisSocket, _a, "m", _RedisSocket_isUnixSocket).call(RedisSocket, options)) { + (_b = (_g = options).port) !== null && _b !== void 0 ? _b : (_g.port = 6379); + (_c = (_h = options).host) !== null && _c !== void 0 ? _c : (_h.host = '127.0.0.1'); + } + (_d = options.connectTimeout) !== null && _d !== void 0 ? _d : (options.connectTimeout = 5000); + (_e = options.keepAlive) !== null && _e !== void 0 ? _e : (options.keepAlive = 5000); + (_f = options.noDelay) !== null && _f !== void 0 ? _f : (options.noDelay = true); + return options; +}, _RedisSocket_defaultReconnectStrategy = function _RedisSocket_defaultReconnectStrategy(retries) { + return Math.min(retries * 50, 500); +}, _RedisSocket_isUnixSocket = function _RedisSocket_isUnixSocket(options) { + return Object.prototype.hasOwnProperty.call(options, 'path'); +}, _RedisSocket_isTlsSocket = function _RedisSocket_isTlsSocket(options) { + return options.tls === true; +}, _RedisSocket_connect = async function _RedisSocket_connect(hadError) { + __classPrivateFieldSet(this, _RedisSocket_isOpen, true, "f"); + __classPrivateFieldSet(this, _RedisSocket_socket, await __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_retryConnection).call(this, 0, hadError), "f"); + __classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, false, "f"); + if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, "f")) { + this.disconnect(); + return; + } + this.emit('connect'); + if (__classPrivateFieldGet(this, _RedisSocket_initiator, "f")) { + try { + await __classPrivateFieldGet(this, _RedisSocket_initiator, "f").call(this); + } + catch (err) { + __classPrivateFieldGet(this, _RedisSocket_socket, "f").destroy(); + __classPrivateFieldSet(this, _RedisSocket_socket, undefined, "f"); + __classPrivateFieldSet(this, _RedisSocket_isOpen, false, "f"); + throw err; + } + if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, "f")) + return; + } + __classPrivateFieldSet(this, _RedisSocket_isReady, true, "f"); + this.emit('ready'); +}, _RedisSocket_retryConnection = async function _RedisSocket_retryConnection(retries, hadError) { + var _b, _c; + if (retries > 0 || hadError) { + this.emit('reconnecting'); + } + try { + return await __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_createSocket).call(this); + } + catch (err) { + this.emit('error', err); + if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, "f")) { + throw err; + } + const retryIn = ((_c = (_b = __classPrivateFieldGet(this, _RedisSocket_options, "f")) === null || _b === void 0 ? void 0 : _b.reconnectStrategy) !== null && _c !== void 0 ? _c : __classPrivateFieldGet(RedisSocket, _a, "m", _RedisSocket_defaultReconnectStrategy))(retries); + if (retryIn instanceof Error) { + throw retryIn; + } + await (0, utils_1.promiseTimeout)(retryIn); + return __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_retryConnection).call(this, retries + 1); + } +}, _RedisSocket_createSocket = function _RedisSocket_createSocket() { + return new Promise((resolve, reject) => { + const { connectEvent, socket } = __classPrivateFieldGet(RedisSocket, _a, "m", _RedisSocket_isTlsSocket).call(RedisSocket, __classPrivateFieldGet(this, _RedisSocket_options, "f")) ? + __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_createTlsSocket).call(this) : + __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_createNetSocket).call(this); + if (__classPrivateFieldGet(this, _RedisSocket_options, "f").connectTimeout) { + socket.setTimeout(__classPrivateFieldGet(this, _RedisSocket_options, "f").connectTimeout, () => socket.destroy(new errors_1.ConnectionTimeoutError())); + } + socket + .setNoDelay(__classPrivateFieldGet(this, _RedisSocket_options, "f").noDelay) + .setKeepAlive(__classPrivateFieldGet(this, _RedisSocket_options, "f").keepAlive !== false, __classPrivateFieldGet(this, _RedisSocket_options, "f").keepAlive || 0) + .once('error', reject) + .once(connectEvent, () => { + socket + .setTimeout(0) + .off('error', reject) + .once('error', (err) => __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_onSocketError).call(this, err)) + .once('close', hadError => { + if (!hadError && __classPrivateFieldGet(this, _RedisSocket_isOpen, "f")) { + __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_onSocketError).call(this, new errors_1.SocketClosedUnexpectedlyError()); + } + }) + .on('drain', () => { + __classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, false, "f"); + this.emit('drain'); + }) + .on('data', (data) => this.emit('data', data)); + resolve(socket); + }); + }); +}, _RedisSocket_createNetSocket = function _RedisSocket_createNetSocket() { + return { + connectEvent: 'connect', + socket: net.connect(__classPrivateFieldGet(this, _RedisSocket_options, "f")) // TODO + }; +}, _RedisSocket_createTlsSocket = function _RedisSocket_createTlsSocket() { + return { + connectEvent: 'secureConnect', + socket: tls.connect(__classPrivateFieldGet(this, _RedisSocket_options, "f")) // TODO + }; +}, _RedisSocket_onSocketError = function _RedisSocket_onSocketError(err) { + __classPrivateFieldSet(this, _RedisSocket_isReady, false, "f"); + this.emit('error', err); + __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_connect).call(this, true).catch(() => { + // the error was already emitted, silently ignore it + }); +}; diff --git a/node_modules/@node-redis/client/dist/lib/cluster/cluster-slots.d.ts b/node_modules/@node-redis/client/dist/lib/cluster/cluster-slots.d.ts new file mode 100644 index 0000000000..9561ceae67 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/cluster/cluster-slots.d.ts @@ -0,0 +1,21 @@ +/// +import { RedisClientType } from '../client'; +import { RedisClusterOptions } from '.'; +import { RedisModules, RedisScripts } from '../commands'; +export interface ClusterNode { + id: string; + client: RedisClientType; +} +declare type OnError = (err: unknown) => void; +export default class RedisClusterSlots { + #private; + constructor(options: RedisClusterOptions, onError: OnError); + connect(): Promise; + rediscover(startWith: RedisClientType): Promise; + getSlotMaster(slot: number): ClusterNode; + getClient(firstKey?: string | Buffer, isReadonly?: boolean): RedisClientType; + getMasters(): Array>; + getNodeByUrl(url: string): ClusterNode | undefined; + disconnect(): Promise; +} +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/cluster/cluster-slots.js b/node_modules/@node-redis/client/dist/lib/cluster/cluster-slots.js new file mode 100644 index 0000000000..805c274f17 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/cluster/cluster-slots.js @@ -0,0 +1,192 @@ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _RedisClusterSlots_instances, _RedisClusterSlots_options, _RedisClusterSlots_Client, _RedisClusterSlots_onError, _RedisClusterSlots_nodeByUrl, _RedisClusterSlots_slots, _RedisClusterSlots_discoverNodes, _RedisClusterSlots_runningRediscoverPromise, _RedisClusterSlots_rediscover, _RedisClusterSlots_reset, _RedisClusterSlots_clientOptionsDefaults, _RedisClusterSlots_initiateClient, _RedisClusterSlots_initiateClientForNode, _RedisClusterSlots_slotClientIterator, _RedisClusterSlots_getSlotClient, _RedisClusterSlots_randomClientIterator, _RedisClusterSlots_getRandomClient; +Object.defineProperty(exports, "__esModule", { value: true }); +const client_1 = require("../client"); +// We need to use 'require', because it's not possible with Typescript to import +// function that are exported as 'module.exports = function`, without esModuleInterop +// set to true. +const calculateSlot = require('cluster-key-slot'); +class RedisClusterSlots { + constructor(options, onError) { + _RedisClusterSlots_instances.add(this); + _RedisClusterSlots_options.set(this, void 0); + _RedisClusterSlots_Client.set(this, void 0); + _RedisClusterSlots_onError.set(this, void 0); + _RedisClusterSlots_nodeByUrl.set(this, new Map()); + _RedisClusterSlots_slots.set(this, []); + _RedisClusterSlots_runningRediscoverPromise.set(this, void 0); + _RedisClusterSlots_randomClientIterator.set(this, void 0); + __classPrivateFieldSet(this, _RedisClusterSlots_options, options, "f"); + __classPrivateFieldSet(this, _RedisClusterSlots_Client, client_1.default.extend(options), "f"); + __classPrivateFieldSet(this, _RedisClusterSlots_onError, onError, "f"); + } + async connect() { + for (const rootNode of __classPrivateFieldGet(this, _RedisClusterSlots_options, "f").rootNodes) { + if (await __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_discoverNodes).call(this, __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_clientOptionsDefaults).call(this, rootNode))) + return; + } + throw new Error('None of the root nodes is available'); + } + async rediscover(startWith) { + if (!__classPrivateFieldGet(this, _RedisClusterSlots_runningRediscoverPromise, "f")) { + __classPrivateFieldSet(this, _RedisClusterSlots_runningRediscoverPromise, __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_rediscover).call(this, startWith) + .finally(() => __classPrivateFieldSet(this, _RedisClusterSlots_runningRediscoverPromise, undefined, "f")), "f"); + } + return __classPrivateFieldGet(this, _RedisClusterSlots_runningRediscoverPromise, "f"); + } + getSlotMaster(slot) { + return __classPrivateFieldGet(this, _RedisClusterSlots_slots, "f")[slot].master; + } + getClient(firstKey, isReadonly) { + if (!firstKey) { + return __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_getRandomClient).call(this); + } + const slot = calculateSlot(firstKey); + if (!isReadonly || !__classPrivateFieldGet(this, _RedisClusterSlots_options, "f").useReplicas) { + return this.getSlotMaster(slot).client; + } + return __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_getSlotClient).call(this, slot); + } + getMasters() { + var _a; + const masters = []; + for (const node of __classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").values()) { + if ((_a = node.client.options) === null || _a === void 0 ? void 0 : _a.readonly) + continue; + masters.push(node); + } + return masters; + } + getNodeByUrl(url) { + return __classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").get(url); + } + async disconnect() { + await Promise.all([...__classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").values()].map(({ client }) => client.disconnect())); + __classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").clear(); + __classPrivateFieldGet(this, _RedisClusterSlots_slots, "f").splice(0); + } +} +exports.default = RedisClusterSlots; +_RedisClusterSlots_options = new WeakMap(), _RedisClusterSlots_Client = new WeakMap(), _RedisClusterSlots_onError = new WeakMap(), _RedisClusterSlots_nodeByUrl = new WeakMap(), _RedisClusterSlots_slots = new WeakMap(), _RedisClusterSlots_runningRediscoverPromise = new WeakMap(), _RedisClusterSlots_randomClientIterator = new WeakMap(), _RedisClusterSlots_instances = new WeakSet(), _RedisClusterSlots_discoverNodes = async function _RedisClusterSlots_discoverNodes(clientOptions) { + const client = __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_initiateClient).call(this, clientOptions); + await client.connect(); + try { + await __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_reset).call(this, await client.clusterNodes()); + return true; + } + catch (err) { + __classPrivateFieldGet(this, _RedisClusterSlots_onError, "f").call(this, err); + return false; + } + finally { + if (client.isOpen) { + await client.disconnect(); + } + } +}, _RedisClusterSlots_rediscover = async function _RedisClusterSlots_rediscover(startWith) { + if (await __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_discoverNodes).call(this, startWith.options)) + return; + for (const { client } of __classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").values()) { + if (client === startWith) + continue; + if (await __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_discoverNodes).call(this, client.options)) + return; + } + throw new Error('None of the cluster nodes is available'); +}, _RedisClusterSlots_reset = async function _RedisClusterSlots_reset(masters) { + // Override this.#slots and add not existing clients to this.#nodeByUrl + const promises = [], clientsInUse = new Set(); + for (const master of masters) { + const slot = { + master: __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_initiateClientForNode).call(this, master, false, clientsInUse, promises), + replicas: __classPrivateFieldGet(this, _RedisClusterSlots_options, "f").useReplicas ? + master.replicas.map(replica => __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_initiateClientForNode).call(this, replica, true, clientsInUse, promises)) : + [], + clientIterator: undefined // will be initiated in use + }; + for (const { from, to } of master.slots) { + for (let i = from; i <= to; i++) { + __classPrivateFieldGet(this, _RedisClusterSlots_slots, "f")[i] = slot; + } + } + } + // Remove unused clients from this.#nodeByUrl using clientsInUse + for (const [url, { client }] of __classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").entries()) { + if (clientsInUse.has(url)) + continue; + promises.push(client.disconnect()); + __classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").delete(url); + } + await Promise.all(promises); +}, _RedisClusterSlots_clientOptionsDefaults = function _RedisClusterSlots_clientOptionsDefaults(options) { + if (!__classPrivateFieldGet(this, _RedisClusterSlots_options, "f").defaults) + return options; + const merged = Object.assign({}, __classPrivateFieldGet(this, _RedisClusterSlots_options, "f").defaults, options); + if ((options === null || options === void 0 ? void 0 : options.socket) && __classPrivateFieldGet(this, _RedisClusterSlots_options, "f").defaults.socket) { + Object.assign({}, __classPrivateFieldGet(this, _RedisClusterSlots_options, "f").defaults.socket, options.socket); + } + return merged; +}, _RedisClusterSlots_initiateClient = function _RedisClusterSlots_initiateClient(options) { + return new (__classPrivateFieldGet(this, _RedisClusterSlots_Client, "f"))(__classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_clientOptionsDefaults).call(this, options)) + .on('error', __classPrivateFieldGet(this, _RedisClusterSlots_onError, "f")); +}, _RedisClusterSlots_initiateClientForNode = function _RedisClusterSlots_initiateClientForNode(nodeData, readonly, clientsInUse, promises) { + const url = `${nodeData.host}:${nodeData.port}`; + clientsInUse.add(url); + let node = __classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").get(url); + if (!node) { + node = { + id: nodeData.id, + client: __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_initiateClient).call(this, { + socket: { + host: nodeData.host, + port: nodeData.port + }, + readonly + }) + }; + promises.push(node.client.connect()); + __classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").set(url, node); + } + return node; +}, _RedisClusterSlots_slotClientIterator = function* _RedisClusterSlots_slotClientIterator(slotNumber) { + const slot = __classPrivateFieldGet(this, _RedisClusterSlots_slots, "f")[slotNumber]; + yield slot.master.client; + for (const replica of slot.replicas) { + yield replica.client; + } +}, _RedisClusterSlots_getSlotClient = function _RedisClusterSlots_getSlotClient(slotNumber) { + const slot = __classPrivateFieldGet(this, _RedisClusterSlots_slots, "f")[slotNumber]; + if (!slot.clientIterator) { + slot.clientIterator = __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_slotClientIterator).call(this, slotNumber); + } + const { done, value } = slot.clientIterator.next(); + if (done) { + slot.clientIterator = undefined; + return __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_getSlotClient).call(this, slotNumber); + } + return value; +}, _RedisClusterSlots_getRandomClient = function _RedisClusterSlots_getRandomClient() { + if (!__classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").size) { + throw new Error('Cluster is not connected'); + } + if (!__classPrivateFieldGet(this, _RedisClusterSlots_randomClientIterator, "f")) { + __classPrivateFieldSet(this, _RedisClusterSlots_randomClientIterator, __classPrivateFieldGet(this, _RedisClusterSlots_nodeByUrl, "f").values(), "f"); + } + const { done, value } = __classPrivateFieldGet(this, _RedisClusterSlots_randomClientIterator, "f").next(); + if (done) { + __classPrivateFieldSet(this, _RedisClusterSlots_randomClientIterator, undefined, "f"); + return __classPrivateFieldGet(this, _RedisClusterSlots_instances, "m", _RedisClusterSlots_getRandomClient).call(this); + } + return value.client; +}; diff --git a/node_modules/@node-redis/client/dist/lib/cluster/commands.d.ts b/node_modules/@node-redis/client/dist/lib/cluster/commands.d.ts new file mode 100644 index 0000000000..58c9cb2d72 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/cluster/commands.d.ts @@ -0,0 +1,534 @@ +import * as APPEND from '../commands/APPEND'; +import * as BITCOUNT from '../commands/BITCOUNT'; +import * as BITFIELD from '../commands/BITFIELD'; +import * as BITOP from '../commands/BITOP'; +import * as BITPOS from '../commands/BITPOS'; +import * as BLMOVE from '../commands/BLMOVE'; +import * as BLPOP from '../commands/BLPOP'; +import * as BRPOP from '../commands/BRPOP'; +import * as BRPOPLPUSH from '../commands/BRPOPLPUSH'; +import * as BZPOPMAX from '../commands/BZPOPMAX'; +import * as BZPOPMIN from '../commands/BZPOPMIN'; +import * as COPY from '../commands/COPY'; +import * as DECR from '../commands/DECR'; +import * as DECRBY from '../commands/DECRBY'; +import * as DEL from '../commands/DEL'; +import * as DUMP from '../commands/DUMP'; +import * as EVAL from '../commands/EVAL'; +import * as EVALSHA from '../commands/EVALSHA'; +import * as EXISTS from '../commands/EXISTS'; +import * as EXPIRE from '../commands/EXPIRE'; +import * as EXPIREAT from '../commands/EXPIREAT'; +import * as GEOADD from '../commands/GEOADD'; +import * as GEODIST from '../commands/GEODIST'; +import * as GEOHASH from '../commands/GEOHASH'; +import * as GEOPOS from '../commands/GEOPOS'; +import * as GEOSEARCH_WITH from '../commands/GEOSEARCH_WITH'; +import * as GEOSEARCH from '../commands/GEOSEARCH'; +import * as GEOSEARCHSTORE from '../commands/GEOSEARCHSTORE'; +import * as GET_BUFFER from '../commands/GET_BUFFER'; +import * as GET from '../commands/GET'; +import * as GETBIT from '../commands/GETBIT'; +import * as GETDEL from '../commands/GETDEL'; +import * as GETEX from '../commands/GETEX'; +import * as GETRANGE from '../commands/GETRANGE'; +import * as GETSET from '../commands/GETSET'; +import * as HDEL from '../commands/HDEL'; +import * as HEXISTS from '../commands/HEXISTS'; +import * as HGET from '../commands/HGET'; +import * as HGETALL from '../commands/HGETALL'; +import * as HINCRBY from '../commands/HINCRBY'; +import * as HINCRBYFLOAT from '../commands/HINCRBYFLOAT'; +import * as HKEYS from '../commands/HKEYS'; +import * as HLEN from '../commands/HLEN'; +import * as HMGET from '../commands/HMGET'; +import * as HRANDFIELD_COUNT_WITHVALUES from '../commands/HRANDFIELD_COUNT_WITHVALUES'; +import * as HRANDFIELD_COUNT from '../commands/HRANDFIELD_COUNT'; +import * as HRANDFIELD from '../commands/HRANDFIELD'; +import * as HSCAN from '../commands/HSCAN'; +import * as HSET from '../commands/HSET'; +import * as HSETNX from '../commands/HSETNX'; +import * as HSTRLEN from '../commands/HSTRLEN'; +import * as HVALS from '../commands/HVALS'; +import * as INCR from '../commands/INCR'; +import * as INCRBY from '../commands/INCRBY'; +import * as INCRBYFLOAT from '../commands/INCRBYFLOAT'; +import * as LINDEX from '../commands/LINDEX'; +import * as LINSERT from '../commands/LINSERT'; +import * as LLEN from '../commands/LLEN'; +import * as LMOVE from '../commands/LMOVE'; +import * as LPOP_COUNT from '../commands/LPOP_COUNT'; +import * as LPOP from '../commands/LPOP'; +import * as LPOS_COUNT from '../commands/LPOS_COUNT'; +import * as LPOS from '../commands/LPOS'; +import * as LPUSH from '../commands/LPUSH'; +import * as LPUSHX from '../commands/LPUSHX'; +import * as LRANGE from '../commands/LRANGE'; +import * as LREM from '../commands/LREM'; +import * as LSET from '../commands/LSET'; +import * as LTRIM from '../commands/LTRIM'; +import * as MGET from '../commands/MGET'; +import * as MIGRATE from '../commands/MIGRATE'; +import * as MSET from '../commands/MSET'; +import * as MSETNX from '../commands/MSETNX'; +import * as PERSIST from '../commands/PERSIST'; +import * as PEXPIRE from '../commands/PEXPIRE'; +import * as PEXPIREAT from '../commands/PEXPIREAT'; +import * as PFADD from '../commands/PFADD'; +import * as PFCOUNT from '../commands/PFCOUNT'; +import * as PFMERGE from '../commands/PFMERGE'; +import * as PSETEX from '../commands/PSETEX'; +import * as PTTL from '../commands/PTTL'; +import * as PUBLISH from '../commands/PUBLISH'; +import * as RENAME from '../commands/RENAME'; +import * as RENAMENX from '../commands/RENAMENX'; +import * as RPOP_COUNT from '../commands/RPOP_COUNT'; +import * as RPOP from '../commands/RPOP'; +import * as RPOPLPUSH from '../commands/RPOPLPUSH'; +import * as RPUSH from '../commands/RPUSH'; +import * as RPUSHX from '../commands/RPUSHX'; +import * as SADD from '../commands/SADD'; +import * as SCARD from '../commands/SCARD'; +import * as SDIFF from '../commands/SDIFF'; +import * as SDIFFSTORE from '../commands/SDIFFSTORE'; +import * as SET from '../commands/SET'; +import * as SETBIT from '../commands/SETBIT'; +import * as SETEX from '../commands/SETEX'; +import * as SETNX from '../commands/SETNX'; +import * as SETRANGE from '../commands/SETRANGE'; +import * as SINTER from '../commands/SINTER'; +import * as SINTERSTORE from '../commands/SINTERSTORE'; +import * as SISMEMBER from '../commands/SISMEMBER'; +import * as SMEMBERS from '../commands/SMEMBERS'; +import * as SMISMEMBER from '../commands/SMISMEMBER'; +import * as SMOVE from '../commands/SMOVE'; +import * as SORT from '../commands/SORT'; +import * as SPOP from '../commands/SPOP'; +import * as SRANDMEMBER_COUNT from '../commands/SRANDMEMBER_COUNT'; +import * as SRANDMEMBER from '../commands/SRANDMEMBER'; +import * as SREM from '../commands/SREM'; +import * as SSCAN from '../commands/SSCAN'; +import * as STRLEN from '../commands/STRLEN'; +import * as SUNION from '../commands/SUNION'; +import * as SUNIONSTORE from '../commands/SUNIONSTORE'; +import * as TOUCH from '../commands/TOUCH'; +import * as TTL from '../commands/TTL'; +import * as TYPE from '../commands/TYPE'; +import * as UNLINK from '../commands/UNLINK'; +import * as WATCH from '../commands/WATCH'; +import * as XACK from '../commands/XACK'; +import * as XADD from '../commands/XADD'; +import * as XAUTOCLAIM_JUSTID from '../commands/XAUTOCLAIM_JUSTID'; +import * as XAUTOCLAIM from '../commands/XAUTOCLAIM'; +import * as XCLAIM from '../commands/XCLAIM'; +import * as XCLAIM_JUSTID from '../commands/XCLAIM_JUSTID'; +import * as XDEL from '../commands/XDEL'; +import * as XGROUP_CREATE from '../commands/XGROUP_CREATE'; +import * as XGROUP_CREATECONSUMER from '../commands/XGROUP_CREATECONSUMER'; +import * as XGROUP_DELCONSUMER from '../commands/XGROUP_DELCONSUMER'; +import * as XGROUP_DESTROY from '../commands/XGROUP_DESTROY'; +import * as XGROUP_SETID from '../commands/XGROUP_SETID'; +import * as XINFO_CONSUMERS from '../commands/XINFO_CONSUMERS'; +import * as XINFO_GROUPS from '../commands/XINFO_GROUPS'; +import * as XINFO_STREAM from '../commands/XINFO_STREAM'; +import * as XLEN from '../commands/XLEN'; +import * as XPENDING_RANGE from '../commands/XPENDING_RANGE'; +import * as XPENDING from '../commands/XPENDING'; +import * as XRANGE from '../commands/XRANGE'; +import * as XREAD from '../commands/XREAD'; +import * as XREADGROUP from '../commands/XREADGROUP'; +import * as XREVRANGE from '../commands/XREVRANGE'; +import * as XTRIM from '../commands/XTRIM'; +import * as ZADD from '../commands/ZADD'; +import * as ZCARD from '../commands/ZCARD'; +import * as ZCOUNT from '../commands/ZCOUNT'; +import * as ZDIFF_WITHSCORES from '../commands/ZDIFF_WITHSCORES'; +import * as ZDIFF from '../commands/ZDIFF'; +import * as ZDIFFSTORE from '../commands/ZDIFFSTORE'; +import * as ZINCRBY from '../commands/ZINCRBY'; +import * as ZINTER_WITHSCORES from '../commands/ZINTER_WITHSCORES'; +import * as ZINTER from '../commands/ZINTER'; +import * as ZINTERSTORE from '../commands/ZINTERSTORE'; +import * as ZLEXCOUNT from '../commands/ZLEXCOUNT'; +import * as ZMSCORE from '../commands/ZMSCORE'; +import * as ZPOPMAX_COUNT from '../commands/ZPOPMAX_COUNT'; +import * as ZPOPMAX from '../commands/ZPOPMAX'; +import * as ZPOPMIN_COUNT from '../commands/ZPOPMIN_COUNT'; +import * as ZPOPMIN from '../commands/ZPOPMIN'; +import * as ZRANDMEMBER_COUNT_WITHSCORES from '../commands/ZRANDMEMBER_COUNT_WITHSCORES'; +import * as ZRANDMEMBER_COUNT from '../commands/ZRANDMEMBER_COUNT'; +import * as ZRANDMEMBER from '../commands/ZRANDMEMBER'; +import * as ZRANGE_WITHSCORES from '../commands/ZRANGE_WITHSCORES'; +import * as ZRANGE from '../commands/ZRANGE'; +import * as ZRANGEBYLEX from '../commands/ZRANGEBYLEX'; +import * as ZRANGEBYSCORE_WITHSCORES from '../commands/ZRANGEBYSCORE_WITHSCORES'; +import * as ZRANGEBYSCORE from '../commands/ZRANGEBYSCORE'; +import * as ZRANGESTORE from '../commands/ZRANGESTORE'; +import * as ZRANK from '../commands/ZRANK'; +import * as ZREM from '../commands/ZREM'; +import * as ZREMRANGEBYLEX from '../commands/ZREMRANGEBYLEX'; +import * as ZREMRANGEBYRANK from '../commands/ZREMRANGEBYRANK'; +import * as ZREMRANGEBYSCORE from '../commands/ZREMRANGEBYSCORE'; +import * as ZREVRANK from '../commands/ZREVRANK'; +import * as ZSCAN from '../commands/ZSCAN'; +import * as ZSCORE from '../commands/ZSCORE'; +import * as ZUNION_WITHSCORES from '../commands/ZUNION_WITHSCORES'; +import * as ZUNION from '../commands/ZUNION'; +import * as ZUNIONSTORE from '../commands/ZUNIONSTORE'; +declare const _default: { + APPEND: typeof APPEND; + append: typeof APPEND; + BITCOUNT: typeof BITCOUNT; + bitCount: typeof BITCOUNT; + BITFIELD: typeof BITFIELD; + bitField: typeof BITFIELD; + BITOP: typeof BITOP; + bitOp: typeof BITOP; + BITPOS: typeof BITPOS; + bitPos: typeof BITPOS; + BLMOVE: typeof BLMOVE; + blMove: typeof BLMOVE; + BLPOP: typeof BLPOP; + blPop: typeof BLPOP; + BRPOP: typeof BRPOP; + brPop: typeof BRPOP; + BRPOPLPUSH: typeof BRPOPLPUSH; + brPopLPush: typeof BRPOPLPUSH; + BZPOPMAX: typeof BZPOPMAX; + bzPopMax: typeof BZPOPMAX; + BZPOPMIN: typeof BZPOPMIN; + bzPopMin: typeof BZPOPMIN; + COPY: typeof COPY; + copy: typeof COPY; + DECR: typeof DECR; + decr: typeof DECR; + DECRBY: typeof DECRBY; + decrBy: typeof DECRBY; + DEL: typeof DEL; + del: typeof DEL; + DUMP: typeof DUMP; + dump: typeof DUMP; + EVAL: typeof EVAL; + eval: typeof EVAL; + EVALSHA: typeof EVALSHA; + evalSha: typeof EVALSHA; + EXISTS: typeof EXISTS; + exists: typeof EXISTS; + EXPIRE: typeof EXPIRE; + expire: typeof EXPIRE; + EXPIREAT: typeof EXPIREAT; + expireAt: typeof EXPIREAT; + GEOADD: typeof GEOADD; + geoAdd: typeof GEOADD; + GEODIST: typeof GEODIST; + geoDist: typeof GEODIST; + GEOHASH: typeof GEOHASH; + geoHash: typeof GEOHASH; + GEOPOS: typeof GEOPOS; + geoPos: typeof GEOPOS; + GEOSEARCH_WITH: typeof GEOSEARCH_WITH; + geoSearchWith: typeof GEOSEARCH_WITH; + GEOSEARCH: typeof GEOSEARCH; + geoSearch: typeof GEOSEARCH; + GEOSEARCHSTORE: typeof GEOSEARCHSTORE; + geoSearchStore: typeof GEOSEARCHSTORE; + GET_BUFFER: typeof GET_BUFFER; + getBuffer: typeof GET_BUFFER; + GET: typeof GET; + get: typeof GET; + GETBIT: typeof GETBIT; + getBit: typeof GETBIT; + GETDEL: typeof GETDEL; + getDel: typeof GETDEL; + GETEX: typeof GETEX; + getEx: typeof GETEX; + GETRANGE: typeof GETRANGE; + getRange: typeof GETRANGE; + GETSET: typeof GETSET; + getSet: typeof GETSET; + HDEL: typeof HDEL; + hDel: typeof HDEL; + HEXISTS: typeof HEXISTS; + hExists: typeof HEXISTS; + HGET: typeof HGET; + hGet: typeof HGET; + HGETALL: typeof HGETALL; + hGetAll: typeof HGETALL; + HINCRBY: typeof HINCRBY; + hIncrBy: typeof HINCRBY; + HINCRBYFLOAT: typeof HINCRBYFLOAT; + hIncrByFloat: typeof HINCRBYFLOAT; + HKEYS: typeof HKEYS; + hKeys: typeof HKEYS; + HLEN: typeof HLEN; + hLen: typeof HLEN; + HMGET: typeof HMGET; + hmGet: typeof HMGET; + HRANDFIELD_COUNT_WITHVALUES: typeof HRANDFIELD_COUNT_WITHVALUES; + hRandFieldCountWithValues: typeof HRANDFIELD_COUNT_WITHVALUES; + HRANDFIELD_COUNT: typeof HRANDFIELD_COUNT; + hRandFieldCount: typeof HRANDFIELD_COUNT; + HRANDFIELD: typeof HRANDFIELD; + hRandField: typeof HRANDFIELD; + HSCAN: typeof HSCAN; + hScan: typeof HSCAN; + HSET: typeof HSET; + hSet: typeof HSET; + HSETNX: typeof HSETNX; + hSetNX: typeof HSETNX; + HSTRLEN: typeof HSTRLEN; + hStrLen: typeof HSTRLEN; + HVALS: typeof HVALS; + hVals: typeof HVALS; + INCR: typeof INCR; + incr: typeof INCR; + INCRBY: typeof INCRBY; + incrBy: typeof INCRBY; + INCRBYFLOAT: typeof INCRBYFLOAT; + incrByFloat: typeof INCRBYFLOAT; + LINDEX: typeof LINDEX; + lIndex: typeof LINDEX; + LINSERT: typeof LINSERT; + lInsert: typeof LINSERT; + LLEN: typeof LLEN; + lLen: typeof LLEN; + LMOVE: typeof LMOVE; + lMove: typeof LMOVE; + LPOP_COUNT: typeof LPOP_COUNT; + lPopCount: typeof LPOP_COUNT; + LPOP: typeof LPOP; + lPop: typeof LPOP; + LPOS_COUNT: typeof LPOS_COUNT; + lPosCount: typeof LPOS_COUNT; + LPOS: typeof LPOS; + lPos: typeof LPOS; + LPUSH: typeof LPUSH; + lPush: typeof LPUSH; + LPUSHX: typeof LPUSHX; + lPushX: typeof LPUSHX; + LRANGE: typeof LRANGE; + lRange: typeof LRANGE; + LREM: typeof LREM; + lRem: typeof LREM; + LSET: typeof LSET; + lSet: typeof LSET; + LTRIM: typeof LTRIM; + lTrim: typeof LTRIM; + MGET: typeof MGET; + mGet: typeof MGET; + MIGRATE: typeof MIGRATE; + migrate: typeof MIGRATE; + MSET: typeof MSET; + mSet: typeof MSET; + MSETNX: typeof MSETNX; + mSetNX: typeof MSETNX; + PERSIST: typeof PERSIST; + persist: typeof PERSIST; + PEXPIRE: typeof PEXPIRE; + pExpire: typeof PEXPIRE; + PEXPIREAT: typeof PEXPIREAT; + pExpireAt: typeof PEXPIREAT; + PFADD: typeof PFADD; + pfAdd: typeof PFADD; + PFCOUNT: typeof PFCOUNT; + pfCount: typeof PFCOUNT; + PFMERGE: typeof PFMERGE; + pfMerge: typeof PFMERGE; + PSETEX: typeof PSETEX; + pSetEx: typeof PSETEX; + PTTL: typeof PTTL; + pTTL: typeof PTTL; + PUBLISH: typeof PUBLISH; + publish: typeof PUBLISH; + RENAME: typeof RENAME; + rename: typeof RENAME; + RENAMENX: typeof RENAMENX; + renameNX: typeof RENAMENX; + RPOP_COUNT: typeof RPOP_COUNT; + rPopCount: typeof RPOP_COUNT; + RPOP: typeof RPOP; + rPop: typeof RPOP; + RPOPLPUSH: typeof RPOPLPUSH; + rPopLPush: typeof RPOPLPUSH; + RPUSH: typeof RPUSH; + rPush: typeof RPUSH; + RPUSHX: typeof RPUSHX; + rPushX: typeof RPUSHX; + SADD: typeof SADD; + sAdd: typeof SADD; + SCARD: typeof SCARD; + sCard: typeof SCARD; + SDIFF: typeof SDIFF; + sDiff: typeof SDIFF; + SDIFFSTORE: typeof SDIFFSTORE; + sDiffStore: typeof SDIFFSTORE; + SINTER: typeof SINTER; + sInter: typeof SINTER; + SINTERSTORE: typeof SINTERSTORE; + sInterStore: typeof SINTERSTORE; + SET: typeof SET; + set: typeof SET; + SETBIT: typeof SETBIT; + setBit: typeof SETBIT; + SETEX: typeof SETEX; + setEx: typeof SETEX; + SETNX: typeof SETNX; + setNX: typeof SETNX; + SETRANGE: typeof SETRANGE; + setRange: typeof SETRANGE; + SISMEMBER: typeof SISMEMBER; + sIsMember: typeof SISMEMBER; + SMEMBERS: typeof SMEMBERS; + sMembers: typeof SMEMBERS; + SMISMEMBER: typeof SMISMEMBER; + smIsMember: typeof SMISMEMBER; + SMOVE: typeof SMOVE; + sMove: typeof SMOVE; + SORT: typeof SORT; + sort: typeof SORT; + SPOP: typeof SPOP; + sPop: typeof SPOP; + SRANDMEMBER_COUNT: typeof SRANDMEMBER_COUNT; + sRandMemberCount: typeof SRANDMEMBER_COUNT; + SRANDMEMBER: typeof SRANDMEMBER; + sRandMember: typeof SRANDMEMBER; + SREM: typeof SREM; + sRem: typeof SREM; + SSCAN: typeof SSCAN; + sScan: typeof SSCAN; + STRLEN: typeof STRLEN; + strLen: typeof STRLEN; + SUNION: typeof SUNION; + sUnion: typeof SUNION; + SUNIONSTORE: typeof SUNIONSTORE; + sUnionStore: typeof SUNIONSTORE; + TOUCH: typeof TOUCH; + touch: typeof TOUCH; + TTL: typeof TTL; + ttl: typeof TTL; + TYPE: typeof TYPE; + type: typeof TYPE; + UNLINK: typeof UNLINK; + unlink: typeof UNLINK; + WATCH: typeof WATCH; + watch: typeof WATCH; + XACK: typeof XACK; + xAck: typeof XACK; + XADD: typeof XADD; + xAdd: typeof XADD; + XAUTOCLAIM_JUSTID: typeof XAUTOCLAIM_JUSTID; + xAutoClaimJustId: typeof XAUTOCLAIM_JUSTID; + XAUTOCLAIM: typeof XAUTOCLAIM; + xAutoClaim: typeof XAUTOCLAIM; + XCLAIM: typeof XCLAIM; + xClaim: typeof XCLAIM; + XCLAIM_JUSTID: typeof XCLAIM_JUSTID; + xClaimJustId: typeof XCLAIM_JUSTID; + XDEL: typeof XDEL; + xDel: typeof XDEL; + XGROUP_CREATE: typeof XGROUP_CREATE; + xGroupCreate: typeof XGROUP_CREATE; + XGROUP_CREATECONSUMER: typeof XGROUP_CREATECONSUMER; + xGroupCreateConsumer: typeof XGROUP_CREATECONSUMER; + XGROUP_DELCONSUMER: typeof XGROUP_DELCONSUMER; + xGroupDelConsumer: typeof XGROUP_DELCONSUMER; + XGROUP_DESTROY: typeof XGROUP_DESTROY; + xGroupDestroy: typeof XGROUP_DESTROY; + XGROUP_SETID: typeof XGROUP_SETID; + xGroupSetId: typeof XGROUP_SETID; + XINFO_CONSUMERS: typeof XINFO_CONSUMERS; + xInfoConsumers: typeof XINFO_CONSUMERS; + XINFO_GROUPS: typeof XINFO_GROUPS; + xInfoGroups: typeof XINFO_GROUPS; + XINFO_STREAM: typeof XINFO_STREAM; + xInfoStream: typeof XINFO_STREAM; + XLEN: typeof XLEN; + xLen: typeof XLEN; + XPENDING_RANGE: typeof XPENDING_RANGE; + xPendingRange: typeof XPENDING_RANGE; + XPENDING: typeof XPENDING; + xPending: typeof XPENDING; + XRANGE: typeof XRANGE; + xRange: typeof XRANGE; + XREAD: typeof XREAD; + xRead: typeof XREAD; + XREADGROUP: typeof XREADGROUP; + xReadGroup: typeof XREADGROUP; + XREVRANGE: typeof XREVRANGE; + xRevRange: typeof XREVRANGE; + XTRIM: typeof XTRIM; + xTrim: typeof XTRIM; + ZADD: typeof ZADD; + zAdd: typeof ZADD; + ZCARD: typeof ZCARD; + zCard: typeof ZCARD; + ZCOUNT: typeof ZCOUNT; + zCount: typeof ZCOUNT; + ZDIFF_WITHSCORES: typeof ZDIFF_WITHSCORES; + zDiffWithScores: typeof ZDIFF_WITHSCORES; + ZDIFF: typeof ZDIFF; + zDiff: typeof ZDIFF; + ZDIFFSTORE: typeof ZDIFFSTORE; + zDiffStore: typeof ZDIFFSTORE; + ZINCRBY: typeof ZINCRBY; + zIncrBy: typeof ZINCRBY; + ZINTER_WITHSCORES: typeof ZINTER_WITHSCORES; + zInterWithScores: typeof ZINTER_WITHSCORES; + ZINTER: typeof ZINTER; + zInter: typeof ZINTER; + ZINTERSTORE: typeof ZINTERSTORE; + zInterStore: typeof ZINTERSTORE; + ZLEXCOUNT: typeof ZLEXCOUNT; + zLexCount: typeof ZLEXCOUNT; + ZMSCORE: typeof ZMSCORE; + zmScore: typeof ZMSCORE; + ZPOPMAX_COUNT: typeof ZPOPMAX_COUNT; + zPopMaxCount: typeof ZPOPMAX_COUNT; + ZPOPMAX: typeof ZPOPMAX; + zPopMax: typeof ZPOPMAX; + ZPOPMIN_COUNT: typeof ZPOPMIN_COUNT; + zPopMinCount: typeof ZPOPMIN_COUNT; + ZPOPMIN: typeof ZPOPMIN; + zPopMin: typeof ZPOPMIN; + ZRANDMEMBER_COUNT_WITHSCORES: typeof ZRANDMEMBER_COUNT_WITHSCORES; + zRandMemberCountWithScores: typeof ZRANDMEMBER_COUNT_WITHSCORES; + ZRANDMEMBER_COUNT: typeof ZRANDMEMBER_COUNT; + zRandMemberCount: typeof ZRANDMEMBER_COUNT; + ZRANDMEMBER: typeof ZRANDMEMBER; + zRandMember: typeof ZRANDMEMBER; + ZRANGE_WITHSCORES: typeof ZRANGE_WITHSCORES; + zRangeWithScores: typeof ZRANGE_WITHSCORES; + ZRANGE: typeof ZRANGE; + zRange: typeof ZRANGE; + ZRANGEBYLEX: typeof ZRANGEBYLEX; + zRangeByLex: typeof ZRANGEBYLEX; + ZRANGEBYSCORE_WITHSCORES: typeof ZRANGEBYSCORE_WITHSCORES; + zRangeByScoreWithScores: typeof ZRANGEBYSCORE_WITHSCORES; + ZRANGEBYSCORE: typeof ZRANGEBYSCORE; + zRangeByScore: typeof ZRANGEBYSCORE; + ZRANGESTORE: typeof ZRANGESTORE; + zRangeStore: typeof ZRANGESTORE; + ZRANK: typeof ZRANK; + zRank: typeof ZRANK; + ZREM: typeof ZREM; + zRem: typeof ZREM; + ZREMRANGEBYLEX: typeof ZREMRANGEBYLEX; + zRemRangeByLex: typeof ZREMRANGEBYLEX; + ZREMRANGEBYRANK: typeof ZREMRANGEBYRANK; + zRemRangeByRank: typeof ZREMRANGEBYRANK; + ZREMRANGEBYSCORE: typeof ZREMRANGEBYSCORE; + zRemRangeByScore: typeof ZREMRANGEBYSCORE; + ZREVRANK: typeof ZREVRANK; + zRevRank: typeof ZREVRANK; + ZSCAN: typeof ZSCAN; + zScan: typeof ZSCAN; + ZSCORE: typeof ZSCORE; + zScore: typeof ZSCORE; + ZUNION_WITHSCORES: typeof ZUNION_WITHSCORES; + zUnionWithScores: typeof ZUNION_WITHSCORES; + ZUNION: typeof ZUNION; + zUnion: typeof ZUNION; + ZUNIONSTORE: typeof ZUNIONSTORE; + zUnionStore: typeof ZUNIONSTORE; +}; +export default _default; diff --git a/node_modules/@node-redis/client/dist/lib/cluster/commands.js b/node_modules/@node-redis/client/dist/lib/cluster/commands.js new file mode 100644 index 0000000000..0deea7000f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/cluster/commands.js @@ -0,0 +1,535 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const APPEND = require("../commands/APPEND"); +const BITCOUNT = require("../commands/BITCOUNT"); +const BITFIELD = require("../commands/BITFIELD"); +const BITOP = require("../commands/BITOP"); +const BITPOS = require("../commands/BITPOS"); +const BLMOVE = require("../commands/BLMOVE"); +const BLPOP = require("../commands/BLPOP"); +const BRPOP = require("../commands/BRPOP"); +const BRPOPLPUSH = require("../commands/BRPOPLPUSH"); +const BZPOPMAX = require("../commands/BZPOPMAX"); +const BZPOPMIN = require("../commands/BZPOPMIN"); +const COPY = require("../commands/COPY"); +const DECR = require("../commands/DECR"); +const DECRBY = require("../commands/DECRBY"); +const DEL = require("../commands/DEL"); +const DUMP = require("../commands/DUMP"); +const EVAL = require("../commands/EVAL"); +const EVALSHA = require("../commands/EVALSHA"); +const EXISTS = require("../commands/EXISTS"); +const EXPIRE = require("../commands/EXPIRE"); +const EXPIREAT = require("../commands/EXPIREAT"); +const GEOADD = require("../commands/GEOADD"); +const GEODIST = require("../commands/GEODIST"); +const GEOHASH = require("../commands/GEOHASH"); +const GEOPOS = require("../commands/GEOPOS"); +const GEOSEARCH_WITH = require("../commands/GEOSEARCH_WITH"); +const GEOSEARCH = require("../commands/GEOSEARCH"); +const GEOSEARCHSTORE = require("../commands/GEOSEARCHSTORE"); +const GET_BUFFER = require("../commands/GET_BUFFER"); +const GET = require("../commands/GET"); +const GETBIT = require("../commands/GETBIT"); +const GETDEL = require("../commands/GETDEL"); +const GETEX = require("../commands/GETEX"); +const GETRANGE = require("../commands/GETRANGE"); +const GETSET = require("../commands/GETSET"); +const HDEL = require("../commands/HDEL"); +const HEXISTS = require("../commands/HEXISTS"); +const HGET = require("../commands/HGET"); +const HGETALL = require("../commands/HGETALL"); +const HINCRBY = require("../commands/HINCRBY"); +const HINCRBYFLOAT = require("../commands/HINCRBYFLOAT"); +const HKEYS = require("../commands/HKEYS"); +const HLEN = require("../commands/HLEN"); +const HMGET = require("../commands/HMGET"); +const HRANDFIELD_COUNT_WITHVALUES = require("../commands/HRANDFIELD_COUNT_WITHVALUES"); +const HRANDFIELD_COUNT = require("../commands/HRANDFIELD_COUNT"); +const HRANDFIELD = require("../commands/HRANDFIELD"); +const HSCAN = require("../commands/HSCAN"); +const HSET = require("../commands/HSET"); +const HSETNX = require("../commands/HSETNX"); +const HSTRLEN = require("../commands/HSTRLEN"); +const HVALS = require("../commands/HVALS"); +const INCR = require("../commands/INCR"); +const INCRBY = require("../commands/INCRBY"); +const INCRBYFLOAT = require("../commands/INCRBYFLOAT"); +const LINDEX = require("../commands/LINDEX"); +const LINSERT = require("../commands/LINSERT"); +const LLEN = require("../commands/LLEN"); +const LMOVE = require("../commands/LMOVE"); +const LPOP_COUNT = require("../commands/LPOP_COUNT"); +const LPOP = require("../commands/LPOP"); +const LPOS_COUNT = require("../commands/LPOS_COUNT"); +const LPOS = require("../commands/LPOS"); +const LPUSH = require("../commands/LPUSH"); +const LPUSHX = require("../commands/LPUSHX"); +const LRANGE = require("../commands/LRANGE"); +const LREM = require("../commands/LREM"); +const LSET = require("../commands/LSET"); +const LTRIM = require("../commands/LTRIM"); +const MGET = require("../commands/MGET"); +const MIGRATE = require("../commands/MIGRATE"); +const MSET = require("../commands/MSET"); +const MSETNX = require("../commands/MSETNX"); +const PERSIST = require("../commands/PERSIST"); +const PEXPIRE = require("../commands/PEXPIRE"); +const PEXPIREAT = require("../commands/PEXPIREAT"); +const PFADD = require("../commands/PFADD"); +const PFCOUNT = require("../commands/PFCOUNT"); +const PFMERGE = require("../commands/PFMERGE"); +const PSETEX = require("../commands/PSETEX"); +const PTTL = require("../commands/PTTL"); +const PUBLISH = require("../commands/PUBLISH"); +const RENAME = require("../commands/RENAME"); +const RENAMENX = require("../commands/RENAMENX"); +const RPOP_COUNT = require("../commands/RPOP_COUNT"); +const RPOP = require("../commands/RPOP"); +const RPOPLPUSH = require("../commands/RPOPLPUSH"); +const RPUSH = require("../commands/RPUSH"); +const RPUSHX = require("../commands/RPUSHX"); +const SADD = require("../commands/SADD"); +const SCARD = require("../commands/SCARD"); +const SDIFF = require("../commands/SDIFF"); +const SDIFFSTORE = require("../commands/SDIFFSTORE"); +const SET = require("../commands/SET"); +const SETBIT = require("../commands/SETBIT"); +const SETEX = require("../commands/SETEX"); +const SETNX = require("../commands/SETNX"); +const SETRANGE = require("../commands/SETRANGE"); +const SINTER = require("../commands/SINTER"); +const SINTERSTORE = require("../commands/SINTERSTORE"); +const SISMEMBER = require("../commands/SISMEMBER"); +const SMEMBERS = require("../commands/SMEMBERS"); +const SMISMEMBER = require("../commands/SMISMEMBER"); +const SMOVE = require("../commands/SMOVE"); +const SORT = require("../commands/SORT"); +const SPOP = require("../commands/SPOP"); +const SRANDMEMBER_COUNT = require("../commands/SRANDMEMBER_COUNT"); +const SRANDMEMBER = require("../commands/SRANDMEMBER"); +const SREM = require("../commands/SREM"); +const SSCAN = require("../commands/SSCAN"); +const STRLEN = require("../commands/STRLEN"); +const SUNION = require("../commands/SUNION"); +const SUNIONSTORE = require("../commands/SUNIONSTORE"); +const TOUCH = require("../commands/TOUCH"); +const TTL = require("../commands/TTL"); +const TYPE = require("../commands/TYPE"); +const UNLINK = require("../commands/UNLINK"); +const WATCH = require("../commands/WATCH"); +const XACK = require("../commands/XACK"); +const XADD = require("../commands/XADD"); +const XAUTOCLAIM_JUSTID = require("../commands/XAUTOCLAIM_JUSTID"); +const XAUTOCLAIM = require("../commands/XAUTOCLAIM"); +const XCLAIM = require("../commands/XCLAIM"); +const XCLAIM_JUSTID = require("../commands/XCLAIM_JUSTID"); +const XDEL = require("../commands/XDEL"); +const XGROUP_CREATE = require("../commands/XGROUP_CREATE"); +const XGROUP_CREATECONSUMER = require("../commands/XGROUP_CREATECONSUMER"); +const XGROUP_DELCONSUMER = require("../commands/XGROUP_DELCONSUMER"); +const XGROUP_DESTROY = require("../commands/XGROUP_DESTROY"); +const XGROUP_SETID = require("../commands/XGROUP_SETID"); +const XINFO_CONSUMERS = require("../commands/XINFO_CONSUMERS"); +const XINFO_GROUPS = require("../commands/XINFO_GROUPS"); +const XINFO_STREAM = require("../commands/XINFO_STREAM"); +const XLEN = require("../commands/XLEN"); +const XPENDING_RANGE = require("../commands/XPENDING_RANGE"); +const XPENDING = require("../commands/XPENDING"); +const XRANGE = require("../commands/XRANGE"); +const XREAD = require("../commands/XREAD"); +const XREADGROUP = require("../commands/XREADGROUP"); +const XREVRANGE = require("../commands/XREVRANGE"); +const XTRIM = require("../commands/XTRIM"); +const ZADD = require("../commands/ZADD"); +const ZCARD = require("../commands/ZCARD"); +const ZCOUNT = require("../commands/ZCOUNT"); +const ZDIFF_WITHSCORES = require("../commands/ZDIFF_WITHSCORES"); +const ZDIFF = require("../commands/ZDIFF"); +const ZDIFFSTORE = require("../commands/ZDIFFSTORE"); +const ZINCRBY = require("../commands/ZINCRBY"); +const ZINTER_WITHSCORES = require("../commands/ZINTER_WITHSCORES"); +const ZINTER = require("../commands/ZINTER"); +const ZINTERSTORE = require("../commands/ZINTERSTORE"); +const ZLEXCOUNT = require("../commands/ZLEXCOUNT"); +const ZMSCORE = require("../commands/ZMSCORE"); +const ZPOPMAX_COUNT = require("../commands/ZPOPMAX_COUNT"); +const ZPOPMAX = require("../commands/ZPOPMAX"); +const ZPOPMIN_COUNT = require("../commands/ZPOPMIN_COUNT"); +const ZPOPMIN = require("../commands/ZPOPMIN"); +const ZRANDMEMBER_COUNT_WITHSCORES = require("../commands/ZRANDMEMBER_COUNT_WITHSCORES"); +const ZRANDMEMBER_COUNT = require("../commands/ZRANDMEMBER_COUNT"); +const ZRANDMEMBER = require("../commands/ZRANDMEMBER"); +const ZRANGE_WITHSCORES = require("../commands/ZRANGE_WITHSCORES"); +const ZRANGE = require("../commands/ZRANGE"); +const ZRANGEBYLEX = require("../commands/ZRANGEBYLEX"); +const ZRANGEBYSCORE_WITHSCORES = require("../commands/ZRANGEBYSCORE_WITHSCORES"); +const ZRANGEBYSCORE = require("../commands/ZRANGEBYSCORE"); +const ZRANGESTORE = require("../commands/ZRANGESTORE"); +const ZRANK = require("../commands/ZRANK"); +const ZREM = require("../commands/ZREM"); +const ZREMRANGEBYLEX = require("../commands/ZREMRANGEBYLEX"); +const ZREMRANGEBYRANK = require("../commands/ZREMRANGEBYRANK"); +const ZREMRANGEBYSCORE = require("../commands/ZREMRANGEBYSCORE"); +const ZREVRANK = require("../commands/ZREVRANK"); +const ZSCAN = require("../commands/ZSCAN"); +const ZSCORE = require("../commands/ZSCORE"); +const ZUNION_WITHSCORES = require("../commands/ZUNION_WITHSCORES"); +const ZUNION = require("../commands/ZUNION"); +const ZUNIONSTORE = require("../commands/ZUNIONSTORE"); +exports.default = { + APPEND, + append: APPEND, + BITCOUNT, + bitCount: BITCOUNT, + BITFIELD, + bitField: BITFIELD, + BITOP, + bitOp: BITOP, + BITPOS, + bitPos: BITPOS, + BLMOVE, + blMove: BLMOVE, + BLPOP, + blPop: BLPOP, + BRPOP, + brPop: BRPOP, + BRPOPLPUSH, + brPopLPush: BRPOPLPUSH, + BZPOPMAX, + bzPopMax: BZPOPMAX, + BZPOPMIN, + bzPopMin: BZPOPMIN, + COPY, + copy: COPY, + DECR, + decr: DECR, + DECRBY, + decrBy: DECRBY, + DEL, + del: DEL, + DUMP, + dump: DUMP, + EVAL, + eval: EVAL, + EVALSHA, + evalSha: EVALSHA, + EXISTS, + exists: EXISTS, + EXPIRE, + expire: EXPIRE, + EXPIREAT, + expireAt: EXPIREAT, + GEOADD, + geoAdd: GEOADD, + GEODIST, + geoDist: GEODIST, + GEOHASH, + geoHash: GEOHASH, + GEOPOS, + geoPos: GEOPOS, + GEOSEARCH_WITH, + geoSearchWith: GEOSEARCH_WITH, + GEOSEARCH, + geoSearch: GEOSEARCH, + GEOSEARCHSTORE, + geoSearchStore: GEOSEARCHSTORE, + GET_BUFFER, + getBuffer: GET_BUFFER, + GET, + get: GET, + GETBIT, + getBit: GETBIT, + GETDEL, + getDel: GETDEL, + GETEX, + getEx: GETEX, + GETRANGE, + getRange: GETRANGE, + GETSET, + getSet: GETSET, + HDEL, + hDel: HDEL, + HEXISTS, + hExists: HEXISTS, + HGET, + hGet: HGET, + HGETALL, + hGetAll: HGETALL, + HINCRBY, + hIncrBy: HINCRBY, + HINCRBYFLOAT, + hIncrByFloat: HINCRBYFLOAT, + HKEYS, + hKeys: HKEYS, + HLEN, + hLen: HLEN, + HMGET, + hmGet: HMGET, + HRANDFIELD_COUNT_WITHVALUES, + hRandFieldCountWithValues: HRANDFIELD_COUNT_WITHVALUES, + HRANDFIELD_COUNT, + hRandFieldCount: HRANDFIELD_COUNT, + HRANDFIELD, + hRandField: HRANDFIELD, + HSCAN, + hScan: HSCAN, + HSET, + hSet: HSET, + HSETNX, + hSetNX: HSETNX, + HSTRLEN, + hStrLen: HSTRLEN, + HVALS, + hVals: HVALS, + INCR, + incr: INCR, + INCRBY, + incrBy: INCRBY, + INCRBYFLOAT, + incrByFloat: INCRBYFLOAT, + LINDEX, + lIndex: LINDEX, + LINSERT, + lInsert: LINSERT, + LLEN, + lLen: LLEN, + LMOVE, + lMove: LMOVE, + LPOP_COUNT, + lPopCount: LPOP_COUNT, + LPOP, + lPop: LPOP, + LPOS_COUNT, + lPosCount: LPOS_COUNT, + LPOS, + lPos: LPOS, + LPUSH, + lPush: LPUSH, + LPUSHX, + lPushX: LPUSHX, + LRANGE, + lRange: LRANGE, + LREM, + lRem: LREM, + LSET, + lSet: LSET, + LTRIM, + lTrim: LTRIM, + MGET, + mGet: MGET, + MIGRATE, + migrate: MIGRATE, + MSET, + mSet: MSET, + MSETNX, + mSetNX: MSETNX, + PERSIST, + persist: PERSIST, + PEXPIRE, + pExpire: PEXPIRE, + PEXPIREAT, + pExpireAt: PEXPIREAT, + PFADD, + pfAdd: PFADD, + PFCOUNT, + pfCount: PFCOUNT, + PFMERGE, + pfMerge: PFMERGE, + PSETEX, + pSetEx: PSETEX, + PTTL, + pTTL: PTTL, + PUBLISH, + publish: PUBLISH, + RENAME, + rename: RENAME, + RENAMENX, + renameNX: RENAMENX, + RPOP_COUNT, + rPopCount: RPOP_COUNT, + RPOP, + rPop: RPOP, + RPOPLPUSH, + rPopLPush: RPOPLPUSH, + RPUSH, + rPush: RPUSH, + RPUSHX, + rPushX: RPUSHX, + SADD, + sAdd: SADD, + SCARD, + sCard: SCARD, + SDIFF, + sDiff: SDIFF, + SDIFFSTORE, + sDiffStore: SDIFFSTORE, + SINTER, + sInter: SINTER, + SINTERSTORE, + sInterStore: SINTERSTORE, + SET, + set: SET, + SETBIT, + setBit: SETBIT, + SETEX, + setEx: SETEX, + SETNX, + setNX: SETNX, + SETRANGE, + setRange: SETRANGE, + SISMEMBER, + sIsMember: SISMEMBER, + SMEMBERS, + sMembers: SMEMBERS, + SMISMEMBER, + smIsMember: SMISMEMBER, + SMOVE, + sMove: SMOVE, + SORT, + sort: SORT, + SPOP, + sPop: SPOP, + SRANDMEMBER_COUNT, + sRandMemberCount: SRANDMEMBER_COUNT, + SRANDMEMBER, + sRandMember: SRANDMEMBER, + SREM, + sRem: SREM, + SSCAN, + sScan: SSCAN, + STRLEN, + strLen: STRLEN, + SUNION, + sUnion: SUNION, + SUNIONSTORE, + sUnionStore: SUNIONSTORE, + TOUCH, + touch: TOUCH, + TTL, + ttl: TTL, + TYPE, + type: TYPE, + UNLINK, + unlink: UNLINK, + WATCH, + watch: WATCH, + XACK, + xAck: XACK, + XADD, + xAdd: XADD, + XAUTOCLAIM_JUSTID, + xAutoClaimJustId: XAUTOCLAIM_JUSTID, + XAUTOCLAIM, + xAutoClaim: XAUTOCLAIM, + XCLAIM, + xClaim: XCLAIM, + XCLAIM_JUSTID, + xClaimJustId: XCLAIM_JUSTID, + XDEL, + xDel: XDEL, + XGROUP_CREATE, + xGroupCreate: XGROUP_CREATE, + XGROUP_CREATECONSUMER, + xGroupCreateConsumer: XGROUP_CREATECONSUMER, + XGROUP_DELCONSUMER, + xGroupDelConsumer: XGROUP_DELCONSUMER, + XGROUP_DESTROY, + xGroupDestroy: XGROUP_DESTROY, + XGROUP_SETID, + xGroupSetId: XGROUP_SETID, + XINFO_CONSUMERS, + xInfoConsumers: XINFO_CONSUMERS, + XINFO_GROUPS, + xInfoGroups: XINFO_GROUPS, + XINFO_STREAM, + xInfoStream: XINFO_STREAM, + XLEN, + xLen: XLEN, + XPENDING_RANGE, + xPendingRange: XPENDING_RANGE, + XPENDING, + xPending: XPENDING, + XRANGE, + xRange: XRANGE, + XREAD, + xRead: XREAD, + XREADGROUP, + xReadGroup: XREADGROUP, + XREVRANGE, + xRevRange: XREVRANGE, + XTRIM, + xTrim: XTRIM, + ZADD, + zAdd: ZADD, + ZCARD, + zCard: ZCARD, + ZCOUNT, + zCount: ZCOUNT, + ZDIFF_WITHSCORES, + zDiffWithScores: ZDIFF_WITHSCORES, + ZDIFF, + zDiff: ZDIFF, + ZDIFFSTORE, + zDiffStore: ZDIFFSTORE, + ZINCRBY, + zIncrBy: ZINCRBY, + ZINTER_WITHSCORES, + zInterWithScores: ZINTER_WITHSCORES, + ZINTER, + zInter: ZINTER, + ZINTERSTORE, + zInterStore: ZINTERSTORE, + ZLEXCOUNT, + zLexCount: ZLEXCOUNT, + ZMSCORE, + zmScore: ZMSCORE, + ZPOPMAX_COUNT, + zPopMaxCount: ZPOPMAX_COUNT, + ZPOPMAX, + zPopMax: ZPOPMAX, + ZPOPMIN_COUNT, + zPopMinCount: ZPOPMIN_COUNT, + ZPOPMIN, + zPopMin: ZPOPMIN, + ZRANDMEMBER_COUNT_WITHSCORES, + zRandMemberCountWithScores: ZRANDMEMBER_COUNT_WITHSCORES, + ZRANDMEMBER_COUNT, + zRandMemberCount: ZRANDMEMBER_COUNT, + ZRANDMEMBER, + zRandMember: ZRANDMEMBER, + ZRANGE_WITHSCORES, + zRangeWithScores: ZRANGE_WITHSCORES, + ZRANGE, + zRange: ZRANGE, + ZRANGEBYLEX, + zRangeByLex: ZRANGEBYLEX, + ZRANGEBYSCORE_WITHSCORES, + zRangeByScoreWithScores: ZRANGEBYSCORE_WITHSCORES, + ZRANGEBYSCORE, + zRangeByScore: ZRANGEBYSCORE, + ZRANGESTORE, + zRangeStore: ZRANGESTORE, + ZRANK, + zRank: ZRANK, + ZREM, + zRem: ZREM, + ZREMRANGEBYLEX, + zRemRangeByLex: ZREMRANGEBYLEX, + ZREMRANGEBYRANK, + zRemRangeByRank: ZREMRANGEBYRANK, + ZREMRANGEBYSCORE, + zRemRangeByScore: ZREMRANGEBYSCORE, + ZREVRANK, + zRevRank: ZREVRANK, + ZSCAN, + zScan: ZSCAN, + ZSCORE, + zScore: ZSCORE, + ZUNION_WITHSCORES, + zUnionWithScores: ZUNION_WITHSCORES, + ZUNION, + zUnion: ZUNION, + ZUNIONSTORE, + zUnionStore: ZUNIONSTORE +}; diff --git a/node_modules/@node-redis/client/dist/lib/cluster/index.d.ts b/node_modules/@node-redis/client/dist/lib/cluster/index.d.ts new file mode 100644 index 0000000000..1ce1fb9559 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/cluster/index.d.ts @@ -0,0 +1,35 @@ +/// +import COMMANDS from './commands'; +import { RedisCommand, RedisCommandArguments, RedisCommandReply, RedisModules, RedisPlugins, RedisScript, RedisScripts } from '../commands'; +import { ClientCommandOptions, RedisClientCommandSignature, RedisClientOptions, WithModules, WithScripts } from '../client'; +import { ClusterNode } from './cluster-slots'; +import { EventEmitter } from 'events'; +import { RedisClusterMultiCommandType } from './multi-command'; +export declare type RedisClusterClientOptions = Omit, Record>, 'modules' | 'scripts'>; +export interface RedisClusterOptions extends RedisPlugins { + rootNodes: Array; + defaults?: Partial; + useReplicas?: boolean; + maxCommandRedirections?: number; +} +declare type WithCommands = { + [P in keyof typeof COMMANDS]: RedisClientCommandSignature<(typeof COMMANDS)[P]>; +}; +export declare type RedisClusterType, S extends RedisScripts = Record> = RedisCluster & WithCommands & WithModules & WithScripts; +export default class RedisCluster, S extends RedisScripts = Record> extends EventEmitter { + #private; + static extractFirstKey(command: RedisCommand, originalArgs: Array, redisArgs: RedisCommandArguments): string | Buffer | undefined; + static create, S extends RedisScripts = Record>(options?: RedisClusterOptions): RedisClusterType; + constructor(options: RedisClusterOptions); + duplicate(overrides?: Partial>): RedisClusterType; + connect(): Promise; + commandsExecutor(command: RedisCommand, args: Array): Promise>; + sendCommand(firstKey: string | Buffer | undefined, isReadonly: boolean | undefined, args: RedisCommandArguments, options?: ClientCommandOptions, bufferMode?: boolean, redirections?: number): Promise>; + scriptsExecutor(script: RedisScript, args: Array): Promise>; + executeScript(script: RedisScript, originalArgs: Array, redisArgs: RedisCommandArguments, options?: ClientCommandOptions, redirections?: number): Promise>; + multi(routing?: string | Buffer): RedisClusterMultiCommandType; + getMasters(): Array>; + getSlotMaster(slot: number): ClusterNode; + disconnect(): Promise; +} +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/cluster/index.js b/node_modules/@node-redis/client/dist/lib/cluster/index.js new file mode 100644 index 0000000000..34e1d6eca7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/cluster/index.js @@ -0,0 +1,144 @@ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _RedisCluster_instances, _RedisCluster_options, _RedisCluster_slots, _RedisCluster_Multi, _RedisCluster_handleCommandError; +Object.defineProperty(exports, "__esModule", { value: true }); +const commands_1 = require("./commands"); +const cluster_slots_1 = require("./cluster-slots"); +const commander_1 = require("../commander"); +const events_1 = require("events"); +const multi_command_1 = require("./multi-command"); +class RedisCluster extends events_1.EventEmitter { + constructor(options) { + super(); + _RedisCluster_instances.add(this); + _RedisCluster_options.set(this, void 0); + _RedisCluster_slots.set(this, void 0); + _RedisCluster_Multi.set(this, void 0); + __classPrivateFieldSet(this, _RedisCluster_options, options, "f"); + __classPrivateFieldSet(this, _RedisCluster_slots, new cluster_slots_1.default(options, err => this.emit('error', err)), "f"); + __classPrivateFieldSet(this, _RedisCluster_Multi, multi_command_1.default.extend(options), "f"); + } + static extractFirstKey(command, originalArgs, redisArgs) { + if (command.FIRST_KEY_INDEX === undefined) { + return undefined; + } + else if (typeof command.FIRST_KEY_INDEX === 'number') { + return redisArgs[command.FIRST_KEY_INDEX]; + } + return command.FIRST_KEY_INDEX(...originalArgs); + } + static create(options) { + return new ((0, commander_1.extendWithModulesAndScripts)({ + BaseClass: RedisCluster, + modules: options === null || options === void 0 ? void 0 : options.modules, + modulesCommandsExecutor: RedisCluster.prototype.commandsExecutor, + scripts: options === null || options === void 0 ? void 0 : options.scripts, + scriptsExecutor: RedisCluster.prototype.scriptsExecutor + }))(options); + } + duplicate(overrides) { + return new (Object.getPrototypeOf(this).constructor)({ + ...__classPrivateFieldGet(this, _RedisCluster_options, "f"), + ...overrides + }); + } + async connect() { + return __classPrivateFieldGet(this, _RedisCluster_slots, "f").connect(); + } + async commandsExecutor(command, args) { + const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(command, args); + return (0, commander_1.transformCommandReply)(command, await this.sendCommand(RedisCluster.extractFirstKey(command, args, redisArgs), command.IS_READ_ONLY, redisArgs, options, command.BUFFER_MODE), redisArgs.preserve); + } + async sendCommand(firstKey, isReadonly, args, options, bufferMode, redirections = 0) { + const client = __classPrivateFieldGet(this, _RedisCluster_slots, "f").getClient(firstKey, isReadonly); + try { + return await client.sendCommand(args, options, bufferMode); + } + catch (err) { + const shouldRetry = await __classPrivateFieldGet(this, _RedisCluster_instances, "m", _RedisCluster_handleCommandError).call(this, err, client, redirections); + if (shouldRetry === true) { + return this.sendCommand(firstKey, isReadonly, args, options, bufferMode, redirections + 1); + } + else if (shouldRetry) { + return shouldRetry.sendCommand(args, options, bufferMode); + } + throw err; + } + } + async scriptsExecutor(script, args) { + const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(script, args); + return (0, commander_1.transformCommandReply)(script, await this.executeScript(script, args, redisArgs, options), redisArgs.preserve); + } + async executeScript(script, originalArgs, redisArgs, options, redirections = 0) { + const client = __classPrivateFieldGet(this, _RedisCluster_slots, "f").getClient(RedisCluster.extractFirstKey(script, originalArgs, redisArgs), script.IS_READ_ONLY); + try { + return await client.executeScript(script, redisArgs, options, script.BUFFER_MODE); + } + catch (err) { + const shouldRetry = await __classPrivateFieldGet(this, _RedisCluster_instances, "m", _RedisCluster_handleCommandError).call(this, err, client, redirections); + if (shouldRetry === true) { + return this.executeScript(script, originalArgs, redisArgs, options, redirections + 1); + } + else if (shouldRetry) { + return shouldRetry.executeScript(script, redisArgs, options, script.BUFFER_MODE); + } + throw err; + } + } + multi(routing) { + return new (__classPrivateFieldGet(this, _RedisCluster_Multi, "f"))(async (commands, firstKey, chainId) => { + return __classPrivateFieldGet(this, _RedisCluster_slots, "f") + .getClient(firstKey) + .multiExecutor(commands, chainId); + }, routing); + } + getMasters() { + return __classPrivateFieldGet(this, _RedisCluster_slots, "f").getMasters(); + } + getSlotMaster(slot) { + return __classPrivateFieldGet(this, _RedisCluster_slots, "f").getSlotMaster(slot); + } + disconnect() { + return __classPrivateFieldGet(this, _RedisCluster_slots, "f").disconnect(); + } +} +exports.default = RedisCluster; +_RedisCluster_options = new WeakMap(), _RedisCluster_slots = new WeakMap(), _RedisCluster_Multi = new WeakMap(), _RedisCluster_instances = new WeakSet(), _RedisCluster_handleCommandError = async function _RedisCluster_handleCommandError(err, client, redirections) { + var _a; + if (redirections > ((_a = __classPrivateFieldGet(this, _RedisCluster_options, "f").maxCommandRedirections) !== null && _a !== void 0 ? _a : 16)) { + throw err; + } + if (err.message.startsWith('ASK')) { + const url = err.message.substring(err.message.lastIndexOf(' ') + 1); + let node = __classPrivateFieldGet(this, _RedisCluster_slots, "f").getNodeByUrl(url); + if (!node) { + await __classPrivateFieldGet(this, _RedisCluster_slots, "f").rediscover(client); + node = __classPrivateFieldGet(this, _RedisCluster_slots, "f").getNodeByUrl(url); + if (!node) { + throw new Error(`Cannot find node ${url}`); + } + } + await node.client.asking(); + return node.client; + } + else if (err.message.startsWith('MOVED')) { + await __classPrivateFieldGet(this, _RedisCluster_slots, "f").rediscover(client); + return true; + } + throw err; +}; +(0, commander_1.extendWithCommands)({ + BaseClass: RedisCluster, + commands: commands_1.default, + executor: RedisCluster.prototype.commandsExecutor +}); diff --git a/node_modules/@node-redis/client/dist/lib/cluster/multi-command.d.ts b/node_modules/@node-redis/client/dist/lib/cluster/multi-command.d.ts new file mode 100644 index 0000000000..5e4c451afa --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/cluster/multi-command.d.ts @@ -0,0 +1,30 @@ +/// +import COMMANDS from './commands'; +import { RedisCommand, RedisCommandArguments, RedisCommandRawReply, RedisModules, RedisPlugins, RedisScript, RedisScripts } from '../commands'; +import RedisMultiCommand, { RedisMultiQueuedCommand } from '../multi-command'; +declare type RedisClusterMultiCommandSignature = (...args: Parameters) => RedisClusterMultiCommandType; +declare type WithCommands = { + [P in keyof typeof COMMANDS]: RedisClusterMultiCommandSignature<(typeof COMMANDS)[P], M, S>; +}; +declare type WithModules = { + [P in keyof M as M[P] extends never ? never : P]: { + [C in keyof M[P]]: RedisClusterMultiCommandSignature; + }; +}; +declare type WithScripts = { + [P in keyof S as S[P] extends never ? never : P]: RedisClusterMultiCommandSignature; +}; +export declare type RedisClusterMultiCommandType, S extends RedisScripts = Record> = RedisClusterMultiCommand & WithCommands & WithModules & WithScripts; +export declare type RedisClusterMultiExecutor = (queue: Array, firstKey?: string | Buffer, chainId?: symbol) => Promise>; +export default class RedisClusterMultiCommand { + #private; + static extend(plugins?: RedisPlugins): new (...args: ConstructorParameters) => RedisClusterMultiCommandType; + constructor(executor: RedisClusterMultiExecutor, firstKey?: string | Buffer); + commandsExecutor(command: RedisCommand, args: Array): this; + addCommand(firstKey: string | Buffer | undefined, args: RedisCommandArguments, transformReply?: RedisCommand['transformReply']): this; + scriptsExecutor(script: RedisScript, args: Array): this; + exec(execAsPipeline?: boolean): Promise>; + EXEC: (execAsPipeline?: boolean) => Promise>; + execAsPipeline(): Promise>; +} +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/cluster/multi-command.js b/node_modules/@node-redis/client/dist/lib/cluster/multi-command.js new file mode 100644 index 0000000000..88ef92cfd8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/cluster/multi-command.js @@ -0,0 +1,82 @@ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _RedisClusterMultiCommand_multi, _RedisClusterMultiCommand_executor, _RedisClusterMultiCommand_firstKey; +Object.defineProperty(exports, "__esModule", { value: true }); +const commands_1 = require("./commands"); +const multi_command_1 = require("../multi-command"); +const commander_1 = require("../commander"); +const _1 = require("."); +class RedisClusterMultiCommand { + constructor(executor, firstKey) { + _RedisClusterMultiCommand_multi.set(this, new multi_command_1.default()); + _RedisClusterMultiCommand_executor.set(this, void 0); + _RedisClusterMultiCommand_firstKey.set(this, void 0); + Object.defineProperty(this, "EXEC", { + enumerable: true, + configurable: true, + writable: true, + value: this.exec + }); + __classPrivateFieldSet(this, _RedisClusterMultiCommand_executor, executor, "f"); + __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, firstKey, "f"); + } + static extend(plugins) { + return (0, commander_1.extendWithModulesAndScripts)({ + BaseClass: RedisClusterMultiCommand, + modules: plugins === null || plugins === void 0 ? void 0 : plugins.modules, + modulesCommandsExecutor: RedisClusterMultiCommand.prototype.commandsExecutor, + scripts: plugins === null || plugins === void 0 ? void 0 : plugins.scripts, + scriptsExecutor: RedisClusterMultiCommand.prototype.scriptsExecutor + }); + } + commandsExecutor(command, args) { + const transformedArguments = command.transformArguments(...args); + if (!__classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, "f")) { + __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, _1.default.extractFirstKey(command, args, transformedArguments), "f"); + } + return this.addCommand(undefined, transformedArguments, command.transformReply); + } + addCommand(firstKey, args, transformReply) { + if (!__classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, "f")) { + __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, firstKey, "f"); + } + __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, "f").addCommand(args, transformReply); + return this; + } + scriptsExecutor(script, args) { + const transformedArguments = __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, "f").addScript(script, args); + if (!__classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, "f")) { + __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, _1.default.extractFirstKey(script, args, transformedArguments), "f"); + } + return this.addCommand(undefined, transformedArguments); + } + async exec(execAsPipeline = false) { + if (execAsPipeline) { + return this.execAsPipeline(); + } + const commands = __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, "f").exec(); + if (!commands) + return []; + return __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, "f").handleExecReplies(await __classPrivateFieldGet(this, _RedisClusterMultiCommand_executor, "f").call(this, commands, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, "f"), multi_command_1.default.generateChainId())); + } + async execAsPipeline() { + return __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, "f").transformReplies(await __classPrivateFieldGet(this, _RedisClusterMultiCommand_executor, "f").call(this, __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, "f").queue, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, "f"))); + } +} +exports.default = RedisClusterMultiCommand; +_RedisClusterMultiCommand_multi = new WeakMap(), _RedisClusterMultiCommand_executor = new WeakMap(), _RedisClusterMultiCommand_firstKey = new WeakMap(); +(0, commander_1.extendWithCommands)({ + BaseClass: RedisClusterMultiCommand, + commands: commands_1.default, + executor: RedisClusterMultiCommand.prototype.commandsExecutor +}); diff --git a/node_modules/@node-redis/client/dist/lib/command-options.d.ts b/node_modules/@node-redis/client/dist/lib/command-options.d.ts new file mode 100644 index 0000000000..bbb00f65ff --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/command-options.d.ts @@ -0,0 +1,7 @@ +declare const symbol: unique symbol; +export declare type CommandOptions = T & { + readonly [symbol]: true; +}; +export declare function commandOptions(options: T): CommandOptions; +export declare function isCommandOptions(options: any): options is CommandOptions; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/command-options.js b/node_modules/@node-redis/client/dist/lib/command-options.js new file mode 100644 index 0000000000..f5ffa25a0d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/command-options.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCommandOptions = exports.commandOptions = void 0; +const symbol = Symbol('Command Options'); +function commandOptions(options) { + options[symbol] = true; + return options; +} +exports.commandOptions = commandOptions; +function isCommandOptions(options) { + return options && options[symbol] === true; +} +exports.isCommandOptions = isCommandOptions; diff --git a/node_modules/@node-redis/client/dist/lib/commander.d.ts b/node_modules/@node-redis/client/dist/lib/commander.d.ts new file mode 100644 index 0000000000..72388f9728 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commander.d.ts @@ -0,0 +1,27 @@ +/// +import { CommandOptions } from './command-options'; +import { RedisCommand, RedisCommandArguments, RedisCommandRawReply, RedisCommandReply, RedisCommands, RedisModules, RedisScript, RedisScripts } from './commands'; +declare type Instantiable = new (...args: Array) => T; +interface ExtendWithCommandsConfig { + BaseClass: T; + commands: RedisCommands; + executor(command: RedisCommand, args: Array): unknown; +} +export declare function extendWithCommands({ BaseClass, commands, executor }: ExtendWithCommandsConfig): void; +interface ExtendWithModulesAndScriptsConfig { + BaseClass: T; + modules?: RedisModules; + modulesCommandsExecutor(this: InstanceType, command: RedisCommand, args: Array): unknown; + scripts?: RedisScripts; + scriptsExecutor(this: InstanceType, script: RedisScript, args: Array): unknown; +} +export declare function extendWithModulesAndScripts(config: ExtendWithModulesAndScriptsConfig): T; +export declare function transformCommandArguments(command: RedisCommand, args: Array): { + args: RedisCommandArguments; + options: CommandOptions | undefined; +}; +export declare function encodeCommand(args: RedisCommandArguments): IterableIterator; +export declare function transformCommandReply(command: RedisCommand, rawReply: RedisCommandRawReply, preserved: unknown): RedisCommandReply; +export declare type LegacyCommandArguments = Array; +export declare function transformLegacyCommandArguments(args: LegacyCommandArguments, flat?: RedisCommandArguments): RedisCommandArguments; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commander.js b/node_modules/@node-redis/client/dist/lib/commander.js new file mode 100644 index 0000000000..d9ff353bcd --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commander.js @@ -0,0 +1,95 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformLegacyCommandArguments = exports.transformCommandReply = exports.encodeCommand = exports.transformCommandArguments = exports.extendWithModulesAndScripts = exports.extendWithCommands = void 0; +const command_options_1 = require("./command-options"); +function extendWithCommands({ BaseClass, commands, executor }) { + for (const [name, command] of Object.entries(commands)) { + BaseClass.prototype[name] = function (...args) { + return executor.call(this, command, args); + }; + } +} +exports.extendWithCommands = extendWithCommands; +function extendWithModulesAndScripts(config) { + let Commander; + if (config.modules) { + Commander = class extends config.BaseClass { + constructor(...args) { + super(...args); + for (const module of Object.keys(config.modules)) { + this[module] = new this[module](this); + } + } + }; + for (const [moduleName, module] of Object.entries(config.modules)) { + Commander.prototype[moduleName] = class { + constructor(self) { + Object.defineProperty(this, "self", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + this.self = self; + } + }; + for (const [commandName, command] of Object.entries(module)) { + Commander.prototype[moduleName].prototype[commandName] = function (...args) { + return config.modulesCommandsExecutor.call(this.self, command, args); + }; + } + } + } + if (config.scripts) { + Commander !== null && Commander !== void 0 ? Commander : (Commander = class extends config.BaseClass { + }); + for (const [name, script] of Object.entries(config.scripts)) { + Commander.prototype[name] = function (...args) { + return config.scriptsExecutor.call(this, script, args); + }; + } + } + return (Commander !== null && Commander !== void 0 ? Commander : config.BaseClass); +} +exports.extendWithModulesAndScripts = extendWithModulesAndScripts; +function transformCommandArguments(command, args) { + let options; + if ((0, command_options_1.isCommandOptions)(args[0])) { + options = args[0]; + args = args.slice(1); + } + return { + args: command.transformArguments(...args), + options + }; +} +exports.transformCommandArguments = transformCommandArguments; +const DELIMITER = '\r\n'; +function* encodeCommand(args) { + yield `*${args.length}${DELIMITER}`; + for (const arg of args) { + const byteLength = typeof arg === 'string' ? Buffer.byteLength(arg) : arg.length; + yield `$${byteLength.toString()}${DELIMITER}`; + yield arg; + yield DELIMITER; + } +} +exports.encodeCommand = encodeCommand; +function transformCommandReply(command, rawReply, preserved) { + if (!command.transformReply) { + return rawReply; + } + return command.transformReply(rawReply, preserved); +} +exports.transformCommandReply = transformCommandReply; +function transformLegacyCommandArguments(args, flat = []) { + for (const arg of args) { + if (Array.isArray(arg)) { + transformLegacyCommandArguments(arg, flat); + continue; + } + flat.push(typeof arg === 'number' ? arg.toString() : arg); + } + return flat; +} +exports.transformLegacyCommandArguments = transformLegacyCommandArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_CAT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_CAT.d.ts new file mode 100644 index 0000000000..660b0d8222 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_CAT.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(categoryName?: string): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_CAT.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_CAT.js new file mode 100644 index 0000000000..b6fce00d30 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_CAT.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(categoryName) { + const args = ['ACL', 'CAT']; + if (categoryName) { + args.push(categoryName); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_DELUSER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_DELUSER.d.ts new file mode 100644 index 0000000000..fa82499cc2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_DELUSER.d.ts @@ -0,0 +1,3 @@ +import { RedisCommandArguments } from '.'; +export declare function transformArguments(username: string | Array): RedisCommandArguments; +export declare const transformReply: (reply: number) => number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_DELUSER.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_DELUSER.js new file mode 100644 index 0000000000..9a43ae30dc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_DELUSER.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +const generic_transformers_1 = require("./generic-transformers"); +function transformArguments(username) { + return (0, generic_transformers_1.pushVerdictArguments)(['ACL', 'DELUSER'], username); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_GENPASS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_GENPASS.d.ts new file mode 100644 index 0000000000..374ee7b821 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_GENPASS.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(bits?: number): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_GENPASS.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_GENPASS.js new file mode 100644 index 0000000000..cd2a3a7b90 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_GENPASS.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(bits) { + const args = ['ACL', 'GENPASS']; + if (bits) { + args.push(bits.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_GETUSER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_GETUSER.d.ts new file mode 100644 index 0000000000..7e9027303d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_GETUSER.d.ts @@ -0,0 +1,22 @@ +export declare function transformArguments(username: string): Array; +declare type AclGetUserRawReply = [ + _: string, + flags: Array, + _: string, + passwords: Array, + _: string, + commands: string, + _: string, + keys: Array, + _: string, + channels: Array +]; +interface AclUser { + flags: Array; + passwords: Array; + commands: string; + keys: Array; + channels: Array; +} +export declare function transformReply(reply: AclGetUserRawReply): AclUser; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_GETUSER.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_GETUSER.js new file mode 100644 index 0000000000..b54b7cb3a3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_GETUSER.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(username) { + return ['ACL', 'GETUSER', username]; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return { + flags: reply[1], + passwords: reply[3], + commands: reply[5], + keys: reply[7], + channels: reply[9] + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_LIST.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_LIST.d.ts new file mode 100644 index 0000000000..db92074a85 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_LIST.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_LIST.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_LIST.js new file mode 100644 index 0000000000..fa806d83e7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_LIST.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['ACL', 'LIST']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_LOAD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOAD.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOAD.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_LOAD.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOAD.js new file mode 100644 index 0000000000..d433e3b572 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOAD.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['ACL', 'LOAD']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG.d.ts new file mode 100644 index 0000000000..961db91bd7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG.d.ts @@ -0,0 +1,28 @@ +export declare function transformArguments(count?: number): Array; +declare type AclLogRawReply = [ + _: string, + count: number, + _: string, + reason: string, + _: string, + context: string, + _: string, + object: string, + _: string, + username: string, + _: string, + ageSeconds: string, + _: string, + clientInfo: string +]; +interface AclLog { + count: number; + reason: string; + context: string; + object: string; + username: string; + ageSeconds: number; + clientInfo: string; +} +export declare function transformReply(reply: Array): Array; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG.js new file mode 100644 index 0000000000..e943bee174 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(count) { + const args = ['ACL', 'LOG']; + if (count) { + args.push(count.toString()); + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply.map(log => ({ + count: log[1], + reason: log[3], + context: log[5], + object: log[7], + username: log[9], + ageSeconds: Number(log[11]), + clientInfo: log[13] + })); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG_RESET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG_RESET.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG_RESET.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG_RESET.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG_RESET.js new file mode 100644 index 0000000000..1a57c0b105 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_LOG_RESET.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['ACL', 'LOG', 'RESET']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_SAVE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_SAVE.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_SAVE.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_SAVE.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_SAVE.js new file mode 100644 index 0000000000..e793f9d25c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_SAVE.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['ACL', 'SAVE']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_SETUSER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_SETUSER.d.ts new file mode 100644 index 0000000000..1e0291b1f0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_SETUSER.d.ts @@ -0,0 +1,3 @@ +import { RedisCommandArguments } from '.'; +export declare function transformArguments(username: string, rule: string | Array): RedisCommandArguments; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_SETUSER.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_SETUSER.js new file mode 100644 index 0000000000..2421845488 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_SETUSER.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +const generic_transformers_1 = require("./generic-transformers"); +function transformArguments(username, rule) { + return (0, generic_transformers_1.pushVerdictArguments)(['ACL', 'SETUSER', username], rule); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_USERS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_USERS.d.ts new file mode 100644 index 0000000000..db92074a85 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_USERS.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_USERS.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_USERS.js new file mode 100644 index 0000000000..3895e5cb50 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_USERS.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['ACL', 'USERS']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_WHOAMI.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ACL_WHOAMI.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_WHOAMI.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ACL_WHOAMI.js b/node_modules/@node-redis/client/dist/lib/commands/ACL_WHOAMI.js new file mode 100644 index 0000000000..38996a7568 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ACL_WHOAMI.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['ACL', 'WHOAMI']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/APPEND.d.ts b/node_modules/@node-redis/client/dist/lib/commands/APPEND.d.ts new file mode 100644 index 0000000000..9898d390f5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/APPEND.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, value: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/APPEND.js b/node_modules/@node-redis/client/dist/lib/commands/APPEND.js new file mode 100644 index 0000000000..93dc4bb7d1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/APPEND.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, value) { + return ['APPEND', key, value]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ASKING.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ASKING.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ASKING.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ASKING.js b/node_modules/@node-redis/client/dist/lib/commands/ASKING.js new file mode 100644 index 0000000000..3485abde3f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ASKING.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['ASKING']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/AUTH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/AUTH.d.ts new file mode 100644 index 0000000000..1e51aae6c1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/AUTH.d.ts @@ -0,0 +1,6 @@ +export interface AuthOptions { + username?: string; + password: string; +} +export declare function transformArguments({ username, password }: AuthOptions): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/AUTH.js b/node_modules/@node-redis/client/dist/lib/commands/AUTH.js new file mode 100644 index 0000000000..35ec3b024d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/AUTH.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments({ username, password }) { + if (!username) { + return ['AUTH', password]; + } + return ['AUTH', username, password]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BGREWRITEAOF.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BGREWRITEAOF.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BGREWRITEAOF.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BGREWRITEAOF.js b/node_modules/@node-redis/client/dist/lib/commands/BGREWRITEAOF.js new file mode 100644 index 0000000000..dc7fd6d6b8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BGREWRITEAOF.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['BGREWRITEAOF']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BGSAVE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BGSAVE.d.ts new file mode 100644 index 0000000000..5b2b0513f3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BGSAVE.d.ts @@ -0,0 +1,6 @@ +interface BgSaveOptions { + SCHEDULE?: true; +} +export declare function transformArguments(options?: BgSaveOptions): Array; +export declare function transformReply(): string; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BGSAVE.js b/node_modules/@node-redis/client/dist/lib/commands/BGSAVE.js new file mode 100644 index 0000000000..58971f3fb7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BGSAVE.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(options) { + const args = ['BGSAVE']; + if (options === null || options === void 0 ? void 0 : options.SCHEDULE) { + args.push('SCHEDULE'); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BITCOUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BITCOUNT.d.ts new file mode 100644 index 0000000000..7f50a8d468 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BITCOUNT.d.ts @@ -0,0 +1,9 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +interface BitCountRange { + start: number; + end: number; +} +export declare function transformArguments(key: string, range?: BitCountRange): Array; +export declare function transformReply(): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BITCOUNT.js b/node_modules/@node-redis/client/dist/lib/commands/BITCOUNT.js new file mode 100644 index 0000000000..0e72b0265d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BITCOUNT.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, range) { + const args = ['BITCOUNT', key]; + if (range) { + args.push(range.start.toString(), range.end.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BITFIELD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BITFIELD.d.ts new file mode 100644 index 0000000000..13cbf9dd95 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BITFIELD.d.ts @@ -0,0 +1,27 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +declare type BitFieldType = string; +interface BitFieldOperation { + operation: S; +} +interface BitFieldGetOperation extends BitFieldOperation<'GET'> { + type: BitFieldType; + offset: number | string; +} +interface BitFieldSetOperation extends BitFieldOperation<'SET'> { + type: BitFieldType; + offset: number | string; + value: number; +} +interface BitFieldIncrByOperation extends BitFieldOperation<'INCRBY'> { + type: BitFieldType; + offset: number | string; + increment: number; +} +interface BitFieldOverflowOperation extends BitFieldOperation<'OVERFLOW'> { + behavior: string; +} +declare type BitFieldOperations = Array; +export declare function transformArguments(key: string, operations: BitFieldOperations): Array; +export declare function transformReply(): Array; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BITFIELD.js b/node_modules/@node-redis/client/dist/lib/commands/BITFIELD.js new file mode 100644 index 0000000000..822504101d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BITFIELD.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, operations) { + const args = ['BITFIELD', key]; + for (const options of operations) { + switch (options.operation) { + case 'GET': + args.push('GET', options.type, options.offset.toString()); + break; + case 'SET': + args.push('SET', options.type, options.offset.toString(), options.value.toString()); + break; + case 'INCRBY': + args.push('INCRBY', options.type, options.offset.toString(), options.increment.toString()); + break; + case 'OVERFLOW': + args.push('OVERFLOW', options.behavior); + break; + } + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BITOP.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BITOP.d.ts new file mode 100644 index 0000000000..8ff2c8e1cd --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BITOP.d.ts @@ -0,0 +1,6 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 2; +declare type BitOperations = 'AND' | 'OR' | 'XOR' | 'NOT'; +export declare function transformArguments(operation: BitOperations, destKey: string, key: string | Array): RedisCommandArguments; +export declare function transformReply(): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BITOP.js b/node_modules/@node-redis/client/dist/lib/commands/BITOP.js new file mode 100644 index 0000000000..1cab80b903 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BITOP.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 2; +function transformArguments(operation, destKey, key) { + return (0, generic_transformers_1.pushVerdictArguments)(['BITOP', operation, destKey], key); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BITPOS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BITPOS.d.ts new file mode 100644 index 0000000000..c7790a5d99 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BITPOS.d.ts @@ -0,0 +1,5 @@ +import { BitValue } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, bit: BitValue, start?: number, end?: number): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BITPOS.js b/node_modules/@node-redis/client/dist/lib/commands/BITPOS.js new file mode 100644 index 0000000000..67d8f0d535 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BITPOS.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, bit, start, end) { + const args = ['BITPOS', key, bit.toString()]; + if (typeof start === 'number') { + args.push(start.toString()); + } + if (typeof end === 'number') { + args.push(end.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BLMOVE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BLMOVE.d.ts new file mode 100644 index 0000000000..31e148ae22 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BLMOVE.d.ts @@ -0,0 +1,4 @@ +import { LMoveSide } from './LMOVE'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(source: string, destination: string, sourceDirection: LMoveSide, destinationDirection: LMoveSide, timeout: number): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BLMOVE.js b/node_modules/@node-redis/client/dist/lib/commands/BLMOVE.js new file mode 100644 index 0000000000..cfa4233427 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BLMOVE.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(source, destination, sourceDirection, destinationDirection, timeout) { + return [ + 'BLMOVE', + source, + destination, + sourceDirection, + destinationDirection, + timeout.toString() + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BLPOP.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BLPOP.d.ts new file mode 100644 index 0000000000..70e43eb66d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BLPOP.d.ts @@ -0,0 +1,10 @@ +/// +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(keys: string | Buffer | Array, timeout: number): RedisCommandArguments; +declare type BLPOPReply = null | { + key: string; + element: string; +}; +export declare function transformReply(reply: null | [string, string]): BLPOPReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BLPOP.js b/node_modules/@node-redis/client/dist/lib/commands/BLPOP.js new file mode 100644 index 0000000000..46682acebf --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BLPOP.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(keys, timeout) { + const args = (0, generic_transformers_1.pushVerdictArguments)(['BLPOP'], keys); + args.push(timeout.toString()); + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + if (reply === null) + return null; + return { + key: reply[0], + element: reply[1] + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BRPOP.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BRPOP.d.ts new file mode 100644 index 0000000000..6be5668644 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BRPOP.d.ts @@ -0,0 +1,9 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string | Array, timeout: number): RedisCommandArguments; +declare type BRPOPReply = null | { + key: string; + element: string; +}; +export declare function transformReply(reply: null | [string, string]): BRPOPReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BRPOP.js b/node_modules/@node-redis/client/dist/lib/commands/BRPOP.js new file mode 100644 index 0000000000..c7834f1c2c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BRPOP.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, timeout) { + const args = (0, generic_transformers_1.pushVerdictArguments)(['BRPOP'], key); + args.push(timeout.toString()); + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + if (reply === null) + return null; + return { + key: reply[0], + element: reply[1] + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BRPOPLPUSH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BRPOPLPUSH.d.ts new file mode 100644 index 0000000000..9914bb12b4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BRPOPLPUSH.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(source: string, destination: string, timeout: number): Array; +export declare function transformReply(): number | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BRPOPLPUSH.js b/node_modules/@node-redis/client/dist/lib/commands/BRPOPLPUSH.js new file mode 100644 index 0000000000..31e3e1b136 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BRPOPLPUSH.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(source, destination, timeout) { + return ['BRPOPLPUSH', source, destination, timeout.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BZPOPMAX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BZPOPMAX.d.ts new file mode 100644 index 0000000000..a6f322e26f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BZPOPMAX.d.ts @@ -0,0 +1,10 @@ +import { RedisCommandArguments } from '.'; +import { ZMember } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string | Array, timeout: number): RedisCommandArguments; +interface ZMemberWithKey extends ZMember { + key: string; +} +declare type BZPopMaxReply = ZMemberWithKey | null; +export declare function transformReply(reply: [key: string, value: string, score: string] | null): BZPopMaxReply | null; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BZPOPMAX.js b/node_modules/@node-redis/client/dist/lib/commands/BZPOPMAX.js new file mode 100644 index 0000000000..33cfe6bb89 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BZPOPMAX.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, timeout) { + const args = (0, generic_transformers_1.pushVerdictArguments)(['BZPOPMAX'], key); + args.push(timeout.toString()); + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + if (!reply) + return null; + return { + key: reply[0], + value: reply[1], + score: (0, generic_transformers_1.transformReplyNumberInfinity)(reply[2]) + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BZPOPMIN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/BZPOPMIN.d.ts new file mode 100644 index 0000000000..fad33df75b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BZPOPMIN.d.ts @@ -0,0 +1,10 @@ +import { RedisCommandArguments } from '.'; +import { ZMember } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string | Array, timeout: number): RedisCommandArguments; +interface ZMemberWithKey extends ZMember { + key: string; +} +declare type BZPopMinReply = ZMemberWithKey | null; +export declare function transformReply(reply: [key: string, value: string, score: string] | null): BZPopMinReply | null; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/BZPOPMIN.js b/node_modules/@node-redis/client/dist/lib/commands/BZPOPMIN.js new file mode 100644 index 0000000000..0266f0c786 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/BZPOPMIN.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, timeout) { + const args = (0, generic_transformers_1.pushVerdictArguments)(['BZPOPMIN'], key); + args.push(timeout.toString()); + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + if (!reply) + return null; + return { + key: reply[0], + value: reply[1], + score: (0, generic_transformers_1.transformReplyNumberInfinity)(reply[2]) + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLIENT_ID.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLIENT_ID.d.ts new file mode 100644 index 0000000000..14244d26fc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLIENT_ID.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLIENT_ID.js b/node_modules/@node-redis/client/dist/lib/commands/CLIENT_ID.js new file mode 100644 index 0000000000..1429e4b0ba --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLIENT_ID.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments() { + return ['CLIENT', 'ID']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLIENT_INFO.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLIENT_INFO.d.ts new file mode 100644 index 0000000000..d04cf9c911 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLIENT_INFO.d.ts @@ -0,0 +1,28 @@ +export declare function transformArguments(): Array; +interface ClientInfoReply { + id: number; + addr: string; + laddr: string; + fd: number; + name: string; + age: number; + idle: number; + flags: string; + db: number; + sub: number; + psub: number; + multi: number; + qbuf: number; + qbufFree: number; + argvMem: number; + obl: number; + oll: number; + omem: number; + totMem: number; + events: string; + cmd: string; + user: string; + redir: number; +} +export declare function transformReply(reply: string): ClientInfoReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLIENT_INFO.js b/node_modules/@node-redis/client/dist/lib/commands/CLIENT_INFO.js new file mode 100644 index 0000000000..b91eddd283 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLIENT_INFO.js @@ -0,0 +1,37 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments() { + return ['CLIENT', 'INFO']; +} +exports.transformArguments = transformArguments; +const REGEX = /=([^\s]*)/g; +function transformReply(reply) { + const [[, id], [, addr], [, laddr], [, fd], [, name], [, age], [, idle], [, flags], [, db], [, sub], [, psub], [, multi], [, qbuf], [, qbufFree], [, argvMem], [, obl], [, oll], [, omem], [, totMem], [, events], [, cmd], [, user], [, redir]] = [...reply.matchAll(REGEX)]; + return { + id: Number(id), + addr, + laddr, + fd: Number(fd), + name, + age: Number(age), + idle: Number(idle), + flags, + db: Number(db), + sub: Number(sub), + psub: Number(psub), + multi: Number(multi), + qbuf: Number(qbuf), + qbufFree: Number(qbufFree), + argvMem: Number(argvMem), + obl: Number(obl), + oll: Number(oll), + omem: Number(omem), + totMem: Number(totMem), + events, + cmd, + user, + redir: Number(redir) + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.d.ts new file mode 100644 index 0000000000..d10f71b0b9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(slots: number | Array): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.js b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.js new file mode 100644 index 0000000000..6e9b4d34b8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(slots) { + const args = ['CLUSTER', 'ADDSLOTS']; + if (typeof slots === 'number') { + args.push(slots.toString()); + } + else { + args.push(...slots.map(String)); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.js b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.js new file mode 100644 index 0000000000..3ce25ee5bf --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['CLUSTER', 'FLUSHSLOTS']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.d.ts new file mode 100644 index 0000000000..cefb24a934 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(slot: number, count: number): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.js b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.js new file mode 100644 index 0000000000..a151bda7c9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(slot, count) { + return ['CLUSTER', 'GETKEYSINSLOT', slot.toString(), count.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_INFO.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_INFO.d.ts new file mode 100644 index 0000000000..7f6d96545c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_INFO.d.ts @@ -0,0 +1,21 @@ +export declare function transformArguments(): Array; +interface ClusterInfoReply { + state: string; + slots: { + assigned: number; + ok: number; + pfail: number; + fail: number; + }; + knownNodes: number; + size: number; + currentEpoch: number; + myEpoch: number; + stats: { + messagesSent: number; + messagesReceived: number; + }; +} +export declare function transformReply(reply: string): ClusterInfoReply; +export declare function extractLineValue(line: string): string; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_INFO.js b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_INFO.js new file mode 100644 index 0000000000..3a8192512b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_INFO.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.extractLineValue = exports.transformReply = exports.transformArguments = void 0; +function transformArguments() { + return ['CLUSTER', 'INFO']; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + const lines = reply.split('\r\n'); + return { + state: extractLineValue(lines[0]), + slots: { + assigned: Number(extractLineValue(lines[1])), + ok: Number(extractLineValue(lines[2])), + pfail: Number(extractLineValue(lines[3])), + fail: Number(extractLineValue(lines[4])) + }, + knownNodes: Number(extractLineValue(lines[5])), + size: Number(extractLineValue(lines[6])), + currentEpoch: Number(extractLineValue(lines[7])), + myEpoch: Number(extractLineValue(lines[8])), + stats: { + messagesSent: Number(extractLineValue(lines[9])), + messagesReceived: Number(extractLineValue(lines[10])) + } + }; +} +exports.transformReply = transformReply; +function extractLineValue(line) { + return line.substring(line.indexOf(':') + 1); +} +exports.extractLineValue = extractLineValue; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_MEET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_MEET.d.ts new file mode 100644 index 0000000000..058860f60c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_MEET.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(ip: string, port: number): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_MEET.js b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_MEET.js new file mode 100644 index 0000000000..5a32515ef8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_MEET.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(ip, port) { + return ['CLUSTER', 'MEET', ip, port.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_NODES.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_NODES.d.ts new file mode 100644 index 0000000000..f12e350ef6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_NODES.d.ts @@ -0,0 +1,28 @@ +export declare function transformArguments(): Array; +export declare enum RedisClusterNodeLinkStates { + CONNECTED = "connected", + DISCONNECTED = "disconnected" +} +interface RedisClusterNodeTransformedUrl { + host: string; + port: number; + cport: number | null; +} +export interface RedisClusterReplicaNode extends RedisClusterNodeTransformedUrl { + id: string; + url: string; + flags: Array; + pingSent: number; + pongRecv: number; + configEpoch: number; + linkState: RedisClusterNodeLinkStates; +} +export interface RedisClusterMasterNode extends RedisClusterReplicaNode { + slots: Array<{ + from: number; + to: number; + }>; + replicas: Array; +} +export declare function transformReply(reply: string): Array; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_NODES.js b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_NODES.js new file mode 100644 index 0000000000..8231acb75f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_NODES.js @@ -0,0 +1,74 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.RedisClusterNodeLinkStates = exports.transformArguments = void 0; +function transformArguments() { + return ['CLUSTER', 'NODES']; +} +exports.transformArguments = transformArguments; +var RedisClusterNodeLinkStates; +(function (RedisClusterNodeLinkStates) { + RedisClusterNodeLinkStates["CONNECTED"] = "connected"; + RedisClusterNodeLinkStates["DISCONNECTED"] = "disconnected"; +})(RedisClusterNodeLinkStates = exports.RedisClusterNodeLinkStates || (exports.RedisClusterNodeLinkStates = {})); +function transformReply(reply) { + const lines = reply.split('\n'); + lines.pop(); // last line is empty + const mastersMap = new Map(), replicasMap = new Map(); + for (const line of lines) { + const [id, url, flags, masterId, pingSent, pongRecv, configEpoch, linkState, ...slots] = line.split(' '), node = { + id, + url, + ...transformNodeUrl(url), + flags: flags.split(','), + pingSent: Number(pingSent), + pongRecv: Number(pongRecv), + configEpoch: Number(configEpoch), + linkState: linkState + }; + if (masterId === '-') { + let replicas = replicasMap.get(id); + if (!replicas) { + replicas = []; + replicasMap.set(id, replicas); + } + mastersMap.set(id, { + ...node, + slots: slots.map(slot => { + // TODO: importing & exporting (https://redis.io/commands/cluster-nodes#special-slot-entries) + const [fromString, toString] = slot.split('-', 2), from = Number(fromString); + return { + from, + to: toString ? Number(toString) : from + }; + }), + replicas + }); + } + else { + const replicas = replicasMap.get(masterId); + if (!replicas) { + replicasMap.set(masterId, [node]); + } + else { + replicas.push(node); + } + } + } + return [...mastersMap.values()]; +} +exports.transformReply = transformReply; +function transformNodeUrl(url) { + const indexOfColon = url.indexOf(':'), indexOfAt = url.indexOf('@', indexOfColon), host = url.substring(0, indexOfColon); + if (indexOfAt === -1) { + return { + host, + port: Number(url.substring(indexOfColon + 1)), + cport: null + }; + } + return { + host: url.substring(0, indexOfColon), + port: Number(url.substring(indexOfColon + 1, indexOfAt)), + cport: Number(url.substring(indexOfAt + 1)) + }; +} diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_RESET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_RESET.d.ts new file mode 100644 index 0000000000..ce55159631 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_RESET.d.ts @@ -0,0 +1,3 @@ +export declare type ClusterResetModes = 'HARD' | 'SOFT'; +export declare function transformArguments(mode?: ClusterResetModes): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_RESET.js b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_RESET.js new file mode 100644 index 0000000000..da95cd0ca5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_RESET.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(mode) { + const args = ['CLUSTER', 'RESET']; + if (mode) { + args.push(mode); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SETSLOT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SETSLOT.d.ts new file mode 100644 index 0000000000..5cd73f6002 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SETSLOT.d.ts @@ -0,0 +1,8 @@ +export declare enum ClusterSlotStates { + IMPORTING = "IMPORTING", + MIGRATING = "MIGRATING", + STABLE = "STABLE", + NODE = "NODE" +} +export declare function transformArguments(slot: number, state: ClusterSlotStates, nodeId?: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SETSLOT.js b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SETSLOT.js new file mode 100644 index 0000000000..24241234bf --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SETSLOT.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.ClusterSlotStates = void 0; +var ClusterSlotStates; +(function (ClusterSlotStates) { + ClusterSlotStates["IMPORTING"] = "IMPORTING"; + ClusterSlotStates["MIGRATING"] = "MIGRATING"; + ClusterSlotStates["STABLE"] = "STABLE"; + ClusterSlotStates["NODE"] = "NODE"; +})(ClusterSlotStates = exports.ClusterSlotStates || (exports.ClusterSlotStates = {})); +function transformArguments(slot, state, nodeId) { + const args = ['CLUSTER', 'SETSLOT', slot.toString(), state]; + if (nodeId) { + args.push(nodeId); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SLOTS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SLOTS.d.ts new file mode 100644 index 0000000000..57ed42ef21 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SLOTS.d.ts @@ -0,0 +1,17 @@ +import { RedisCommandArguments } from '.'; +export declare function transformArguments(): RedisCommandArguments; +declare type ClusterSlotsRawNode = [ip: string, port: number, id: string]; +declare type ClusterSlotsRawReply = Array<[from: number, to: number, master: ClusterSlotsRawNode, ...replicas: Array]>; +declare type ClusterSlotsNode = { + ip: string; + port: number; + id: string; +}; +export declare type ClusterSlotsReply = Array<{ + from: number; + to: number; + master: ClusterSlotsNode; + replicas: Array; +}>; +export declare function transformReply(reply: ClusterSlotsRawReply): ClusterSlotsReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SLOTS.js b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SLOTS.js new file mode 100644 index 0000000000..ee6011a906 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CLUSTER_SLOTS.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments() { + return ['CLUSTER', 'SLOTS']; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply.map(([from, to, master, ...replicas]) => { + return { + from, + to, + master: transformNode(master), + replicas: replicas.map(transformNode) + }; + }); +} +exports.transformReply = transformReply; +function transformNode([ip, port, id]) { + return { + ip, + port, + id + }; +} diff --git a/node_modules/@node-redis/client/dist/lib/commands/COMMAND.d.ts b/node_modules/@node-redis/client/dist/lib/commands/COMMAND.d.ts new file mode 100644 index 0000000000..f1730e0c2d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COMMAND.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +import { CommandRawReply, CommandReply } from './generic-transformers'; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(): RedisCommandArguments; +export declare function transformReply(reply: Array): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/COMMAND.js b/node_modules/@node-redis/client/dist/lib/commands/COMMAND.js new file mode 100644 index 0000000000..b482a91290 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COMMAND.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.IS_READ_ONLY = true; +function transformArguments() { + return ['COMMAND']; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply.map(generic_transformers_1.transformCommandReply); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/COMMAND_COUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_COUNT.d.ts new file mode 100644 index 0000000000..a2461a3a3a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_COUNT.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/COMMAND_COUNT.js b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_COUNT.js new file mode 100644 index 0000000000..c417a38608 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_COUNT.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments() { + return ['COMMAND', 'COUNT']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/COMMAND_GETKEYS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_GETKEYS.d.ts new file mode 100644 index 0000000000..91f0faaac9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_GETKEYS.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(args: Array): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/COMMAND_GETKEYS.js b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_GETKEYS.js new file mode 100644 index 0000000000..8a3e57e5ef --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_GETKEYS.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(args) { + return ['COMMAND', 'GETKEYS', ...args]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/COMMAND_INFO.d.ts b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_INFO.d.ts new file mode 100644 index 0000000000..80fce32bbd --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_INFO.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +import { CommandRawReply, CommandReply } from './generic-transformers'; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(commands: Array): RedisCommandArguments; +export declare function transformReply(reply: Array): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/COMMAND_INFO.js b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_INFO.js new file mode 100644 index 0000000000..552c991e37 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COMMAND_INFO.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.IS_READ_ONLY = true; +function transformArguments(commands) { + return ['COMMAND', 'INFO', ...commands]; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply.map(command => command ? (0, generic_transformers_1.transformCommandReply)(command) : null); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CONFIG_GET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_GET.d.ts new file mode 100644 index 0000000000..b530bd8aa5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_GET.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(parameter: string): Array; +export { transformReplyTuples as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CONFIG_GET.js b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_GET.js new file mode 100644 index 0000000000..0069ab8c2a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_GET.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(parameter) { + return ['CONFIG', 'GET', parameter]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyTuples; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/CONFIG_RESETSTAT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_RESETSTAT.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_RESETSTAT.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CONFIG_RESETSTAT.js b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_RESETSTAT.js new file mode 100644 index 0000000000..debd3b2daf --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_RESETSTAT.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['CONFIG', 'RESETSTAT']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CONFIG_REWRITE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_REWRITE.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_REWRITE.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CONFIG_REWRITE.js b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_REWRITE.js new file mode 100644 index 0000000000..b78ddbc6f8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_REWRITE.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['CONFIG', 'REWRITE']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CONFIG_SET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_SET.d.ts new file mode 100644 index 0000000000..20dc18a658 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_SET.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(parameter: string, value: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/CONFIG_SET.js b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_SET.js new file mode 100644 index 0000000000..b26c0ca9da --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/CONFIG_SET.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(parameter, value) { + return ['CONFIG', 'SET', parameter, value]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/COPY.d.ts b/node_modules/@node-redis/client/dist/lib/commands/COPY.d.ts new file mode 100644 index 0000000000..5d68607b73 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COPY.d.ts @@ -0,0 +1,7 @@ +interface CopyCommandOptions { + destinationDb?: number; + replace?: boolean; +} +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(source: string, destination: string, options?: CopyCommandOptions): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/COPY.js b/node_modules/@node-redis/client/dist/lib/commands/COPY.js new file mode 100644 index 0000000000..bca8c7f393 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/COPY.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(source, destination, options) { + const args = ['COPY', source, destination]; + if (options === null || options === void 0 ? void 0 : options.destinationDb) { + args.push('DB', options.destinationDb.toString()); + } + if (options === null || options === void 0 ? void 0 : options.replace) { + args.push('REPLACE'); + } + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/DBSIZE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/DBSIZE.d.ts new file mode 100644 index 0000000000..14244d26fc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DBSIZE.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DBSIZE.js b/node_modules/@node-redis/client/dist/lib/commands/DBSIZE.js new file mode 100644 index 0000000000..c50332d2f2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DBSIZE.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments() { + return ['DBSIZE']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DECR.d.ts b/node_modules/@node-redis/client/dist/lib/commands/DECR.d.ts new file mode 100644 index 0000000000..c1eb7365ad --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DECR.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DECR.js b/node_modules/@node-redis/client/dist/lib/commands/DECR.js new file mode 100644 index 0000000000..a7fbc3d065 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DECR.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['DECR', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DECRBY.d.ts b/node_modules/@node-redis/client/dist/lib/commands/DECRBY.d.ts new file mode 100644 index 0000000000..81da3f63a2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DECRBY.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, decrement: number): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DECRBY.js b/node_modules/@node-redis/client/dist/lib/commands/DECRBY.js new file mode 100644 index 0000000000..f119275c57 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DECRBY.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, decrement) { + return ['DECRBY', key, decrement.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DEL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/DEL.d.ts new file mode 100644 index 0000000000..7bd399a1e3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DEL.d.ts @@ -0,0 +1,3 @@ +import { RedisCommandArguments } from '.'; +export declare function transformArguments(keys: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DEL.js b/node_modules/@node-redis/client/dist/lib/commands/DEL.js new file mode 100644 index 0000000000..ec1c296096 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DEL.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +const generic_transformers_1 = require("./generic-transformers"); +function transformArguments(keys) { + return (0, generic_transformers_1.pushVerdictArguments)(['DEL'], keys); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DISCARD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/DISCARD.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DISCARD.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DISCARD.js b/node_modules/@node-redis/client/dist/lib/commands/DISCARD.js new file mode 100644 index 0000000000..eb19c5fa62 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DISCARD.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['DISCARD']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DUMP.d.ts b/node_modules/@node-redis/client/dist/lib/commands/DUMP.d.ts new file mode 100644 index 0000000000..b150a9fbf6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DUMP.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(key: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/DUMP.js b/node_modules/@node-redis/client/dist/lib/commands/DUMP.js new file mode 100644 index 0000000000..0139fefa07 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/DUMP.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(key) { + return ['DUMP', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ECHO.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ECHO.d.ts new file mode 100644 index 0000000000..153c507baf --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ECHO.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(message: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ECHO.js b/node_modules/@node-redis/client/dist/lib/commands/ECHO.js new file mode 100644 index 0000000000..06370d27ef --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ECHO.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(message) { + return ['ECHO', message]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/EVAL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/EVAL.d.ts new file mode 100644 index 0000000000..dcc86e9851 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EVAL.d.ts @@ -0,0 +1,2 @@ +import { EvalOptions } from './generic-transformers'; +export declare function transformArguments(script: string, options?: EvalOptions): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/EVAL.js b/node_modules/@node-redis/client/dist/lib/commands/EVAL.js new file mode 100644 index 0000000000..275197a5a7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EVAL.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +const generic_transformers_1 = require("./generic-transformers"); +function transformArguments(script, options) { + return (0, generic_transformers_1.pushEvalArguments)(['EVAL', script], options); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/EVALSHA.d.ts b/node_modules/@node-redis/client/dist/lib/commands/EVALSHA.d.ts new file mode 100644 index 0000000000..d30df89712 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EVALSHA.d.ts @@ -0,0 +1,2 @@ +import { EvalOptions } from './generic-transformers'; +export declare function transformArguments(sha1: string, options?: EvalOptions): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/EVALSHA.js b/node_modules/@node-redis/client/dist/lib/commands/EVALSHA.js new file mode 100644 index 0000000000..fbeb98c0b8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EVALSHA.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +const generic_transformers_1 = require("./generic-transformers"); +function transformArguments(sha1, options) { + return (0, generic_transformers_1.pushEvalArguments)(['EVALSHA', sha1], options); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/EXISTS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/EXISTS.d.ts new file mode 100644 index 0000000000..19b5203cfc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EXISTS.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(keys: string | Array): RedisCommandArguments; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/EXISTS.js b/node_modules/@node-redis/client/dist/lib/commands/EXISTS.js new file mode 100644 index 0000000000..010e31a668 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EXISTS.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(keys) { + return (0, generic_transformers_1.pushVerdictArguments)(['EXISTS'], keys); +} +exports.transformArguments = transformArguments; +var generic_transformers_2 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/EXPIRE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/EXPIRE.d.ts new file mode 100644 index 0000000000..8fe5eb86cc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EXPIRE.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(key: string, seconds: number): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/EXPIRE.js b/node_modules/@node-redis/client/dist/lib/commands/EXPIRE.js new file mode 100644 index 0000000000..287530ebec --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EXPIRE.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(key, seconds) { + return ['EXPIRE', key, seconds.toString()]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/EXPIREAT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/EXPIREAT.d.ts new file mode 100644 index 0000000000..548872ab4d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EXPIREAT.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(key: string, timestamp: number | Date): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/EXPIREAT.js b/node_modules/@node-redis/client/dist/lib/commands/EXPIREAT.js new file mode 100644 index 0000000000..d4b3e1f839 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/EXPIREAT.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +const generic_transformers_1 = require("./generic-transformers"); +function transformArguments(key, timestamp) { + return [ + 'EXPIREAT', + key, + (0, generic_transformers_1.transformEXAT)(timestamp) + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_2 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/FAILOVER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/FAILOVER.d.ts new file mode 100644 index 0000000000..8d74bf9561 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/FAILOVER.d.ts @@ -0,0 +1,12 @@ +interface FailoverOptions { + TO?: { + host: string; + port: number; + FORCE?: true; + }; + ABORT?: true; + TIMEOUT?: number; +} +export declare function transformArguments(options?: FailoverOptions): Array; +export declare function transformReply(): string; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/FAILOVER.js b/node_modules/@node-redis/client/dist/lib/commands/FAILOVER.js new file mode 100644 index 0000000000..7dfc81e96b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/FAILOVER.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(options) { + const args = ['FAILOVER']; + if (options === null || options === void 0 ? void 0 : options.TO) { + args.push('TO', options.TO.host, options.TO.port.toString()); + if (options.TO.FORCE) { + args.push('FORCE'); + } + } + if (options === null || options === void 0 ? void 0 : options.ABORT) { + args.push('ABORT'); + } + if (options === null || options === void 0 ? void 0 : options.TIMEOUT) { + args.push('TIMEOUT', options.TIMEOUT.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/FLUSHALL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/FLUSHALL.d.ts new file mode 100644 index 0000000000..b0a35d1cce --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/FLUSHALL.d.ts @@ -0,0 +1,6 @@ +export declare enum RedisFlushModes { + ASYNC = "ASYNC", + SYNC = "SYNC" +} +export declare function transformArguments(mode?: RedisFlushModes): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/FLUSHALL.js b/node_modules/@node-redis/client/dist/lib/commands/FLUSHALL.js new file mode 100644 index 0000000000..1db9e8263d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/FLUSHALL.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.RedisFlushModes = void 0; +var RedisFlushModes; +(function (RedisFlushModes) { + RedisFlushModes["ASYNC"] = "ASYNC"; + RedisFlushModes["SYNC"] = "SYNC"; +})(RedisFlushModes = exports.RedisFlushModes || (exports.RedisFlushModes = {})); +function transformArguments(mode) { + const args = ['FLUSHALL']; + if (mode) { + args.push(mode); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/FLUSHDB.d.ts b/node_modules/@node-redis/client/dist/lib/commands/FLUSHDB.d.ts new file mode 100644 index 0000000000..34c668dea4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/FLUSHDB.d.ts @@ -0,0 +1,3 @@ +import { RedisFlushModes } from './FLUSHALL'; +export declare function transformArguments(mode?: RedisFlushModes): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/FLUSHDB.js b/node_modules/@node-redis/client/dist/lib/commands/FLUSHDB.js new file mode 100644 index 0000000000..3d52b3038b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/FLUSHDB.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(mode) { + const args = ['FLUSHDB']; + if (mode) { + args.push(mode); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOADD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GEOADD.d.ts new file mode 100644 index 0000000000..36da6bca9b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOADD.d.ts @@ -0,0 +1,19 @@ +import { GeoCoordinates } from './generic-transformers'; +interface GeoMember extends GeoCoordinates { + member: string; +} +interface NX { + NX?: true; +} +interface XX { + XX?: true; +} +declare type SetGuards = NX | XX; +interface GeoAddCommonOptions { + CH?: true; +} +declare type GeoAddOptions = SetGuards & GeoAddCommonOptions; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, toAdd: GeoMember | Array, options?: GeoAddOptions): Array; +export declare function transformReply(): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOADD.js b/node_modules/@node-redis/client/dist/lib/commands/GEOADD.js new file mode 100644 index 0000000000..ac49f9c4f1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOADD.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, toAdd, options) { + var _a, _b; + const args = ['GEOADD', key]; + if ((_a = options) === null || _a === void 0 ? void 0 : _a.NX) { + args.push('NX'); + } + else if ((_b = options) === null || _b === void 0 ? void 0 : _b.XX) { + args.push('XX'); + } + if (options === null || options === void 0 ? void 0 : options.CH) { + args.push('CH'); + } + for (const { longitude, latitude, member } of (Array.isArray(toAdd) ? toAdd : [toAdd])) { + args.push(longitude.toString(), latitude.toString(), member); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEODIST.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GEODIST.d.ts new file mode 100644 index 0000000000..aef34c182d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEODIST.d.ts @@ -0,0 +1,5 @@ +import { GeoUnits } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, member1: string, member2: string, unit?: GeoUnits): Array; +export declare function transformReply(reply: string | null): number | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEODIST.js b/node_modules/@node-redis/client/dist/lib/commands/GEODIST.js new file mode 100644 index 0000000000..e9f67d2c6b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEODIST.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, member1, member2, unit) { + const args = ['GEODIST', key, member1, member2]; + if (unit) { + args.push(unit); + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply === null ? null : Number(reply); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOHASH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GEOHASH.d.ts new file mode 100644 index 0000000000..ea3b2d65a6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOHASH.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, member: string | Array): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOHASH.js b/node_modules/@node-redis/client/dist/lib/commands/GEOHASH.js new file mode 100644 index 0000000000..e53d5eacb1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOHASH.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, member) { + return (0, generic_transformers_1.pushVerdictArguments)(['GEOHASH', key], member); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOPOS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GEOPOS.d.ts new file mode 100644 index 0000000000..3cc293f20d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOPOS.d.ts @@ -0,0 +1,10 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, member: string | Array): RedisCommandArguments; +interface GeoCoordinates { + longitude: string; + latitude: string; +} +export declare function transformReply(reply: Array<[string, string] | null>): Array; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOPOS.js b/node_modules/@node-redis/client/dist/lib/commands/GEOPOS.js new file mode 100644 index 0000000000..c1d90e8445 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOPOS.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, member) { + return (0, generic_transformers_1.pushVerdictArguments)(['GEOPOS', key], member); +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply.map(coordinates => coordinates === null ? null : { + longitude: coordinates[0], + latitude: coordinates[1] + }); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH.d.ts new file mode 100644 index 0000000000..8f7892d2d1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH.d.ts @@ -0,0 +1,5 @@ +import { GeoSearchFrom, GeoSearchBy, GeoSearchOptions } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, from: GeoSearchFrom, by: GeoSearchBy, options?: GeoSearchOptions): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH.js b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH.js new file mode 100644 index 0000000000..b2e2acab34 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, from, by, options) { + return (0, generic_transformers_1.pushGeoSearchArguments)(['GEOSEARCH'], key, from, by, options); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCHSTORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCHSTORE.d.ts new file mode 100644 index 0000000000..6ce129f411 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCHSTORE.d.ts @@ -0,0 +1,9 @@ +import { GeoSearchFrom, GeoSearchBy, GeoSearchOptions } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +interface GeoSearchStoreOptions extends GeoSearchOptions { + STOREDIST?: true; +} +export declare function transformArguments(destination: string, source: string, from: GeoSearchFrom, by: GeoSearchBy, options?: GeoSearchStoreOptions): Array; +export declare function transformReply(reply: number): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCHSTORE.js b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCHSTORE.js new file mode 100644 index 0000000000..147139fd72 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCHSTORE.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(destination, source, from, by, options) { + const args = (0, generic_transformers_1.pushGeoSearchArguments)(['GEOSEARCHSTORE', destination], source, from, by, options); + if (options === null || options === void 0 ? void 0 : options.STOREDIST) { + args.push('STOREDIST'); + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + if (typeof reply !== 'number') { + throw new TypeError(`https://github.com/redis/redis/issues/9261`); + } + return reply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH_WITH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH_WITH.d.ts new file mode 100644 index 0000000000..cc414b6357 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH_WITH.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +import { GeoSearchFrom, GeoSearchBy, GeoReplyWith, GeoSearchOptions } from './generic-transformers'; +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './GEOSEARCH'; +export declare function transformArguments(key: string, from: GeoSearchFrom, by: GeoSearchBy, replyWith: Array, options?: GeoSearchOptions): RedisCommandArguments; +export { transformGeoMembersWithReply as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH_WITH.js b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH_WITH.js new file mode 100644 index 0000000000..3fb418fca7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GEOSEARCH_WITH.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const GEOSEARCH_1 = require("./GEOSEARCH"); +var GEOSEARCH_2 = require("./GEOSEARCH"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return GEOSEARCH_2.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return GEOSEARCH_2.IS_READ_ONLY; } }); +function transformArguments(key, from, by, replyWith, options) { + const args = (0, GEOSEARCH_1.transformArguments)(key, from, by, options); + args.push(...replyWith); + args.preserve = replyWith; + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/GET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GET.d.ts new file mode 100644 index 0000000000..3bb076e212 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GET.d.ts @@ -0,0 +1,6 @@ +/// +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string | Buffer): RedisCommandArguments; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GET.js b/node_modules/@node-redis/client/dist/lib/commands/GET.js new file mode 100644 index 0000000000..8bb9de2929 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GET.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['GET', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETBIT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GETBIT.d.ts new file mode 100644 index 0000000000..bec171efc7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETBIT.d.ts @@ -0,0 +1,5 @@ +import { BitValue } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, offset: number): Array; +export declare function transformReply(): BitValue; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETBIT.js b/node_modules/@node-redis/client/dist/lib/commands/GETBIT.js new file mode 100644 index 0000000000..9ad7b33431 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETBIT.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, offset) { + return ['GETBIT', key, offset.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETDEL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GETDEL.d.ts new file mode 100644 index 0000000000..a1e191335c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETDEL.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETDEL.js b/node_modules/@node-redis/client/dist/lib/commands/GETDEL.js new file mode 100644 index 0000000000..cd802180c3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETDEL.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['GETDEL', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETEX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GETEX.d.ts new file mode 100644 index 0000000000..b65dc3a516 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETEX.d.ts @@ -0,0 +1,16 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +declare type GetExModes = { + EX: number; +} | { + PX: number; +} | { + EXAT: number | Date; +} | { + PXAT: number | Date; +} | { + PERSIST: true; +}; +export declare function transformArguments(key: string, mode: GetExModes): RedisCommandArguments; +export declare function transformReply(): string | null; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETEX.js b/node_modules/@node-redis/client/dist/lib/commands/GETEX.js new file mode 100644 index 0000000000..897c824195 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETEX.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, mode) { + const args = ['GETEX', key]; + if ('EX' in mode) { + args.push('EX', mode.EX.toString()); + } + else if ('PX' in mode) { + args.push('PX', mode.PX.toString()); + } + else if ('EXAT' in mode) { + args.push('EXAT', (0, generic_transformers_1.transformEXAT)(mode.EXAT)); + } + else if ('PXAT' in mode) { + args.push('PXAT', (0, generic_transformers_1.transformPXAT)(mode.PXAT)); + } + else { // PERSIST + args.push('PERSIST'); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETRANGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GETRANGE.d.ts new file mode 100644 index 0000000000..f3c89b1cf0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETRANGE.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, start: number, end: number): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETRANGE.js b/node_modules/@node-redis/client/dist/lib/commands/GETRANGE.js new file mode 100644 index 0000000000..32e1527010 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETRANGE.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, start, end) { + return ['GETRANGE', key, start.toString(), end.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETSET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GETSET.d.ts new file mode 100644 index 0000000000..9b1f545400 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETSET.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, value: string): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GETSET.js b/node_modules/@node-redis/client/dist/lib/commands/GETSET.js new file mode 100644 index 0000000000..972d126a76 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GETSET.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, value) { + return ['GETSET', key, value]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GET_BUFFER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/GET_BUFFER.d.ts new file mode 100644 index 0000000000..6c541525f5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GET_BUFFER.d.ts @@ -0,0 +1,4 @@ +/// +export { FIRST_KEY_INDEX, IS_READ_ONLY, transformArguments } from './GET'; +export declare const BUFFER_MODE = true; +export declare function transformReply(): Buffer | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/GET_BUFFER.js b/node_modules/@node-redis/client/dist/lib/commands/GET_BUFFER.js new file mode 100644 index 0000000000..7f720c0e6e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/GET_BUFFER.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BUFFER_MODE = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +var GET_1 = require("./GET"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return GET_1.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return GET_1.IS_READ_ONLY; } }); +Object.defineProperty(exports, "transformArguments", { enumerable: true, get: function () { return GET_1.transformArguments; } }); +exports.BUFFER_MODE = true; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HDEL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HDEL.d.ts new file mode 100644 index 0000000000..4246b8cd74 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HDEL.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, field: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HDEL.js b/node_modules/@node-redis/client/dist/lib/commands/HDEL.js new file mode 100644 index 0000000000..199d9d0105 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HDEL.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, field) { + return (0, generic_transformers_1.pushVerdictArguments)(['HDEL', key], field); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HELLO.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HELLO.d.ts new file mode 100644 index 0000000000..21c1bd177b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HELLO.d.ts @@ -0,0 +1,34 @@ +import { AuthOptions } from './AUTH'; +interface HelloOptions { + protover: number; + auth?: Required; + clientName?: string; +} +export declare function transformArguments(options?: HelloOptions): Array; +declare type HelloRawReply = [ + _: never, + server: string, + _: never, + version: string, + _: never, + proto: number, + _: never, + id: number, + _: never, + mode: string, + _: never, + role: string, + _: never, + modules: Array +]; +interface HelloTransformedReply { + server: string; + version: string; + proto: number; + id: number; + mode: string; + role: string; + modules: Array; +} +export declare function transformReply(reply: HelloRawReply): HelloTransformedReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HELLO.js b/node_modules/@node-redis/client/dist/lib/commands/HELLO.js new file mode 100644 index 0000000000..b16d4edc6e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HELLO.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(options) { + const args = ['HELLO']; + if (options) { + args.push(options.protover.toString()); + if (options.auth) { + args.push('AUTH', options.auth.username, options.auth.password); + } + if (options.clientName) { + args.push('SETNAME', options.clientName); + } + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return { + server: reply[1], + version: reply[3], + proto: reply[5], + id: reply[7], + mode: reply[9], + role: reply[11], + modules: reply[13] + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HEXISTS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HEXISTS.d.ts new file mode 100644 index 0000000000..6824b716c8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HEXISTS.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, field: string): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HEXISTS.js b/node_modules/@node-redis/client/dist/lib/commands/HEXISTS.js new file mode 100644 index 0000000000..7128335e8d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HEXISTS.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, field) { + return ['HEXISTS', key, field]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/HGET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HGET.d.ts new file mode 100644 index 0000000000..d249051392 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HGET.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, field: string): Array; +export declare function transformReply(reply?: string): string | undefined; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HGET.js b/node_modules/@node-redis/client/dist/lib/commands/HGET.js new file mode 100644 index 0000000000..65919aa730 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HGET.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, field) { + return ['HGET', key, field]; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HGETALL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HGETALL.d.ts new file mode 100644 index 0000000000..7de1a53494 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HGETALL.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export { transformReplyTuples as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HGETALL.js b/node_modules/@node-redis/client/dist/lib/commands/HGETALL.js new file mode 100644 index 0000000000..b72ec6a3f7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HGETALL.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['HGETALL', key]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyTuples; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/HINCRBY.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HINCRBY.d.ts new file mode 100644 index 0000000000..c8cd70beca --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HINCRBY.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, field: string, increment: number): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HINCRBY.js b/node_modules/@node-redis/client/dist/lib/commands/HINCRBY.js new file mode 100644 index 0000000000..a47a501b09 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HINCRBY.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, field, increment) { + return ['HINCRBY', key, field, increment.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HINCRBYFLOAT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HINCRBYFLOAT.d.ts new file mode 100644 index 0000000000..c8cd70beca --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HINCRBYFLOAT.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, field: string, increment: number): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HINCRBYFLOAT.js b/node_modules/@node-redis/client/dist/lib/commands/HINCRBYFLOAT.js new file mode 100644 index 0000000000..dca7e8f1b1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HINCRBYFLOAT.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, field, increment) { + return ['HINCRBYFLOAT', key, field, increment.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HKEYS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HKEYS.d.ts new file mode 100644 index 0000000000..ab4a88f694 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HKEYS.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HKEYS.js b/node_modules/@node-redis/client/dist/lib/commands/HKEYS.js new file mode 100644 index 0000000000..e3da594c1a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HKEYS.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['HKEYS', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HLEN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HLEN.d.ts new file mode 100644 index 0000000000..c1eb7365ad --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HLEN.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HLEN.js b/node_modules/@node-redis/client/dist/lib/commands/HLEN.js new file mode 100644 index 0000000000..76687ff005 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HLEN.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['HLEN', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HMGET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HMGET.d.ts new file mode 100644 index 0000000000..390c2a55b5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HMGET.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, fields: string | Array): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HMGET.js b/node_modules/@node-redis/client/dist/lib/commands/HMGET.js new file mode 100644 index 0000000000..211654343e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HMGET.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, fields) { + return (0, generic_transformers_1.pushVerdictArguments)(['HMGET', key], fields); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD.d.ts new file mode 100644 index 0000000000..a1e191335c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD.js b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD.js new file mode 100644 index 0000000000..1d848506b2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['HRANDFIELD', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT.d.ts new file mode 100644 index 0000000000..dde912a4e6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT.d.ts @@ -0,0 +1,3 @@ +export { FIRST_KEY_INDEX } from './HRANDFIELD'; +export declare function transformArguments(key: string, count: number): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT.js b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT.js new file mode 100644 index 0000000000..b4b92d8ba3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const HRANDFIELD_1 = require("./HRANDFIELD"); +var HRANDFIELD_2 = require("./HRANDFIELD"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return HRANDFIELD_2.FIRST_KEY_INDEX; } }); +function transformArguments(key, count) { + return [ + ...(0, HRANDFIELD_1.transformArguments)(key), + count.toString() + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.d.ts new file mode 100644 index 0000000000..bf25ce2e18 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.d.ts @@ -0,0 +1,3 @@ +export { FIRST_KEY_INDEX } from './HRANDFIELD_COUNT'; +export declare function transformArguments(key: string, count: number): Array; +export { transformReplyTuples as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.js b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.js new file mode 100644 index 0000000000..6e6558a6cc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const HRANDFIELD_COUNT_1 = require("./HRANDFIELD_COUNT"); +var HRANDFIELD_COUNT_2 = require("./HRANDFIELD_COUNT"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return HRANDFIELD_COUNT_2.FIRST_KEY_INDEX; } }); +function transformArguments(key, count) { + return [ + ...(0, HRANDFIELD_COUNT_1.transformArguments)(key, count), + 'WITHVALUES' + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyTuples; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/HSCAN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HSCAN.d.ts new file mode 100644 index 0000000000..6fda77af0d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HSCAN.d.ts @@ -0,0 +1,14 @@ +import { ScanOptions } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, cursor: number, options?: ScanOptions): Array; +export interface HScanTuple { + field: string; + value: string; +} +interface HScanReply { + cursor: number; + tuples: Array; +} +export declare function transformReply([cursor, rawTuples]: [string, Array]): HScanReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HSCAN.js b/node_modules/@node-redis/client/dist/lib/commands/HSCAN.js new file mode 100644 index 0000000000..5930408b9a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HSCAN.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, cursor, options) { + return (0, generic_transformers_1.pushScanArguments)([ + 'HSCAN', + key + ], cursor, options); +} +exports.transformArguments = transformArguments; +function transformReply([cursor, rawTuples]) { + const parsedTuples = []; + for (let i = 0; i < rawTuples.length; i += 2) { + parsedTuples.push({ + field: rawTuples[i], + value: rawTuples[i + 1] + }); + } + return { + cursor: Number(cursor), + tuples: parsedTuples + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HSET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HSET.d.ts new file mode 100644 index 0000000000..4974791a15 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HSET.d.ts @@ -0,0 +1,11 @@ +import { RedisCommandArguments } from '.'; +declare type HSETObject = Record; +declare type HSETMap = Map; +declare type HSETTuples = Array<[string, string]> | Array; +export declare const FIRST_KEY_INDEX = 1; +declare type GenericArguments = [key: string]; +declare type SingleFieldArguments = [...generic: GenericArguments, field: string, value: string]; +declare type MultipleFieldsArguments = [...generic: GenericArguments, value: HSETObject | HSETMap | HSETTuples]; +export declare function transformArguments(...[key, value, fieldValue]: SingleFieldArguments | MultipleFieldsArguments): RedisCommandArguments; +export declare function transformReply(): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HSET.js b/node_modules/@node-redis/client/dist/lib/commands/HSET.js new file mode 100644 index 0000000000..bf32a684a1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HSET.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(...[key, value, fieldValue]) { + const args = ['HSET', key]; + if (typeof value === 'string') { + args.push(value, fieldValue); + } + else if (value instanceof Map) { + pushMap(args, value); + } + else if (Array.isArray(value)) { + pushTuples(args, value); + } + else { + pushObject(args, value); + } + return args; +} +exports.transformArguments = transformArguments; +function pushMap(args, map) { + for (const [key, value] of map.entries()) { + args.push(key.toString(), value.toString()); + } +} +function pushTuples(args, tuples) { + args.push(...tuples.flat()); +} +function pushObject(args, object) { + for (const key of Object.keys(object)) { + args.push(key.toString(), object[key].toString()); + } +} diff --git a/node_modules/@node-redis/client/dist/lib/commands/HSETNX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HSETNX.d.ts new file mode 100644 index 0000000000..f7f1cae227 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HSETNX.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, field: string, value: string): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HSETNX.js b/node_modules/@node-redis/client/dist/lib/commands/HSETNX.js new file mode 100644 index 0000000000..76ca58d8d3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HSETNX.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, field, value) { + return ['HSETNX', key, field, value]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/HSTRLEN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HSTRLEN.d.ts new file mode 100644 index 0000000000..457a712ffa --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HSTRLEN.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, field: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HSTRLEN.js b/node_modules/@node-redis/client/dist/lib/commands/HSTRLEN.js new file mode 100644 index 0000000000..307213bbf9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HSTRLEN.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, field) { + return ['HSTRLEN', key, field]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HVALS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/HVALS.d.ts new file mode 100644 index 0000000000..ab4a88f694 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HVALS.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/HVALS.js b/node_modules/@node-redis/client/dist/lib/commands/HVALS.js new file mode 100644 index 0000000000..f279fa169a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/HVALS.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['HVALS', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/INCR.d.ts b/node_modules/@node-redis/client/dist/lib/commands/INCR.d.ts new file mode 100644 index 0000000000..c1eb7365ad --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/INCR.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/INCR.js b/node_modules/@node-redis/client/dist/lib/commands/INCR.js new file mode 100644 index 0000000000..1364aacbc1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/INCR.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['INCR', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/INCRBY.d.ts b/node_modules/@node-redis/client/dist/lib/commands/INCRBY.d.ts new file mode 100644 index 0000000000..e81410d74b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/INCRBY.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, increment: number): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/INCRBY.js b/node_modules/@node-redis/client/dist/lib/commands/INCRBY.js new file mode 100644 index 0000000000..4ecbab293e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/INCRBY.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, increment) { + return ['INCRBY', key, increment.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/INCRBYFLOAT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/INCRBYFLOAT.d.ts new file mode 100644 index 0000000000..cec54049c2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/INCRBYFLOAT.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, increment: number): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/INCRBYFLOAT.js b/node_modules/@node-redis/client/dist/lib/commands/INCRBYFLOAT.js new file mode 100644 index 0000000000..33d6bb2491 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/INCRBYFLOAT.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, increment) { + return ['INCRBYFLOAT', key, increment.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/INFO.d.ts b/node_modules/@node-redis/client/dist/lib/commands/INFO.d.ts new file mode 100644 index 0000000000..8bec82bee4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/INFO.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(section?: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/INFO.js b/node_modules/@node-redis/client/dist/lib/commands/INFO.js new file mode 100644 index 0000000000..0711467a25 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/INFO.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(section) { + const args = ['INFO']; + if (section) { + args.push(section); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/KEYS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/KEYS.d.ts new file mode 100644 index 0000000000..049404c9b7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/KEYS.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(pattern: string): Array; +export declare function transformReply(keys: Array): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/KEYS.js b/node_modules/@node-redis/client/dist/lib/commands/KEYS.js new file mode 100644 index 0000000000..6dc9f6fcb7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/KEYS.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(pattern) { + return ['KEYS', pattern]; +} +exports.transformArguments = transformArguments; +function transformReply(keys) { + return keys; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LASTSAVE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LASTSAVE.d.ts new file mode 100644 index 0000000000..6da05a0609 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LASTSAVE.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(): Array; +export declare function transformReply(reply: number): Date; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LASTSAVE.js b/node_modules/@node-redis/client/dist/lib/commands/LASTSAVE.js new file mode 100644 index 0000000000..c22924f3c0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LASTSAVE.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments() { + return ['LASTSAVE']; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return new Date(reply); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LINDEX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LINDEX.d.ts new file mode 100644 index 0000000000..ebd27591c2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LINDEX.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, index: number): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LINDEX.js b/node_modules/@node-redis/client/dist/lib/commands/LINDEX.js new file mode 100644 index 0000000000..052f24a8dc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LINDEX.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(key, index) { + return ['LINDEX', key, index.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LINSERT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LINSERT.d.ts new file mode 100644 index 0000000000..321dcf5a5c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LINSERT.d.ts @@ -0,0 +1,5 @@ +export declare const FIRST_KEY_INDEX = 1; +declare type LInsertPosition = 'BEFORE' | 'AFTER'; +export declare function transformArguments(key: string, position: LInsertPosition, pivot: string, element: string): Array; +export declare function transformReply(): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LINSERT.js b/node_modules/@node-redis/client/dist/lib/commands/LINSERT.js new file mode 100644 index 0000000000..2e5b5239c4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LINSERT.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, position, pivot, element) { + return [ + 'LINSERT', + key, + position, + pivot, + element + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LLEN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LLEN.d.ts new file mode 100644 index 0000000000..7b54a1ff63 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LLEN.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LLEN.js b/node_modules/@node-redis/client/dist/lib/commands/LLEN.js new file mode 100644 index 0000000000..2c9658444e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LLEN.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['LLEN', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LMOVE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LMOVE.d.ts new file mode 100644 index 0000000000..7df6872848 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LMOVE.d.ts @@ -0,0 +1,4 @@ +export declare type LMoveSide = 'LEFT' | 'RIGHT'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(source: string, destination: string, sourceSide: LMoveSide, destinationSide: LMoveSide): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LMOVE.js b/node_modules/@node-redis/client/dist/lib/commands/LMOVE.js new file mode 100644 index 0000000000..3d44d912b1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LMOVE.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(source, destination, sourceSide, destinationSide) { + return [ + 'LMOVE', + source, + destination, + sourceSide, + destinationSide, + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LOLWUT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LOLWUT.d.ts new file mode 100644 index 0000000000..85b93bafd6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LOLWUT.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(version?: number, ...optionalArguments: Array): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LOLWUT.js b/node_modules/@node-redis/client/dist/lib/commands/LOLWUT.js new file mode 100644 index 0000000000..20d6b617cc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LOLWUT.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(version, ...optionalArguments) { + const args = ['LOLWUT']; + if (version) { + args.push('VERSION', version.toString(), ...optionalArguments.map(String)); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPOP.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LPOP.d.ts new file mode 100644 index 0000000000..a1e191335c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPOP.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPOP.js b/node_modules/@node-redis/client/dist/lib/commands/LPOP.js new file mode 100644 index 0000000000..84c99a4d7f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPOP.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['LPOP', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPOP_COUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LPOP_COUNT.d.ts new file mode 100644 index 0000000000..1745483371 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPOP_COUNT.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, count: number): Array; +export declare function transformReply(): Array | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPOP_COUNT.js b/node_modules/@node-redis/client/dist/lib/commands/LPOP_COUNT.js new file mode 100644 index 0000000000..c865e8edeb --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPOP_COUNT.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, count) { + return ['LPOP', key, count.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPOS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LPOS.d.ts new file mode 100644 index 0000000000..b19ca3c463 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPOS.d.ts @@ -0,0 +1,8 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export interface LPosOptions { + RANK?: number; + MAXLEN?: number; +} +export declare function transformArguments(key: string, element: string, options?: LPosOptions): Array; +export declare function transformReply(): number | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPOS.js b/node_modules/@node-redis/client/dist/lib/commands/LPOS.js new file mode 100644 index 0000000000..5e738a998d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPOS.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, element, options) { + const args = ['LPOS', key, element]; + if (typeof (options === null || options === void 0 ? void 0 : options.RANK) === 'number') { + args.push('RANK', options.RANK.toString()); + } + if (typeof (options === null || options === void 0 ? void 0 : options.MAXLEN) === 'number') { + args.push('MAXLEN', options.MAXLEN.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPOS_COUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LPOS_COUNT.d.ts new file mode 100644 index 0000000000..8def18f576 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPOS_COUNT.d.ts @@ -0,0 +1,4 @@ +import { LPosOptions } from './LPOS'; +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './LPOS'; +export declare function transformArguments(key: string, element: string, count: number, options?: LPosOptions): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPOS_COUNT.js b/node_modules/@node-redis/client/dist/lib/commands/LPOS_COUNT.js new file mode 100644 index 0000000000..e01fb52373 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPOS_COUNT.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +var LPOS_1 = require("./LPOS"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return LPOS_1.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return LPOS_1.IS_READ_ONLY; } }); +function transformArguments(key, element, count, options) { + const args = ['LPOS', key, element]; + if (typeof (options === null || options === void 0 ? void 0 : options.RANK) === 'number') { + args.push('RANK', options.RANK.toString()); + } + args.push('COUNT', count.toString()); + if (typeof (options === null || options === void 0 ? void 0 : options.MAXLEN) === 'number') { + args.push('MAXLEN', options.MAXLEN.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPUSH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LPUSH.d.ts new file mode 100644 index 0000000000..230c5757dc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPUSH.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, elements: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPUSH.js b/node_modules/@node-redis/client/dist/lib/commands/LPUSH.js new file mode 100644 index 0000000000..1de810899e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPUSH.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, elements) { + return (0, generic_transformers_1.pushVerdictArguments)(['LPUSH', key], elements); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPUSHX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LPUSHX.d.ts new file mode 100644 index 0000000000..0064602554 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPUSHX.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, element: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LPUSHX.js b/node_modules/@node-redis/client/dist/lib/commands/LPUSHX.js new file mode 100644 index 0000000000..8a45107e1d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LPUSHX.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, element) { + return (0, generic_transformers_1.pushVerdictArguments)(['LPUSHX', key], element); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LRANGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LRANGE.d.ts new file mode 100644 index 0000000000..81fcbf2a5c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LRANGE.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, start: number, stop: number): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LRANGE.js b/node_modules/@node-redis/client/dist/lib/commands/LRANGE.js new file mode 100644 index 0000000000..fc6127c88f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LRANGE.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, start, stop) { + return [ + 'LRANGE', + key, + start.toString(), + stop.toString() + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LREM.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LREM.d.ts new file mode 100644 index 0000000000..bfdc14589c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LREM.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, count: number, element: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LREM.js b/node_modules/@node-redis/client/dist/lib/commands/LREM.js new file mode 100644 index 0000000000..b1a7257989 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LREM.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, count, element) { + return [ + 'LREM', + key, + count.toString(), + element + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LSET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LSET.d.ts new file mode 100644 index 0000000000..be160fea00 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LSET.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, index: number, element: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LSET.js b/node_modules/@node-redis/client/dist/lib/commands/LSET.js new file mode 100644 index 0000000000..132494b594 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LSET.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, index, element) { + return [ + 'LSET', + key, + index.toString(), + element + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LTRIM.d.ts b/node_modules/@node-redis/client/dist/lib/commands/LTRIM.d.ts new file mode 100644 index 0000000000..0fb97d4458 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LTRIM.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, start: number, stop: number): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/LTRIM.js b/node_modules/@node-redis/client/dist/lib/commands/LTRIM.js new file mode 100644 index 0000000000..8c3e9eec13 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/LTRIM.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, start, stop) { + return [ + 'LTRIM', + key, + start.toString(), + stop.toString() + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_DOCTOR.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_DOCTOR.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_DOCTOR.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_DOCTOR.js b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_DOCTOR.js new file mode 100644 index 0000000000..7efd2ea416 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_DOCTOR.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['MEMORY', 'DOCTOR']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.js b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.js new file mode 100644 index 0000000000..e314ba232e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['MEMORY', 'MALLOC-STATS']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_PURGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_PURGE.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_PURGE.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_PURGE.js b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_PURGE.js new file mode 100644 index 0000000000..c24f1c5660 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_PURGE.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['MEMORY', 'PURGE']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_STATS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_STATS.d.ts new file mode 100644 index 0000000000..cfaab6eeff --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_STATS.d.ts @@ -0,0 +1,36 @@ +export declare function transformArguments(): Array; +interface MemoryStatsReply { + peakAllocated: number; + totalAllocated: number; + startupAllocated: number; + replicationBacklog: number; + clientsReplicas: number; + clientsNormal: number; + aofBuffer: number; + luaCaches: number; + overheadTotal: number; + keysCount: number; + keysBytesPerKey: number; + datasetBytes: number; + datasetPercentage: number; + peakPercentage: number; + allocatorAllocated?: number; + allocatorActive?: number; + allocatorResident?: number; + allocatorFragmentationRatio?: number; + allocatorFragmentationBytes?: number; + allocatorRssRatio?: number; + allocatorRssBytes?: number; + rssOverheadRatio?: number; + rssOverheadBytes?: number; + fragmentation?: number; + fragmentationBytes: number; + db: { + [key: number]: { + overheadHashtableMain: number; + overheadHashtableExpires: number; + }; + }; +} +export declare function transformReply(rawReply: Array>): MemoryStatsReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_STATS.js b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_STATS.js new file mode 100644 index 0000000000..eea30bbfc2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_STATS.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments() { + return ['MEMORY', 'STATS']; +} +exports.transformArguments = transformArguments; +const FIELDS_MAPPING = { + 'peak.allocated': 'peakAllocated', + 'total.allocated': 'totalAllocated', + 'startup.allocated': 'startupAllocated', + 'replication.backlog': 'replicationBacklog', + 'clients.slaves': 'clientsReplicas', + 'clients.normal': 'clientsNormal', + 'aof.buffer': 'aofBuffer', + 'lua.caches': 'luaCaches', + 'overhead.total': 'overheadTotal', + 'keys.count': 'keysCount', + 'keys.bytes-per-key': 'keysBytesPerKey', + 'dataset.bytes': 'datasetBytes', + 'dataset.percentage': 'datasetPercentage', + 'peak.percentage': 'peakPercentage', + 'allocator.allocated': 'allocatorAllocated', + 'allocator.active': 'allocatorActive', + 'allocator.resident': 'allocatorResident', + 'allocator-fragmentation.ratio': 'allocatorFragmentationRatio', + 'allocator-fragmentation.bytes': 'allocatorFragmentationBytes', + 'allocator-rss.ratio': 'allocatorRssRatio', + 'allocator-rss.bytes': 'allocatorRssBytes', + 'rss-overhead.ratio': 'rssOverheadRatio', + 'rss-overhead.bytes': 'rssOverheadBytes', + 'fragmentation': 'fragmentation', + 'fragmentation.bytes': 'fragmentationBytes' +}, DB_FIELDS_MAPPING = { + 'overhead.hashtable.main': 'overheadHashtableMain', + 'overhead.hashtable.expires': 'overheadHashtableExpires' +}; +function transformReply(rawReply) { + const reply = { + db: {} + }; + for (let i = 0; i < rawReply.length; i += 2) { + const key = rawReply[i]; + if (key.startsWith('db.')) { + const dbTuples = rawReply[i + 1], db = {}; + for (let j = 0; j < dbTuples.length; j += 2) { + db[DB_FIELDS_MAPPING[dbTuples[j]]] = dbTuples[j + 1]; + } + reply.db[key.substring(3)] = db; + continue; + } + reply[FIELDS_MAPPING[key]] = Number(rawReply[i + 1]); + } + return reply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_USAGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_USAGE.d.ts new file mode 100644 index 0000000000..274788ab26 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_USAGE.d.ts @@ -0,0 +1,8 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +interface MemoryUsageOptions { + SAMPLES?: number; +} +export declare function transformArguments(key: string, options?: MemoryUsageOptions): Array; +export declare function transformReply(): number | null; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MEMORY_USAGE.js b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_USAGE.js new file mode 100644 index 0000000000..529089c17a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MEMORY_USAGE.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, options) { + const args = ['MEMORY', 'USAGE', key]; + if (options === null || options === void 0 ? void 0 : options.SAMPLES) { + args.push('SAMPLES', options.SAMPLES.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MGET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MGET.d.ts new file mode 100644 index 0000000000..d420c4762c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MGET.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(keys: Array): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MGET.js b/node_modules/@node-redis/client/dist/lib/commands/MGET.js new file mode 100644 index 0000000000..4ef34d8c7f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MGET.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(keys) { + return ['MGET', ...keys]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MIGRATE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MIGRATE.d.ts new file mode 100644 index 0000000000..24954821a0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MIGRATE.d.ts @@ -0,0 +1,9 @@ +import { AuthOptions } from './AUTH'; +interface MigrateOptions { + COPY?: true; + REPLACE?: true; + AUTH?: AuthOptions; +} +export declare function transformArguments(host: string, port: number, key: string | Array, destinationDb: number, timeout: number, options?: MigrateOptions): Array; +export declare function transformReply(): string; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MIGRATE.js b/node_modules/@node-redis/client/dist/lib/commands/MIGRATE.js new file mode 100644 index 0000000000..9c222d451b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MIGRATE.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(host, port, key, destinationDb, timeout, options) { + const args = ['MIGRATE', host, port.toString()], isKeyString = typeof key === 'string'; + if (isKeyString) { + args.push(key); + } + else { + args.push('""'); + } + args.push(destinationDb.toString(), timeout.toString()); + if (options === null || options === void 0 ? void 0 : options.COPY) { + args.push('COPY'); + } + if (options === null || options === void 0 ? void 0 : options.REPLACE) { + args.push('REPLACE'); + } + if (options === null || options === void 0 ? void 0 : options.AUTH) { + if (options.AUTH.username) { + args.push('AUTH2', options.AUTH.username, options.AUTH.password); + } + else { + args.push('AUTH', options.AUTH.password); + } + } + if (!isKeyString) { + args.push('KEYS', ...key); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MODULE_LIST.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MODULE_LIST.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MODULE_LIST.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MODULE_LIST.js b/node_modules/@node-redis/client/dist/lib/commands/MODULE_LIST.js new file mode 100644 index 0000000000..4fe8c5b3ef --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MODULE_LIST.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['MODULE', 'LIST']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MODULE_LOAD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MODULE_LOAD.d.ts new file mode 100644 index 0000000000..f25f6085bc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MODULE_LOAD.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(path: string, moduleArgs?: Array): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MODULE_LOAD.js b/node_modules/@node-redis/client/dist/lib/commands/MODULE_LOAD.js new file mode 100644 index 0000000000..34aeb4b35b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MODULE_LOAD.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(path, moduleArgs) { + const args = ['MODULE', 'LOAD', path]; + if (moduleArgs) { + args.push(...moduleArgs); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MODULE_UNLOAD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MODULE_UNLOAD.d.ts new file mode 100644 index 0000000000..ab218f9378 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MODULE_UNLOAD.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(name: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MODULE_UNLOAD.js b/node_modules/@node-redis/client/dist/lib/commands/MODULE_UNLOAD.js new file mode 100644 index 0000000000..dbc9ac723f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MODULE_UNLOAD.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(name) { + return ['MODULE', 'UNLOAD', name]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MOVE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MOVE.d.ts new file mode 100644 index 0000000000..60b8f4431b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MOVE.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(key: string, db: number): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MOVE.js b/node_modules/@node-redis/client/dist/lib/commands/MOVE.js new file mode 100644 index 0000000000..b6123977f9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MOVE.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(key, db) { + return ['MOVE', key, db.toString()]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/MSET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MSET.d.ts new file mode 100644 index 0000000000..4ea556f7eb --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MSET.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(toSet: Array<[string, string]> | Array | Record): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MSET.js b/node_modules/@node-redis/client/dist/lib/commands/MSET.js new file mode 100644 index 0000000000..76623119a9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MSET.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(toSet) { + const args = ['MSET']; + if (Array.isArray(toSet)) { + args.push(...toSet.flat()); + } + else { + for (const key of Object.keys(toSet)) { + args.push(key, toSet[key]); + } + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MSETNX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/MSETNX.d.ts new file mode 100644 index 0000000000..ef2e8bcd34 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MSETNX.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(toSet: Array<[string, string]> | Array | Record): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/MSETNX.js b/node_modules/@node-redis/client/dist/lib/commands/MSETNX.js new file mode 100644 index 0000000000..00a69198ce --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/MSETNX.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(toSet) { + const args = ['MSETNX']; + if (Array.isArray(toSet)) { + args.push(...toSet.flat()); + } + else { + for (const key of Object.keys(toSet)) { + args.push(key, toSet[key]); + } + } + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/PERSIST.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PERSIST.d.ts new file mode 100644 index 0000000000..e02293f935 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PERSIST.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PERSIST.js b/node_modules/@node-redis/client/dist/lib/commands/PERSIST.js new file mode 100644 index 0000000000..7c6ecb2143 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PERSIST.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['PERSIST', key]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/PEXPIRE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PEXPIRE.d.ts new file mode 100644 index 0000000000..d88899dc7b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PEXPIRE.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, milliseconds: number): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PEXPIRE.js b/node_modules/@node-redis/client/dist/lib/commands/PEXPIRE.js new file mode 100644 index 0000000000..67ef23deb4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PEXPIRE.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, milliseconds) { + return ['PEXPIRE', key, milliseconds.toString()]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/PEXPIREAT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PEXPIREAT.d.ts new file mode 100644 index 0000000000..3de75a03f3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PEXPIREAT.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, millisecondsTimestamp: number | Date): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PEXPIREAT.js b/node_modules/@node-redis/client/dist/lib/commands/PEXPIREAT.js new file mode 100644 index 0000000000..2dbdfe9f3d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PEXPIREAT.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, millisecondsTimestamp) { + return [ + 'PEXPIREAT', + key, + (0, generic_transformers_1.transformPXAT)(millisecondsTimestamp) + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_2 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/PFADD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PFADD.d.ts new file mode 100644 index 0000000000..64ce150794 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PFADD.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, element: string | Array): RedisCommandArguments; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PFADD.js b/node_modules/@node-redis/client/dist/lib/commands/PFADD.js new file mode 100644 index 0000000000..498a33e446 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PFADD.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, element) { + return (0, generic_transformers_1.pushVerdictArguments)(['PFADD', key], element); +} +exports.transformArguments = transformArguments; +var generic_transformers_2 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/PFCOUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PFCOUNT.d.ts new file mode 100644 index 0000000000..0b9b3c9698 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PFCOUNT.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PFCOUNT.js b/node_modules/@node-redis/client/dist/lib/commands/PFCOUNT.js new file mode 100644 index 0000000000..3a7a1da758 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PFCOUNT.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return (0, generic_transformers_1.pushVerdictArguments)(['PFCOUNT'], key); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PFMERGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PFMERGE.d.ts new file mode 100644 index 0000000000..d406d1691d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PFMERGE.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(destination: string, source: string | Array): RedisCommandArguments; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PFMERGE.js b/node_modules/@node-redis/client/dist/lib/commands/PFMERGE.js new file mode 100644 index 0000000000..48305f9f0e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PFMERGE.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(destination, source) { + return (0, generic_transformers_1.pushVerdictArguments)(['PFMERGE', destination], source); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PING.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PING.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PING.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PING.js b/node_modules/@node-redis/client/dist/lib/commands/PING.js new file mode 100644 index 0000000000..faab66adf2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PING.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['PING']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PSETEX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PSETEX.d.ts new file mode 100644 index 0000000000..e7ebb370fe --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PSETEX.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, milliseconds: number, value: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PSETEX.js b/node_modules/@node-redis/client/dist/lib/commands/PSETEX.js new file mode 100644 index 0000000000..c3e7b8d40f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PSETEX.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, milliseconds, value) { + return [ + 'PSETEX', + key, + milliseconds.toString(), + value + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PTTL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PTTL.d.ts new file mode 100644 index 0000000000..7b54a1ff63 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PTTL.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PTTL.js b/node_modules/@node-redis/client/dist/lib/commands/PTTL.js new file mode 100644 index 0000000000..c7e9cfced7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PTTL.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['PTTL', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PUBLISH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PUBLISH.d.ts new file mode 100644 index 0000000000..ee87440e17 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PUBLISH.d.ts @@ -0,0 +1,4 @@ +/// +import { RedisCommandArguments } from '.'; +export declare function transformArguments(channel: string | Buffer, message: string | Buffer): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PUBLISH.js b/node_modules/@node-redis/client/dist/lib/commands/PUBLISH.js new file mode 100644 index 0000000000..82e9c27004 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PUBLISH.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(channel, message) { + return ['PUBLISH', channel, message]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_CHANNELS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_CHANNELS.d.ts new file mode 100644 index 0000000000..e892c7b7c6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_CHANNELS.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(pattern?: string): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_CHANNELS.js b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_CHANNELS.js new file mode 100644 index 0000000000..f717e98ba0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_CHANNELS.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(pattern) { + const args = ['PUBSUB', 'CHANNELS']; + if (pattern) { + args.push(pattern); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMPAT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMPAT.d.ts new file mode 100644 index 0000000000..c3c75ec6e6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMPAT.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMPAT.js b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMPAT.js new file mode 100644 index 0000000000..81102b28d3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMPAT.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments() { + return ['PUBSUB', 'NUMPAT']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMSUB.d.ts b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMSUB.d.ts new file mode 100644 index 0000000000..62c134f2ef --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMSUB.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(channels?: Array | string): Array; +export declare function transformReply(rawReply: Array): Record; diff --git a/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMSUB.js b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMSUB.js new file mode 100644 index 0000000000..c0593d6465 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/PUBSUB_NUMSUB.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.IS_READ_ONLY = true; +function transformArguments(channels) { + const args = ['PUBSUB', 'NUMSUB']; + if (channels) { + (0, generic_transformers_1.pushVerdictArguments)(args, channels); + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply(rawReply) { + const transformedReply = Object.create(null); + for (let i = 0; i < rawReply.length; i += 2) { + transformedReply[rawReply[i]] = rawReply[i + 1]; + } + return transformedReply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RANDOMKEY.d.ts b/node_modules/@node-redis/client/dist/lib/commands/RANDOMKEY.d.ts new file mode 100644 index 0000000000..dd7b11ed81 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RANDOMKEY.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(): Array; +export declare function transformReply(reply: string | null): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RANDOMKEY.js b/node_modules/@node-redis/client/dist/lib/commands/RANDOMKEY.js new file mode 100644 index 0000000000..18c9ee9f18 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RANDOMKEY.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments() { + return ['RANDOMKEY']; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/READONLY.d.ts b/node_modules/@node-redis/client/dist/lib/commands/READONLY.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/READONLY.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/READONLY.js b/node_modules/@node-redis/client/dist/lib/commands/READONLY.js new file mode 100644 index 0000000000..1615646344 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/READONLY.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['READONLY']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/READWRITE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/READWRITE.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/READWRITE.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/READWRITE.js b/node_modules/@node-redis/client/dist/lib/commands/READWRITE.js new file mode 100644 index 0000000000..10a4f88f2d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/READWRITE.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['READWRITE']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RENAME.d.ts b/node_modules/@node-redis/client/dist/lib/commands/RENAME.d.ts new file mode 100644 index 0000000000..65d836f3d9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RENAME.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, newKey: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RENAME.js b/node_modules/@node-redis/client/dist/lib/commands/RENAME.js new file mode 100644 index 0000000000..5148f7a07d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RENAME.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, newKey) { + return ['RENAME', key, newKey]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RENAMENX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/RENAMENX.d.ts new file mode 100644 index 0000000000..afcc2eea59 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RENAMENX.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, newKey: string): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RENAMENX.js b/node_modules/@node-redis/client/dist/lib/commands/RENAMENX.js new file mode 100644 index 0000000000..972ea72f45 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RENAMENX.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, newKey) { + return ['RENAMENX', key, newKey]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/REPLICAOF.d.ts b/node_modules/@node-redis/client/dist/lib/commands/REPLICAOF.d.ts new file mode 100644 index 0000000000..b40e18cfe6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/REPLICAOF.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(host: string, port: number): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/REPLICAOF.js b/node_modules/@node-redis/client/dist/lib/commands/REPLICAOF.js new file mode 100644 index 0000000000..1194dbfb8b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/REPLICAOF.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(host, port) { + return ['REPLICAOF', host, port.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RESTORE-ASKING.d.ts b/node_modules/@node-redis/client/dist/lib/commands/RESTORE-ASKING.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RESTORE-ASKING.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RESTORE-ASKING.js b/node_modules/@node-redis/client/dist/lib/commands/RESTORE-ASKING.js new file mode 100644 index 0000000000..6c636b8ae4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RESTORE-ASKING.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['RESTORE-ASKING']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ROLE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ROLE.d.ts new file mode 100644 index 0000000000..62e8dd2b3d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ROLE.d.ts @@ -0,0 +1,32 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(): Array; +interface RoleReplyInterface { + role: T; +} +declare type RoleMasterRawReply = ['master', number, Array<[string, string, string]>]; +interface RoleMasterReply extends RoleReplyInterface<'master'> { + replicationOffest: number; + replicas: Array<{ + ip: string; + port: number; + replicationOffest: number; + }>; +} +declare type RoleReplicaState = 'connect' | 'connecting' | 'sync' | 'connected'; +declare type RoleReplicaRawReply = ['slave', string, number, RoleReplicaState, number]; +interface RoleReplicaReply extends RoleReplyInterface<'slave'> { + master: { + ip: string; + port: number; + }; + state: RoleReplicaState; + dataReceived: number; +} +declare type RoleSentinelRawReply = ['sentinel', Array]; +interface RoleSentinelReply extends RoleReplyInterface<'sentinel'> { + masterNames: Array; +} +declare type RoleRawReply = RoleMasterRawReply | RoleReplicaRawReply | RoleSentinelRawReply; +declare type RoleReply = RoleMasterReply | RoleReplicaReply | RoleSentinelReply; +export declare function transformReply(reply: RoleRawReply): RoleReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ROLE.js b/node_modules/@node-redis/client/dist/lib/commands/ROLE.js new file mode 100644 index 0000000000..30ede94b3c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ROLE.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments() { + return ['ROLE']; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + switch (reply[0]) { + case 'master': + return { + role: 'master', + replicationOffest: reply[1], + replicas: reply[2].map(([ip, port, replicationOffest]) => ({ + ip, + port: Number(port), + replicationOffest: Number(replicationOffest) + })) + }; + case 'slave': + return { + role: 'slave', + master: { + ip: reply[1], + port: reply[2] + }, + state: reply[3], + dataReceived: reply[4] + }; + case 'sentinel': + return { + role: 'sentinel', + masterNames: reply[1] + }; + } +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPOP.d.ts b/node_modules/@node-redis/client/dist/lib/commands/RPOP.d.ts new file mode 100644 index 0000000000..a1e191335c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPOP.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPOP.js b/node_modules/@node-redis/client/dist/lib/commands/RPOP.js new file mode 100644 index 0000000000..b5c95433f5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPOP.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['RPOP', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPOPLPUSH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/RPOPLPUSH.d.ts new file mode 100644 index 0000000000..42e0b49725 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPOPLPUSH.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(source: string, destination: string): Array; +export declare function transformReply(): number | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPOPLPUSH.js b/node_modules/@node-redis/client/dist/lib/commands/RPOPLPUSH.js new file mode 100644 index 0000000000..d314c3dd8d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPOPLPUSH.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(source, destination) { + return ['RPOPLPUSH', source, destination]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPOP_COUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/RPOP_COUNT.d.ts new file mode 100644 index 0000000000..1745483371 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPOP_COUNT.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, count: number): Array; +export declare function transformReply(): Array | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPOP_COUNT.js b/node_modules/@node-redis/client/dist/lib/commands/RPOP_COUNT.js new file mode 100644 index 0000000000..baf43bdd4c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPOP_COUNT.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, count) { + return ['RPOP', key, count.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPUSH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/RPUSH.d.ts new file mode 100644 index 0000000000..0064602554 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPUSH.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, element: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPUSH.js b/node_modules/@node-redis/client/dist/lib/commands/RPUSH.js new file mode 100644 index 0000000000..58b9de5ad8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPUSH.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, element) { + return (0, generic_transformers_1.pushVerdictArguments)(['RPUSH', key], element); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPUSHX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/RPUSHX.d.ts new file mode 100644 index 0000000000..0064602554 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPUSHX.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, element: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/RPUSHX.js b/node_modules/@node-redis/client/dist/lib/commands/RPUSHX.js new file mode 100644 index 0000000000..1eec61d584 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/RPUSHX.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, element) { + return (0, generic_transformers_1.pushVerdictArguments)(['RPUSHX', key], element); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SADD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SADD.d.ts new file mode 100644 index 0000000000..f11321ce02 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SADD.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, members: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SADD.js b/node_modules/@node-redis/client/dist/lib/commands/SADD.js new file mode 100644 index 0000000000..f4b2072060 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SADD.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, members) { + return (0, generic_transformers_1.pushVerdictArguments)(['SADD', key], members); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SAVE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SAVE.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SAVE.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SAVE.js b/node_modules/@node-redis/client/dist/lib/commands/SAVE.js new file mode 100644 index 0000000000..051bb9ce5f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SAVE.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['SAVE']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCAN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SCAN.d.ts new file mode 100644 index 0000000000..6ac95dbd76 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCAN.d.ts @@ -0,0 +1,11 @@ +import { ScanOptions } from './generic-transformers'; +export declare const IS_READ_ONLY = true; +export interface ScanCommandOptions extends ScanOptions { + TYPE?: string; +} +export declare function transformArguments(cursor: number, options?: ScanCommandOptions): Array; +export interface ScanReply { + cursor: number; + keys: Array; +} +export declare function transformReply([cursor, keys]: [string, Array]): ScanReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCAN.js b/node_modules/@node-redis/client/dist/lib/commands/SCAN.js new file mode 100644 index 0000000000..75e6dfedc8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCAN.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.IS_READ_ONLY = true; +function transformArguments(cursor, options) { + const args = (0, generic_transformers_1.pushScanArguments)(['SCAN'], cursor, options); + if (options === null || options === void 0 ? void 0 : options.TYPE) { + args.push('TYPE', options.TYPE); + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply([cursor, keys]) { + return { + cursor: Number(cursor), + keys + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCARD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SCARD.d.ts new file mode 100644 index 0000000000..c1eb7365ad --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCARD.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCARD.js b/node_modules/@node-redis/client/dist/lib/commands/SCARD.js new file mode 100644 index 0000000000..4a1bdab66f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCARD.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['SCARD', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_DEBUG.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_DEBUG.d.ts new file mode 100644 index 0000000000..56af8af1cf --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_DEBUG.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(mode: 'YES' | 'SYNC' | 'NO'): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_DEBUG.js b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_DEBUG.js new file mode 100644 index 0000000000..15b9a0bc5a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_DEBUG.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(mode) { + return ['SCRIPT', 'DEBUG', mode]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_EXISTS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_EXISTS.d.ts new file mode 100644 index 0000000000..6e0f548bf0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_EXISTS.d.ts @@ -0,0 +1,3 @@ +import { RedisCommandArguments } from '.'; +export declare function transformArguments(sha1: string | Array): RedisCommandArguments; +export { transformReplyBooleanArray as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_EXISTS.js b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_EXISTS.js new file mode 100644 index 0000000000..bb75feaca4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_EXISTS.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +const generic_transformers_1 = require("./generic-transformers"); +function transformArguments(sha1) { + return (0, generic_transformers_1.pushVerdictArguments)(['SCRIPT', 'EXISTS'], sha1); +} +exports.transformArguments = transformArguments; +var generic_transformers_2 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformReplyBooleanArray; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_FLUSH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_FLUSH.d.ts new file mode 100644 index 0000000000..8675eff2ab --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_FLUSH.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(mode?: 'ASYNC' | 'SYNC'): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_FLUSH.js b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_FLUSH.js new file mode 100644 index 0000000000..207885f9ce --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_FLUSH.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(mode) { + const args = ['SCRIPT', 'FLUSH']; + if (mode) { + args.push(mode); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_KILL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_KILL.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_KILL.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_KILL.js b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_KILL.js new file mode 100644 index 0000000000..33b5ea0cd9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_KILL.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['SCRIPT', 'KILL']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_LOAD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_LOAD.d.ts new file mode 100644 index 0000000000..8995e3efe1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_LOAD.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(script: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_LOAD.js b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_LOAD.js new file mode 100644 index 0000000000..41c0836b66 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SCRIPT_LOAD.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(script) { + return ['SCRIPT', 'LOAD', script]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SDIFF.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SDIFF.d.ts new file mode 100644 index 0000000000..77ab236335 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SDIFF.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(keys: string | Array): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SDIFF.js b/node_modules/@node-redis/client/dist/lib/commands/SDIFF.js new file mode 100644 index 0000000000..c2bb35afb3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SDIFF.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(keys) { + return (0, generic_transformers_1.pushVerdictArguments)(['SDIFF'], keys); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SDIFFSTORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SDIFFSTORE.d.ts new file mode 100644 index 0000000000..031db22547 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SDIFFSTORE.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(destination: string, keys: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SDIFFSTORE.js b/node_modules/@node-redis/client/dist/lib/commands/SDIFFSTORE.js new file mode 100644 index 0000000000..c5dba765ed --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SDIFFSTORE.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(destination, keys) { + return (0, generic_transformers_1.pushVerdictArguments)(['SDIFFSTORE', destination], keys); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SET.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SET.d.ts new file mode 100644 index 0000000000..be8622a5d7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SET.d.ts @@ -0,0 +1,24 @@ +/// +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +declare type MaximumOneOf = K extends keyof T ? { + [P in K]?: T[K]; +} & Partial, never>> : never; +declare type SetTTL = MaximumOneOf<{ + EX: number; + PX: number; + EXAT: number; + PXAT: number; + KEEPTTL: true; +}>; +declare type SetGuards = MaximumOneOf<{ + NX: true; + XX: true; +}>; +interface SetCommonOptions { + GET?: true; +} +declare type SetOptions = SetTTL & SetGuards & SetCommonOptions; +export declare function transformArguments(key: string | Buffer, value: string | Buffer, options?: SetOptions): RedisCommandArguments; +export declare function transformReply(reply?: string): string | null; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SET.js b/node_modules/@node-redis/client/dist/lib/commands/SET.js new file mode 100644 index 0000000000..7ceeba4b7a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SET.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, value, options) { + const args = ['SET', key, value]; + if (!options) { + return args; + } + if (options.EX) { + args.push('EX', options.EX.toString()); + } + else if (options.PX) { + args.push('PX', options.PX.toString()); + } + else if (options.EXAT) { + args.push('EXAT', options.EXAT.toString()); + } + else if (options.PXAT) { + args.push('PXAT', options.PXAT.toString()); + } + else if (options.KEEPTTL) { + args.push('KEEPTTL'); + } + if (options.NX) { + args.push('NX'); + } + else if (options.XX) { + args.push('XX'); + } + if (options.GET) { + args.push('GET'); + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply !== null && reply !== void 0 ? reply : null; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SETBIT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SETBIT.d.ts new file mode 100644 index 0000000000..6afb3837e7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SETBIT.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +import { BitValue } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, offset: number, value: BitValue): RedisCommandArguments; +export declare function transformReply(): BitValue; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SETBIT.js b/node_modules/@node-redis/client/dist/lib/commands/SETBIT.js new file mode 100644 index 0000000000..87882a2afb --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SETBIT.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, offset, value) { + return ['SETBIT', key, offset.toString(), value.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SETEX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SETEX.d.ts new file mode 100644 index 0000000000..bc7630478c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SETEX.d.ts @@ -0,0 +1,5 @@ +/// +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string | Buffer, seconds: number, value: string): RedisCommandArguments; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SETEX.js b/node_modules/@node-redis/client/dist/lib/commands/SETEX.js new file mode 100644 index 0000000000..4c611751f9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SETEX.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, seconds, value) { + return [ + 'SETEX', + key, + seconds.toString(), + value + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SETNX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SETNX.d.ts new file mode 100644 index 0000000000..97c17bacfc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SETNX.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, value: string): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SETNX.js b/node_modules/@node-redis/client/dist/lib/commands/SETNX.js new file mode 100644 index 0000000000..d16e8dbac2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SETNX.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, value) { + return ['SETNX', key, value]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/SETRANGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SETRANGE.d.ts new file mode 100644 index 0000000000..f0d4e89463 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SETRANGE.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, offset: number, value: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SETRANGE.js b/node_modules/@node-redis/client/dist/lib/commands/SETRANGE.js new file mode 100644 index 0000000000..2d8502e969 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SETRANGE.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, offset, value) { + return ['SETRANGE', key, offset.toString(), value]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SHUTDOWN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SHUTDOWN.d.ts new file mode 100644 index 0000000000..88018cd234 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SHUTDOWN.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(mode?: 'NOSAVE' | 'SAVE'): Array; +export declare function transformReply(): void; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SHUTDOWN.js b/node_modules/@node-redis/client/dist/lib/commands/SHUTDOWN.js new file mode 100644 index 0000000000..05ab37dd14 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SHUTDOWN.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(mode) { + const args = ['SHUTDOWN']; + if (mode) { + args.push(mode); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SINTER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SINTER.d.ts new file mode 100644 index 0000000000..77ab236335 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SINTER.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(keys: string | Array): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SINTER.js b/node_modules/@node-redis/client/dist/lib/commands/SINTER.js new file mode 100644 index 0000000000..f0411956ba --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SINTER.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(keys) { + return (0, generic_transformers_1.pushVerdictArguments)(['SINTER'], keys); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SINTERSTORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SINTERSTORE.d.ts new file mode 100644 index 0000000000..d0562170c8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SINTERSTORE.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(destination: string, keys: string | Array): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SINTERSTORE.js b/node_modules/@node-redis/client/dist/lib/commands/SINTERSTORE.js new file mode 100644 index 0000000000..c0b5e60cb0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SINTERSTORE.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(destination, keys) { + return (0, generic_transformers_1.pushVerdictArguments)(['SINTERSTORE', destination], keys); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SISMEMBER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SISMEMBER.d.ts new file mode 100644 index 0000000000..1a84f870dd --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SISMEMBER.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, member: string): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SISMEMBER.js b/node_modules/@node-redis/client/dist/lib/commands/SISMEMBER.js new file mode 100644 index 0000000000..1dc0f874b7 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SISMEMBER.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, member) { + return ['SISMEMBER', key, member]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/SMEMBERS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SMEMBERS.d.ts new file mode 100644 index 0000000000..ab4a88f694 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SMEMBERS.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SMEMBERS.js b/node_modules/@node-redis/client/dist/lib/commands/SMEMBERS.js new file mode 100644 index 0000000000..ac54abae9f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SMEMBERS.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['SMEMBERS', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SMISMEMBER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SMISMEMBER.d.ts new file mode 100644 index 0000000000..8f93784e2b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SMISMEMBER.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, members: Array): Array; +export { transformReplyBooleanArray as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SMISMEMBER.js b/node_modules/@node-redis/client/dist/lib/commands/SMISMEMBER.js new file mode 100644 index 0000000000..52bc9f3a8a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SMISMEMBER.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, members) { + return ['SMISMEMBER', key, ...members]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBooleanArray; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/SMOVE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SMOVE.d.ts new file mode 100644 index 0000000000..3619459e26 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SMOVE.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(source: string, destination: string, member: string): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SMOVE.js b/node_modules/@node-redis/client/dist/lib/commands/SMOVE.js new file mode 100644 index 0000000000..cebab9fc1d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SMOVE.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(source, destination, member) { + return ['SMOVE', source, destination, member]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/SORT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SORT.d.ts new file mode 100644 index 0000000000..ea917f2bb1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SORT.d.ts @@ -0,0 +1,16 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +interface SortOptions { + BY?: string; + LIMIT?: { + offset: number; + count: number; + }; + GET?: string | Array; + DIRECTION?: 'ASC' | 'DESC'; + ALPHA?: true; + STORE?: string; +} +export declare function transformArguments(key: string, options?: SortOptions): Array; +export declare function transformReply(reply: Array | number): Array | number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SORT.js b/node_modules/@node-redis/client/dist/lib/commands/SORT.js new file mode 100644 index 0000000000..cb6e599123 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SORT.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, options) { + const args = ['SORT', key]; + if (options === null || options === void 0 ? void 0 : options.BY) { + args.push('BY', options.BY); + } + if (options === null || options === void 0 ? void 0 : options.LIMIT) { + args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString()); + } + if (options === null || options === void 0 ? void 0 : options.GET) { + for (const pattern of (typeof options.GET === 'string' ? [options.GET] : options.GET)) { + args.push('GET', pattern); + } + } + if (options === null || options === void 0 ? void 0 : options.DIRECTION) { + args.push(options.DIRECTION); + } + if (options === null || options === void 0 ? void 0 : options.ALPHA) { + args.push('ALPHA'); + } + if (options === null || options === void 0 ? void 0 : options.STORE) { + args.push('STORE', options.STORE); + } + return args; +} +exports.transformArguments = transformArguments; +// integer when using `STORE` +function transformReply(reply) { + return reply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SPOP.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SPOP.d.ts new file mode 100644 index 0000000000..c0ddb55455 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SPOP.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, count?: number): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SPOP.js b/node_modules/@node-redis/client/dist/lib/commands/SPOP.js new file mode 100644 index 0000000000..51d82444e6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SPOP.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, count) { + const args = ['SPOP', key]; + if (typeof count === 'number') { + args.push(count.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER.d.ts new file mode 100644 index 0000000000..a1e191335c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER.js b/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER.js new file mode 100644 index 0000000000..cfd1cb3626 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return ['SRANDMEMBER', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER_COUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER_COUNT.d.ts new file mode 100644 index 0000000000..e9ef369a21 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER_COUNT.d.ts @@ -0,0 +1,3 @@ +export { FIRST_KEY_INDEX } from './SRANDMEMBER'; +export declare function transformArguments(key: string, count: number): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER_COUNT.js b/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER_COUNT.js new file mode 100644 index 0000000000..6e0c4a3830 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SRANDMEMBER_COUNT.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const SRANDMEMBER_1 = require("./SRANDMEMBER"); +var SRANDMEMBER_2 = require("./SRANDMEMBER"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return SRANDMEMBER_2.FIRST_KEY_INDEX; } }); +function transformArguments(key, count) { + return [ + ...(0, SRANDMEMBER_1.transformArguments)(key), + count.toString() + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SREM.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SREM.d.ts new file mode 100644 index 0000000000..f11321ce02 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SREM.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, members: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SREM.js b/node_modules/@node-redis/client/dist/lib/commands/SREM.js new file mode 100644 index 0000000000..121b1efc99 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SREM.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, members) { + return (0, generic_transformers_1.pushVerdictArguments)(['SREM', key], members); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SSCAN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SSCAN.d.ts new file mode 100644 index 0000000000..98cdd14e1c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SSCAN.d.ts @@ -0,0 +1,10 @@ +import { ScanOptions } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, cursor: number, options?: ScanOptions): Array; +interface SScanReply { + cursor: number; + members: Array; +} +export declare function transformReply([cursor, members]: [string, Array]): SScanReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SSCAN.js b/node_modules/@node-redis/client/dist/lib/commands/SSCAN.js new file mode 100644 index 0000000000..e14f0866c9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SSCAN.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, cursor, options) { + return (0, generic_transformers_1.pushScanArguments)([ + 'SSCAN', + key, + ], cursor, options); +} +exports.transformArguments = transformArguments; +function transformReply([cursor, members]) { + return { + cursor: Number(cursor), + members + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/STRLEN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/STRLEN.d.ts new file mode 100644 index 0000000000..7b54a1ff63 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/STRLEN.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/STRLEN.js b/node_modules/@node-redis/client/dist/lib/commands/STRLEN.js new file mode 100644 index 0000000000..4786064378 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/STRLEN.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['STRLEN', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SUNION.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SUNION.d.ts new file mode 100644 index 0000000000..e545ebfa88 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SUNION.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(keys: string | Array): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SUNION.js b/node_modules/@node-redis/client/dist/lib/commands/SUNION.js new file mode 100644 index 0000000000..d3d75215cb --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SUNION.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(keys) { + return (0, generic_transformers_1.pushVerdictArguments)(['SUNION'], keys); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SUNIONSTORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SUNIONSTORE.d.ts new file mode 100644 index 0000000000..031db22547 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SUNIONSTORE.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(destination: string, keys: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SUNIONSTORE.js b/node_modules/@node-redis/client/dist/lib/commands/SUNIONSTORE.js new file mode 100644 index 0000000000..93d85fd898 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SUNIONSTORE.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(destination, keys) { + return (0, generic_transformers_1.pushVerdictArguments)(['SUNIONSTORE', destination], keys); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SWAPDB.d.ts b/node_modules/@node-redis/client/dist/lib/commands/SWAPDB.d.ts new file mode 100644 index 0000000000..21e7bbd9c0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SWAPDB.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(index1: number, index2: number): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/SWAPDB.js b/node_modules/@node-redis/client/dist/lib/commands/SWAPDB.js new file mode 100644 index 0000000000..49675291d5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/SWAPDB.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(index1, index2) { + return ['SWAPDB', index1.toString(), index2.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/TIME.d.ts b/node_modules/@node-redis/client/dist/lib/commands/TIME.d.ts new file mode 100644 index 0000000000..806bc2577e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/TIME.d.ts @@ -0,0 +1,6 @@ +export declare function transformArguments(): Array; +interface TimeReply extends Date { + microseconds: number; +} +export declare function transformReply(reply: [string, string]): TimeReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/TIME.js b/node_modules/@node-redis/client/dist/lib/commands/TIME.js new file mode 100644 index 0000000000..e9d92e9972 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/TIME.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments() { + return ['TIME']; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + const seconds = Number(reply[0]), microseconds = Number(reply[1]), d = new Date(seconds + Math.round(microseconds / 1000)); + d.microseconds = microseconds; + return d; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/TOUCH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/TOUCH.d.ts new file mode 100644 index 0000000000..0b9b3c9698 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/TOUCH.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/TOUCH.js b/node_modules/@node-redis/client/dist/lib/commands/TOUCH.js new file mode 100644 index 0000000000..96fe9fe6b2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/TOUCH.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return (0, generic_transformers_1.pushVerdictArguments)(['TOUCH'], key); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/TTL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/TTL.d.ts new file mode 100644 index 0000000000..7b54a1ff63 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/TTL.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/TTL.js b/node_modules/@node-redis/client/dist/lib/commands/TTL.js new file mode 100644 index 0000000000..7a3949fe97 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/TTL.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['TTL', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/TYPE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/TYPE.d.ts new file mode 100644 index 0000000000..feb4b33f96 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/TYPE.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/TYPE.js b/node_modules/@node-redis/client/dist/lib/commands/TYPE.js new file mode 100644 index 0000000000..53b79e7acc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/TYPE.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['TYPE', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/UNLINK.d.ts b/node_modules/@node-redis/client/dist/lib/commands/UNLINK.d.ts new file mode 100644 index 0000000000..0b9b3c9698 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/UNLINK.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/UNLINK.js b/node_modules/@node-redis/client/dist/lib/commands/UNLINK.js new file mode 100644 index 0000000000..7e8591cae9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/UNLINK.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return (0, generic_transformers_1.pushVerdictArguments)(['UNLINK'], key); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/UNWATCH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/UNWATCH.d.ts new file mode 100644 index 0000000000..f7ef9c4cee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/UNWATCH.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/UNWATCH.js b/node_modules/@node-redis/client/dist/lib/commands/UNWATCH.js new file mode 100644 index 0000000000..085fec8ad2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/UNWATCH.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['UNWATCH']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/WAIT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/WAIT.d.ts new file mode 100644 index 0000000000..3b9e386edb --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/WAIT.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(numberOfReplicas: number, timeout: number): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/WAIT.js b/node_modules/@node-redis/client/dist/lib/commands/WAIT.js new file mode 100644 index 0000000000..ad980eedc8 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/WAIT.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(numberOfReplicas, timeout) { + return ['WAIT', numberOfReplicas.toString(), timeout.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/WATCH.d.ts b/node_modules/@node-redis/client/dist/lib/commands/WATCH.d.ts new file mode 100644 index 0000000000..96103105cd --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/WATCH.d.ts @@ -0,0 +1,3 @@ +import { RedisCommandArguments } from '.'; +export declare function transformArguments(key: string | Array): RedisCommandArguments; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/WATCH.js b/node_modules/@node-redis/client/dist/lib/commands/WATCH.js new file mode 100644 index 0000000000..4056ecc440 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/WATCH.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +const generic_transformers_1 = require("./generic-transformers"); +function transformArguments(key) { + return (0, generic_transformers_1.pushVerdictArguments)(['WATCH'], key); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XACK.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XACK.d.ts new file mode 100644 index 0000000000..5a3fa3b8de --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XACK.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, group: string, id: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XACK.js b/node_modules/@node-redis/client/dist/lib/commands/XACK.js new file mode 100644 index 0000000000..07bd8db658 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XACK.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, group, id) { + return (0, generic_transformers_1.pushVerdictArguments)(['XACK', key, group], id); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XADD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XADD.d.ts new file mode 100644 index 0000000000..839e315845 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XADD.d.ts @@ -0,0 +1,14 @@ +import { TuplesObject } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +interface XAddOptions { + NOMKSTREAM?: true; + TRIM?: { + strategy?: 'MAXLEN' | 'MINID'; + strategyModifier?: '=' | '~'; + threshold: number; + limit?: number; + }; +} +export declare function transformArguments(key: string, id: string, message: TuplesObject, options?: XAddOptions): Array; +export declare function transformReply(): string; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XADD.js b/node_modules/@node-redis/client/dist/lib/commands/XADD.js new file mode 100644 index 0000000000..501892114d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XADD.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, id, message, options) { + const args = ['XADD', key]; + if (options === null || options === void 0 ? void 0 : options.NOMKSTREAM) { + args.push('NOMKSTREAM'); + } + if (options === null || options === void 0 ? void 0 : options.TRIM) { + if (options.TRIM.strategy) { + args.push(options.TRIM.strategy); + } + if (options.TRIM.strategyModifier) { + args.push(options.TRIM.strategyModifier); + } + args.push(options.TRIM.threshold.toString()); + if (options.TRIM.limit) { + args.push('LIMIT', options.TRIM.limit.toString()); + } + } + args.push(id); + for (const [key, value] of Object.entries(message)) { + args.push(key, value); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM.d.ts new file mode 100644 index 0000000000..701cc95462 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM.d.ts @@ -0,0 +1,12 @@ +import { StreamMessagesReply } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export interface XAutoClaimOptions { + COUNT?: number; +} +export declare function transformArguments(key: string, group: string, consumer: string, minIdleTime: number, start: string, options?: XAutoClaimOptions): Array; +interface XAutoClaimReply { + nextId: string; + messages: StreamMessagesReply; +} +export declare function transformReply(reply: [string, Array]): XAutoClaimReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM.js b/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM.js new file mode 100644 index 0000000000..4cfdab2307 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, group, consumer, minIdleTime, start, options) { + const args = ['XAUTOCLAIM', key, group, consumer, minIdleTime.toString(), start]; + if (options === null || options === void 0 ? void 0 : options.COUNT) { + args.push('COUNT', options.COUNT.toString()); + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return { + nextId: reply[0], + messages: (0, generic_transformers_1.transformReplyStreamMessages)(reply[1]) + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.d.ts new file mode 100644 index 0000000000..3d1974283a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.d.ts @@ -0,0 +1,8 @@ +import { transformArguments as transformXAutoClaimArguments } from './XAUTOCLAIM'; +export { FIRST_KEY_INDEX } from './XAUTOCLAIM'; +export declare function transformArguments(...args: Parameters): Array; +interface XAutoClaimJustIdReply { + nextId: string; + messages: Array; +} +export declare function transformReply(reply: [string, Array]): XAutoClaimJustIdReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.js b/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.js new file mode 100644 index 0000000000..8835b478da --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const XAUTOCLAIM_1 = require("./XAUTOCLAIM"); +var XAUTOCLAIM_2 = require("./XAUTOCLAIM"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return XAUTOCLAIM_2.FIRST_KEY_INDEX; } }); +function transformArguments(...args) { + return [ + ...(0, XAUTOCLAIM_1.transformArguments)(...args), + 'JUSTID' + ]; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return { + nextId: reply[0], + messages: reply[1] + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XCLAIM.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XCLAIM.d.ts new file mode 100644 index 0000000000..55f84a1872 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XCLAIM.d.ts @@ -0,0 +1,9 @@ +export declare const FIRST_KEY_INDEX = 1; +export interface XClaimOptions { + IDLE?: number; + TIME?: number | Date; + RETRYCOUNT?: number; + FORCE?: true; +} +export declare function transformArguments(key: string, group: string, consumer: string, minIdleTime: number, id: string | Array, options?: XClaimOptions): Array; +export { transformReplyStreamMessages as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XCLAIM.js b/node_modules/@node-redis/client/dist/lib/commands/XCLAIM.js new file mode 100644 index 0000000000..671c9ba314 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XCLAIM.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, group, consumer, minIdleTime, id, options) { + const args = ['XCLAIM', key, group, consumer, minIdleTime.toString()]; + (0, generic_transformers_1.pushVerdictArguments)(args, id); + if (options === null || options === void 0 ? void 0 : options.IDLE) { + args.push('IDLE', options.IDLE.toString()); + } + if (options === null || options === void 0 ? void 0 : options.TIME) { + args.push('TIME', (typeof options.TIME === 'number' ? options.TIME : options.TIME.getTime()).toString()); + } + if (options === null || options === void 0 ? void 0 : options.RETRYCOUNT) { + args.push('RETRYCOUNT', options.RETRYCOUNT.toString()); + } + if (options === null || options === void 0 ? void 0 : options.FORCE) { + args.push('FORCE'); + } + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_2 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformReplyStreamMessages; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/XCLAIM_JUSTID.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XCLAIM_JUSTID.d.ts new file mode 100644 index 0000000000..31580d069d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XCLAIM_JUSTID.d.ts @@ -0,0 +1,4 @@ +import { transformArguments as transformArgumentsXClaim } from './XCLAIM'; +export { FIRST_KEY_INDEX } from './XCLAIM'; +export declare function transformArguments(...args: Parameters): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XCLAIM_JUSTID.js b/node_modules/@node-redis/client/dist/lib/commands/XCLAIM_JUSTID.js new file mode 100644 index 0000000000..ef7093b5bf --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XCLAIM_JUSTID.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const XCLAIM_1 = require("./XCLAIM"); +var XCLAIM_2 = require("./XCLAIM"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return XCLAIM_2.FIRST_KEY_INDEX; } }); +function transformArguments(...args) { + return [ + ...(0, XCLAIM_1.transformArguments)(...args), + 'JUSTID' + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XDEL.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XDEL.d.ts new file mode 100644 index 0000000000..551510a715 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XDEL.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, id: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XDEL.js b/node_modules/@node-redis/client/dist/lib/commands/XDEL.js new file mode 100644 index 0000000000..2713cea45d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XDEL.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, id) { + return (0, generic_transformers_1.pushVerdictArguments)(['XDEL', key], id); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATE.d.ts new file mode 100644 index 0000000000..1d914ded75 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATE.d.ts @@ -0,0 +1,7 @@ +export declare const FIRST_KEY_INDEX = 2; +interface XGroupCreateOptions { + MKSTREAM?: true; +} +export declare function transformArguments(key: string, group: string, id: string, options?: XGroupCreateOptions): Array; +export declare function transformReply(): string; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATE.js b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATE.js new file mode 100644 index 0000000000..999ef96913 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATE.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 2; +function transformArguments(key, group, id, options) { + const args = ['XGROUP', 'CREATE', key, group, id]; + if (options === null || options === void 0 ? void 0 : options.MKSTREAM) { + args.push('MKSTREAM'); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.d.ts new file mode 100644 index 0000000000..b4e2916853 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 2; +export declare function transformArguments(key: string, group: string, consumer: string): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.js b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.js new file mode 100644 index 0000000000..674fcd7ebb --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 2; +function transformArguments(key, group, consumer) { + return ['XGROUP', 'CREATECONSUMER', key, group, consumer]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DELCONSUMER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DELCONSUMER.d.ts new file mode 100644 index 0000000000..78a1bb4f4b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DELCONSUMER.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 2; +export declare function transformArguments(key: string, group: string, consumer: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DELCONSUMER.js b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DELCONSUMER.js new file mode 100644 index 0000000000..32b1bd3d95 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DELCONSUMER.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 2; +function transformArguments(key, group, consumer) { + return ['XGROUP', 'DELCONSUMER', key, group, consumer]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DESTROY.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DESTROY.d.ts new file mode 100644 index 0000000000..0d64b6bf2a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DESTROY.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 2; +export declare function transformArguments(key: string, group: string): Array; +export { transformReplyBoolean as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DESTROY.js b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DESTROY.js new file mode 100644 index 0000000000..f617a8acec --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_DESTROY.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 2; +function transformArguments(key, group) { + return ['XGROUP', 'DESTROY', key, group]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_SETID.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_SETID.d.ts new file mode 100644 index 0000000000..567277d5fd --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_SETID.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 2; +export declare function transformArguments(key: string, group: string, id: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XGROUP_SETID.js b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_SETID.js new file mode 100644 index 0000000000..0accac4a2c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XGROUP_SETID.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 2; +function transformArguments(key, group, id) { + return ['XGROUP', 'SETID', key, group, id]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XINFO_CONSUMERS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XINFO_CONSUMERS.d.ts new file mode 100644 index 0000000000..e699f76c2a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XINFO_CONSUMERS.d.ts @@ -0,0 +1,10 @@ +export declare const FIRST_KEY_INDEX = 2; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, group: string): Array; +declare type XInfoConsumersReply = Array<{ + name: string; + pending: number; + idle: number; +}>; +export declare function transformReply(rawReply: Array): XInfoConsumersReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XINFO_CONSUMERS.js b/node_modules/@node-redis/client/dist/lib/commands/XINFO_CONSUMERS.js new file mode 100644 index 0000000000..1b3448d098 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XINFO_CONSUMERS.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 2; +exports.IS_READ_ONLY = true; +function transformArguments(key, group) { + return ['XINFO', 'CONSUMERS', key, group]; +} +exports.transformArguments = transformArguments; +function transformReply(rawReply) { + return rawReply.map(consumer => ({ + name: consumer[1], + pending: consumer[3], + idle: consumer[5] + })); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XINFO_GROUPS.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XINFO_GROUPS.d.ts new file mode 100644 index 0000000000..f9bbb567a9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XINFO_GROUPS.d.ts @@ -0,0 +1,11 @@ +export declare const FIRST_KEY_INDEX = 2; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +declare type XInfoGroupsReply = Array<{ + name: string; + consumers: number; + pending: number; + lastDeliveredId: string; +}>; +export declare function transformReply(rawReply: Array): XInfoGroupsReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XINFO_GROUPS.js b/node_modules/@node-redis/client/dist/lib/commands/XINFO_GROUPS.js new file mode 100644 index 0000000000..45ede76950 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XINFO_GROUPS.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 2; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['XINFO', 'GROUPS', key]; +} +exports.transformArguments = transformArguments; +function transformReply(rawReply) { + return rawReply.map(group => ({ + name: group[1], + consumers: group[3], + pending: group[5], + lastDeliveredId: group[7] + })); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XINFO_STREAM.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XINFO_STREAM.d.ts new file mode 100644 index 0000000000..a942da9f14 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XINFO_STREAM.d.ts @@ -0,0 +1,15 @@ +import { StreamMessageReply } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 2; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +interface XInfoStreamReply { + length: number; + radixTreeKeys: number; + radixTreeNodes: number; + groups: number; + lastGeneratedId: string; + firstEntry: StreamMessageReply | null; + lastEntry: StreamMessageReply | null; +} +export declare function transformReply(rawReply: Array): XInfoStreamReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XINFO_STREAM.js b/node_modules/@node-redis/client/dist/lib/commands/XINFO_STREAM.js new file mode 100644 index 0000000000..8d4e8e700c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XINFO_STREAM.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 2; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['XINFO', 'STREAM', key]; +} +exports.transformArguments = transformArguments; +function transformReply(rawReply) { + const parsedReply = {}; + for (let i = 0; i < rawReply.length; i += 2) { + switch (rawReply[i]) { + case 'length': + parsedReply.length = rawReply[i + 1]; + break; + case 'radix-tree-keys': + parsedReply.radixTreeKeys = rawReply[i + 1]; + break; + case 'radix-tree-nodes': + parsedReply.radixTreeNodes = rawReply[i + 1]; + break; + case 'groups': + parsedReply.groups = rawReply[i + 1]; + break; + case 'last-generated-id': + parsedReply.lastGeneratedId = rawReply[i + 1]; + break; + case 'first-entry': + parsedReply.firstEntry = rawReply[i + 1] ? { + id: rawReply[i + 1][0], + message: (0, generic_transformers_1.transformReplyTuples)(rawReply[i + 1][1]) + } : null; + break; + case 'last-entry': + parsedReply.lastEntry = rawReply[i + 1] ? { + id: rawReply[i + 1][0], + message: (0, generic_transformers_1.transformReplyTuples)(rawReply[i + 1][1]) + } : null; + break; + } + } + return parsedReply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XLEN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XLEN.d.ts new file mode 100644 index 0000000000..7b54a1ff63 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XLEN.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XLEN.js b/node_modules/@node-redis/client/dist/lib/commands/XLEN.js new file mode 100644 index 0000000000..cbac3ecb7e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XLEN.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['XLEN', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XPENDING.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XPENDING.d.ts new file mode 100644 index 0000000000..08c39c1d28 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XPENDING.d.ts @@ -0,0 +1,11 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, group: string): Array; +interface XPendingReply { + pending: number; + firstId: string | null; + lastId: number | null; + consumers: Array | null; +} +export declare function transformReply(reply: [number, string | null, number | null, Array | null]): XPendingReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XPENDING.js b/node_modules/@node-redis/client/dist/lib/commands/XPENDING.js new file mode 100644 index 0000000000..e8264b068e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XPENDING.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, group) { + return ['XPENDING', key, group]; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return { + pending: reply[0], + firstId: reply[1], + lastId: reply[2], + consumers: reply[3] + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XPENDING_RANGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XPENDING_RANGE.d.ts new file mode 100644 index 0000000000..331e3e9cae --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XPENDING_RANGE.d.ts @@ -0,0 +1,8 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +interface XPendingRangeOptions { + IDLE?: number; + consumer?: string; +} +export declare function transformArguments(key: string, group: string, start: string, end: string, count: number, options?: XPendingRangeOptions): Array; +export { transformReplyStreamMessages as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XPENDING_RANGE.js b/node_modules/@node-redis/client/dist/lib/commands/XPENDING_RANGE.js new file mode 100644 index 0000000000..9d6a119dcc --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XPENDING_RANGE.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, group, start, end, count, options) { + const args = ['XPENDING', key, group]; + if (options === null || options === void 0 ? void 0 : options.IDLE) { + args.push('IDLE', options.IDLE.toString()); + } + args.push(start, end, count.toString()); + if (options === null || options === void 0 ? void 0 : options.consumer) { + args.push(options.consumer); + } + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyStreamMessages; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/XRANGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XRANGE.d.ts new file mode 100644 index 0000000000..76075cce3e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XRANGE.d.ts @@ -0,0 +1,7 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +interface XRangeOptions { + COUNT?: number; +} +export declare function transformArguments(key: string, start: string, end: string, options?: XRangeOptions): Array; +export { transformReplyStreamMessages as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XRANGE.js b/node_modules/@node-redis/client/dist/lib/commands/XRANGE.js new file mode 100644 index 0000000000..ef7810d6ba --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XRANGE.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, start, end, options) { + const args = ['XRANGE', key, start, end]; + if (options === null || options === void 0 ? void 0 : options.COUNT) { + args.push('COUNT', options.COUNT.toString()); + } + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyStreamMessages; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/XREAD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XREAD.d.ts new file mode 100644 index 0000000000..e29331bf8e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XREAD.d.ts @@ -0,0 +1,12 @@ +export declare const FIRST_KEY_INDEX: (streams: Array | XReadStream) => string; +export declare const IS_READ_ONLY = true; +interface XReadStream { + key: string; + id: string; +} +interface XReadOptions { + COUNT?: number; + BLOCK?: number; +} +export declare function transformArguments(streams: Array | XReadStream, options?: XReadOptions): Array; +export { transformReplyStreamsMessages as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XREAD.js b/node_modules/@node-redis/client/dist/lib/commands/XREAD.js new file mode 100644 index 0000000000..0b3f62006d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XREAD.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const FIRST_KEY_INDEX = (streams) => { + return Array.isArray(streams) ? streams[0].key : streams.key; +}; +exports.FIRST_KEY_INDEX = FIRST_KEY_INDEX; +exports.IS_READ_ONLY = true; +function transformArguments(streams, options) { + const args = ['XREAD']; + if (options === null || options === void 0 ? void 0 : options.COUNT) { + args.push('COUNT', options.COUNT.toString()); + } + if (typeof (options === null || options === void 0 ? void 0 : options.BLOCK) === 'number') { + args.push('BLOCK', options.BLOCK.toString()); + } + args.push('STREAMS'); + const streamsArray = Array.isArray(streams) ? streams : [streams], argsLength = args.length; + for (let i = 0; i < streamsArray.length; i++) { + const stream = streamsArray[i]; + args[argsLength + i] = stream.key; + args[argsLength + streamsArray.length + i] = stream.id; + } + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyStreamsMessages; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/XREADGROUP.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XREADGROUP.d.ts new file mode 100644 index 0000000000..9198b3c0b0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XREADGROUP.d.ts @@ -0,0 +1,13 @@ +export interface XReadGroupStream { + key: string; + id: string; +} +export interface XReadGroupOptions { + COUNT?: number; + BLOCK?: number; + NOACK?: true; +} +export declare const FIRST_KEY_INDEX: (_group: string, _consumer: string, streams: Array | XReadGroupStream) => string; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(group: string, consumer: string, streams: Array | XReadGroupStream, options?: XReadGroupOptions): Array; +export { transformReplyStreamsMessages as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XREADGROUP.js b/node_modules/@node-redis/client/dist/lib/commands/XREADGROUP.js new file mode 100644 index 0000000000..bafb6c8aed --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XREADGROUP.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const FIRST_KEY_INDEX = (_group, _consumer, streams) => { + return Array.isArray(streams) ? streams[0].key : streams.key; +}; +exports.FIRST_KEY_INDEX = FIRST_KEY_INDEX; +exports.IS_READ_ONLY = true; +function transformArguments(group, consumer, streams, options) { + const args = ['XREADGROUP', 'GROUP', group, consumer]; + if (options === null || options === void 0 ? void 0 : options.COUNT) { + args.push('COUNT', options.COUNT.toString()); + } + if (typeof (options === null || options === void 0 ? void 0 : options.BLOCK) === 'number') { + args.push('BLOCK', options.BLOCK.toString()); + } + if (options === null || options === void 0 ? void 0 : options.NOACK) { + args.push('NOACK'); + } + args.push('STREAMS'); + const streamsArray = Array.isArray(streams) ? streams : [streams], argsLength = args.length; + for (let i = 0; i < streamsArray.length; i++) { + const stream = streamsArray[i]; + args[argsLength + i] = stream.key; + args[argsLength + streamsArray.length + i] = stream.id; + } + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyStreamsMessages; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/XREVRANGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XREVRANGE.d.ts new file mode 100644 index 0000000000..93d3a055f1 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XREVRANGE.d.ts @@ -0,0 +1,5 @@ +interface XRangeRevOptions { + COUNT?: number; +} +export declare function transformArguments(key: string, start: string, end: string, options?: XRangeRevOptions): Array; +export { transformReplyStreamMessages as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XREVRANGE.js b/node_modules/@node-redis/client/dist/lib/commands/XREVRANGE.js new file mode 100644 index 0000000000..045da1e0ee --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XREVRANGE.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(key, start, end, options) { + const args = ['XREVRANGE', key, start, end]; + if (options === null || options === void 0 ? void 0 : options.COUNT) { + args.push('COUNT', options.COUNT.toString()); + } + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyStreamMessages; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/XTRIM.d.ts b/node_modules/@node-redis/client/dist/lib/commands/XTRIM.d.ts new file mode 100644 index 0000000000..8136ce34b9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XTRIM.d.ts @@ -0,0 +1,8 @@ +export declare const FIRST_KEY_INDEX = 1; +interface XTrimOptions { + strategyModifier?: '=' | '~'; + LIMIT?: number; +} +export declare function transformArguments(key: string, strategy: 'MAXLEN' | 'MINID', threshold: number, options?: XTrimOptions): Array; +export declare function transformReply(): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/XTRIM.js b/node_modules/@node-redis/client/dist/lib/commands/XTRIM.js new file mode 100644 index 0000000000..de0d15d820 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/XTRIM.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, strategy, threshold, options) { + const args = ['XTRIM', key, strategy]; + if (options === null || options === void 0 ? void 0 : options.strategyModifier) { + args.push(options.strategyModifier); + } + args.push(threshold.toString()); + if (options === null || options === void 0 ? void 0 : options.LIMIT) { + args.push('LIMIT', options.LIMIT.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZADD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZADD.d.ts new file mode 100644 index 0000000000..3eac202163 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZADD.d.ts @@ -0,0 +1,23 @@ +import { ZMember } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +interface NX { + NX?: true; +} +interface XX { + XX?: true; +} +interface LT { + LT?: true; +} +interface GT { + GT?: true; +} +interface CH { + CH?: true; +} +interface INCR { + INCR?: true; +} +declare type ZAddOptions = (NX | (XX & LT & GT)) & CH & INCR; +export declare function transformArguments(key: string, members: ZMember | Array, options?: ZAddOptions): Array; +export { transformReplyNumberInfinity as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZADD.js b/node_modules/@node-redis/client/dist/lib/commands/ZADD.js new file mode 100644 index 0000000000..7321fa525e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZADD.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, members, options) { + var _a, _b, _c, _d, _e, _f; + const args = ['ZADD', key]; + if ((_a = options) === null || _a === void 0 ? void 0 : _a.NX) { + args.push('NX'); + } + else { + if ((_b = options) === null || _b === void 0 ? void 0 : _b.XX) { + args.push('XX'); + } + if ((_c = options) === null || _c === void 0 ? void 0 : _c.GT) { + args.push('GT'); + } + else if ((_d = options) === null || _d === void 0 ? void 0 : _d.LT) { + args.push('LT'); + } + } + if ((_e = options) === null || _e === void 0 ? void 0 : _e.CH) { + args.push('CH'); + } + if ((_f = options) === null || _f === void 0 ? void 0 : _f.INCR) { + args.push('INCR'); + } + for (const { score, value } of (Array.isArray(members) ? members : [members])) { + args.push((0, generic_transformers_1.transformArgumentNumberInfinity)(score), value); + } + return args; +} +exports.transformArguments = transformArguments; +var generic_transformers_2 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformReplyNumberInfinity; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZCARD.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZCARD.d.ts new file mode 100644 index 0000000000..7b54a1ff63 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZCARD.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZCARD.js b/node_modules/@node-redis/client/dist/lib/commands/ZCARD.js new file mode 100644 index 0000000000..9ac6f612bd --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZCARD.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['ZCARD', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZCOUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZCOUNT.d.ts new file mode 100644 index 0000000000..bbf2bc5e91 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZCOUNT.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, min: string | number, max: string | number): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZCOUNT.js b/node_modules/@node-redis/client/dist/lib/commands/ZCOUNT.js new file mode 100644 index 0000000000..6433de2e3d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZCOUNT.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, min, max) { + return [ + 'ZCOUNT', + key, + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(min), + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(max) + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZDIFF.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZDIFF.d.ts new file mode 100644 index 0000000000..37f2d8cd42 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZDIFF.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 2; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(keys: Array | string): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZDIFF.js b/node_modules/@node-redis/client/dist/lib/commands/ZDIFF.js new file mode 100644 index 0000000000..94386d0a08 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZDIFF.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 2; +exports.IS_READ_ONLY = true; +function transformArguments(keys) { + return (0, generic_transformers_1.pushVerdictArgument)(['ZDIFF'], keys); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZDIFFSTORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZDIFFSTORE.d.ts new file mode 100644 index 0000000000..57112a5f92 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZDIFFSTORE.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(destination: string, keys: Array | string): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZDIFFSTORE.js b/node_modules/@node-redis/client/dist/lib/commands/ZDIFFSTORE.js new file mode 100644 index 0000000000..da3ef86ee2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZDIFFSTORE.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(destination, keys) { + return (0, generic_transformers_1.pushVerdictArgument)(['ZDIFFSTORE', destination], keys); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZDIFF_WITHSCORES.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZDIFF_WITHSCORES.d.ts new file mode 100644 index 0000000000..52b1dfa4c6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZDIFF_WITHSCORES.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +import { transformArguments as transformZDiffArguments } from './ZDIFF'; +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZDIFF'; +export declare function transformArguments(...args: Parameters): RedisCommandArguments; +export { transformReplySortedSetWithScores as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZDIFF_WITHSCORES.js b/node_modules/@node-redis/client/dist/lib/commands/ZDIFF_WITHSCORES.js new file mode 100644 index 0000000000..ff2c50aa20 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZDIFF_WITHSCORES.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const ZDIFF_1 = require("./ZDIFF"); +var ZDIFF_2 = require("./ZDIFF"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return ZDIFF_2.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return ZDIFF_2.IS_READ_ONLY; } }); +function transformArguments(...args) { + return [ + ...(0, ZDIFF_1.transformArguments)(...args), + 'WITHSCORES' + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplySortedSetWithScores; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZINCRBY.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZINCRBY.d.ts new file mode 100644 index 0000000000..68ab4e2355 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZINCRBY.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, increment: number, member: string): Array; +export { transformReplyNumberInfinity as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZINCRBY.js b/node_modules/@node-redis/client/dist/lib/commands/ZINCRBY.js new file mode 100644 index 0000000000..d3add5a452 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZINCRBY.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, increment, member) { + return [ + 'ZINCRBY', + key, + (0, generic_transformers_1.transformArgumentNumberInfinity)(increment), + member + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_2 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformReplyNumberInfinity; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZINTER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZINTER.d.ts new file mode 100644 index 0000000000..f999173e15 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZINTER.d.ts @@ -0,0 +1,10 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 2; +export declare const IS_READ_ONLY = true; +interface ZInterOptions { + WEIGHTS?: Array; + AGGREGATE?: 'SUM' | 'MIN' | 'MAX'; +} +export declare function transformArguments(keys: Array | string, options?: ZInterOptions): RedisCommandArguments; +export declare function transformReply(): Array; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZINTER.js b/node_modules/@node-redis/client/dist/lib/commands/ZINTER.js new file mode 100644 index 0000000000..17fea6f20d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZINTER.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 2; +exports.IS_READ_ONLY = true; +function transformArguments(keys, options) { + const args = (0, generic_transformers_1.pushVerdictArgument)(['ZINTER'], keys); + if (options === null || options === void 0 ? void 0 : options.WEIGHTS) { + args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString())); + } + if (options === null || options === void 0 ? void 0 : options.AGGREGATE) { + args.push('AGGREGATE', options.AGGREGATE); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZINTERSTORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZINTERSTORE.d.ts new file mode 100644 index 0000000000..79df049731 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZINTERSTORE.d.ts @@ -0,0 +1,9 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +interface ZInterStoreOptions { + WEIGHTS?: Array; + AGGREGATE?: 'SUM' | 'MIN' | 'MAX'; +} +export declare function transformArguments(destination: string, keys: Array | string, options?: ZInterStoreOptions): RedisCommandArguments; +export declare function transformReply(): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZINTERSTORE.js b/node_modules/@node-redis/client/dist/lib/commands/ZINTERSTORE.js new file mode 100644 index 0000000000..834e514ef3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZINTERSTORE.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(destination, keys, options) { + const args = (0, generic_transformers_1.pushVerdictArgument)(['ZINTERSTORE', destination], keys); + if (options === null || options === void 0 ? void 0 : options.WEIGHTS) { + args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString())); + } + if (options === null || options === void 0 ? void 0 : options.AGGREGATE) { + args.push('AGGREGATE', options.AGGREGATE); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZINTER_WITHSCORES.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZINTER_WITHSCORES.d.ts new file mode 100644 index 0000000000..f5c55073c4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZINTER_WITHSCORES.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +import { transformArguments as transformZInterArguments } from './ZINTER'; +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZINTER'; +export declare function transformArguments(...args: Parameters): RedisCommandArguments; +export { transformReplySortedSetWithScores as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZINTER_WITHSCORES.js b/node_modules/@node-redis/client/dist/lib/commands/ZINTER_WITHSCORES.js new file mode 100644 index 0000000000..18b39d02c3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZINTER_WITHSCORES.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const ZINTER_1 = require("./ZINTER"); +var ZINTER_2 = require("./ZINTER"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return ZINTER_2.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return ZINTER_2.IS_READ_ONLY; } }); +function transformArguments(...args) { + return [ + ...(0, ZINTER_1.transformArguments)(...args), + 'WITHSCORES' + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplySortedSetWithScores; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZLEXCOUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZLEXCOUNT.d.ts new file mode 100644 index 0000000000..130d06d464 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZLEXCOUNT.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, min: string, max: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZLEXCOUNT.js b/node_modules/@node-redis/client/dist/lib/commands/ZLEXCOUNT.js new file mode 100644 index 0000000000..31a02b9c7a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZLEXCOUNT.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, min, max) { + return [ + 'ZLEXCOUNT', + key, + min, + max + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZMSCORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZMSCORE.d.ts new file mode 100644 index 0000000000..680bb15722 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZMSCORE.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, member: string | Array): RedisCommandArguments; +export { transformReplyNumberInfinityNullArray as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZMSCORE.js b/node_modules/@node-redis/client/dist/lib/commands/ZMSCORE.js new file mode 100644 index 0000000000..28f34fa60a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZMSCORE.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, member) { + return (0, generic_transformers_1.pushVerdictArguments)(['ZMSCORE', key], member); +} +exports.transformArguments = transformArguments; +var generic_transformers_2 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformReplyNumberInfinityNullArray; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX.d.ts new file mode 100644 index 0000000000..bee5226d6e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX.d.ts @@ -0,0 +1,4 @@ +import { ZMember } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(reply: [string, string] | []): ZMember | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX.js b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX.js new file mode 100644 index 0000000000..151427c27f --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return [ + 'ZPOPMAX', + key + ]; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + if (!reply.length) + return null; + return { + value: reply[0], + score: (0, generic_transformers_1.transformReplyNumberInfinity)(reply[1]) + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX_COUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX_COUNT.d.ts new file mode 100644 index 0000000000..6dbd4a3200 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX_COUNT.d.ts @@ -0,0 +1,3 @@ +export { FIRST_KEY_INDEX } from './ZPOPMAX'; +export declare function transformArguments(key: string, count: number): Array; +export { transformReplySortedSetWithScores as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX_COUNT.js b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX_COUNT.js new file mode 100644 index 0000000000..b0a2933f57 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMAX_COUNT.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const ZPOPMAX_1 = require("./ZPOPMAX"); +var ZPOPMAX_2 = require("./ZPOPMAX"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return ZPOPMAX_2.FIRST_KEY_INDEX; } }); +function transformArguments(key, count) { + return [ + ...(0, ZPOPMAX_1.transformArguments)(key), + count.toString() + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplySortedSetWithScores; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN.d.ts new file mode 100644 index 0000000000..bee5226d6e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN.d.ts @@ -0,0 +1,4 @@ +import { ZMember } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string): Array; +export declare function transformReply(reply: [string, string] | []): ZMember | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN.js b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN.js new file mode 100644 index 0000000000..e6f6c0be06 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key) { + return [ + 'ZPOPMIN', + key + ]; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + if (!reply.length) + return null; + return { + value: reply[0], + score: (0, generic_transformers_1.transformReplyNumberInfinity)(reply[1]) + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN_COUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN_COUNT.d.ts new file mode 100644 index 0000000000..5488006fef --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN_COUNT.d.ts @@ -0,0 +1,3 @@ +export { FIRST_KEY_INDEX } from './ZPOPMIN'; +export declare function transformArguments(key: string, count: number): Array; +export { transformReplySortedSetWithScores as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN_COUNT.js b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN_COUNT.js new file mode 100644 index 0000000000..b61e977f38 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZPOPMIN_COUNT.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const ZPOPMIN_1 = require("./ZPOPMIN"); +var ZPOPMIN_2 = require("./ZPOPMIN"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return ZPOPMIN_2.FIRST_KEY_INDEX; } }); +function transformArguments(key, count) { + return [ + ...(0, ZPOPMIN_1.transformArguments)(key), + count.toString() + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplySortedSetWithScores; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER.d.ts new file mode 100644 index 0000000000..3eb0a075a5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): string | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER.js new file mode 100644 index 0000000000..2792f2ab62 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['ZRANDMEMBER', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.d.ts new file mode 100644 index 0000000000..f7a58789e4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.d.ts @@ -0,0 +1,3 @@ +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZRANDMEMBER'; +export declare function transformArguments(key: string, count: number): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.js new file mode 100644 index 0000000000..7a0d4cddc5 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const ZRANDMEMBER_1 = require("./ZRANDMEMBER"); +var ZRANDMEMBER_2 = require("./ZRANDMEMBER"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return ZRANDMEMBER_2.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return ZRANDMEMBER_2.IS_READ_ONLY; } }); +function transformArguments(key, count) { + return [ + ...(0, ZRANDMEMBER_1.transformArguments)(key), + count.toString() + ]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.d.ts new file mode 100644 index 0000000000..7246e36aa6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.d.ts @@ -0,0 +1,4 @@ +import { transformArguments as transformZRandMemberCountArguments } from './ZRANDMEMBER_COUNT'; +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZRANDMEMBER_COUNT'; +export declare function transformArguments(...args: Parameters): Array; +export { transformReplySortedSetWithScores as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.js new file mode 100644 index 0000000000..054d3560f2 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const ZRANDMEMBER_COUNT_1 = require("./ZRANDMEMBER_COUNT"); +var ZRANDMEMBER_COUNT_2 = require("./ZRANDMEMBER_COUNT"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return ZRANDMEMBER_COUNT_2.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return ZRANDMEMBER_COUNT_2.IS_READ_ONLY; } }); +function transformArguments(...args) { + return [ + ...(0, ZRANDMEMBER_COUNT_1.transformArguments)(...args), + 'WITHSCORES' + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplySortedSetWithScores; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANGE.d.ts new file mode 100644 index 0000000000..a6f73af163 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGE.d.ts @@ -0,0 +1,13 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +interface ZRangeOptions { + BY?: 'SCORE' | 'LEX'; + REV?: true; + LIMIT?: { + offset: number; + count: number; + }; +} +export declare function transformArguments(key: string, min: string | number, max: string | number, options?: ZRangeOptions): Array; +export declare function transformReply(): Array; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGE.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANGE.js new file mode 100644 index 0000000000..541c6aa179 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGE.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, min, max, options) { + const args = [ + 'ZRANGE', + key, + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(min), + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(max) + ]; + switch (options === null || options === void 0 ? void 0 : options.BY) { + case 'SCORE': + args.push('BYSCORE'); + break; + case 'LEX': + args.push('BYLEX'); + break; + } + if (options === null || options === void 0 ? void 0 : options.REV) { + args.push('REV'); + } + if (options === null || options === void 0 ? void 0 : options.LIMIT) { + args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYLEX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYLEX.d.ts new file mode 100644 index 0000000000..3fea430f6e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYLEX.d.ts @@ -0,0 +1,11 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export interface ZRangeByLexOptions { + LIMIT?: { + offset: number; + count: number; + }; +} +export declare function transformArguments(key: string, min: number | string, max: number | string, options?: ZRangeByLexOptions): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYLEX.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYLEX.js new file mode 100644 index 0000000000..0e8a421390 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYLEX.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, min, max, options) { + const args = [ + 'ZRANGEBYLEX', + key, + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(min), + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(max) + ]; + if (options === null || options === void 0 ? void 0 : options.LIMIT) { + args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE.d.ts new file mode 100644 index 0000000000..71af3f9eb4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE.d.ts @@ -0,0 +1,11 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export interface ZRangeByScoreOptions { + LIMIT?: { + offset: number; + count: number; + }; +} +export declare function transformArguments(key: string, min: number | string, max: number | string, options?: ZRangeByScoreOptions): RedisCommandArguments; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE.js new file mode 100644 index 0000000000..28babf27e4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, min, max, options) { + const args = [ + 'ZRANGEBYSCORE', + key, + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(min), + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(max) + ]; + if (options === null || options === void 0 ? void 0 : options.LIMIT) { + args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.d.ts new file mode 100644 index 0000000000..420116e65a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +import { ZRangeByScoreOptions } from './ZRANGEBYSCORE'; +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZRANGEBYSCORE'; +export declare function transformArguments(key: string, min: number | string, max: number | string, options?: ZRangeByScoreOptions): RedisCommandArguments; +export { transformReplySortedSetWithScores as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.js new file mode 100644 index 0000000000..b24c4028d6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const ZRANGEBYSCORE_1 = require("./ZRANGEBYSCORE"); +var ZRANGEBYSCORE_2 = require("./ZRANGEBYSCORE"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return ZRANGEBYSCORE_2.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return ZRANGEBYSCORE_2.IS_READ_ONLY; } }); +function transformArguments(key, min, max, options) { + return [ + ...(0, ZRANGEBYSCORE_1.transformArguments)(key, min, max, options), + 'WITHSCORES' + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplySortedSetWithScores; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGESTORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANGESTORE.d.ts new file mode 100644 index 0000000000..75bb308a9c --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGESTORE.d.ts @@ -0,0 +1,13 @@ +export declare const FIRST_KEY_INDEX = 1; +interface ZRangeStoreOptions { + BY?: 'SCORE' | 'LEX'; + REV?: true; + LIMIT?: { + offset: number; + count: number; + }; + WITHSCORES?: true; +} +export declare function transformArguments(dst: string, src: string, min: string | number, max: string | number, options?: ZRangeStoreOptions): Array; +export declare function transformReply(reply: number): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGESTORE.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANGESTORE.js new file mode 100644 index 0000000000..679e53ff95 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGESTORE.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(dst, src, min, max, options) { + const args = [ + 'ZRANGESTORE', + dst, + src, + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(min), + (0, generic_transformers_1.transformArgumentStringNumberInfinity)(max) + ]; + switch (options === null || options === void 0 ? void 0 : options.BY) { + case 'SCORE': + args.push('BYSCORE'); + break; + case 'LEX': + args.push('BYLEX'); + break; + } + if (options === null || options === void 0 ? void 0 : options.REV) { + args.push('REV'); + } + if (options === null || options === void 0 ? void 0 : options.LIMIT) { + args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString()); + } + if (options === null || options === void 0 ? void 0 : options.WITHSCORES) { + args.push('WITHSCORES'); + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + if (typeof reply !== 'number') { + throw new TypeError(`Upgrade to Redis 6.2.5 and up (https://github.com/redis/redis/pull/9089)`); + } + return reply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGE_WITHSCORES.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANGE_WITHSCORES.d.ts new file mode 100644 index 0000000000..9c8b082b67 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGE_WITHSCORES.d.ts @@ -0,0 +1,4 @@ +import { transformArguments as transformZRangeArguments } from './ZRANGE'; +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZRANGE'; +export declare function transformArguments(...args: Parameters): Array; +export { transformReplySortedSetWithScores as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANGE_WITHSCORES.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANGE_WITHSCORES.js new file mode 100644 index 0000000000..56098d0363 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANGE_WITHSCORES.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const ZRANGE_1 = require("./ZRANGE"); +var ZRANGE_2 = require("./ZRANGE"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return ZRANGE_2.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return ZRANGE_2.IS_READ_ONLY; } }); +function transformArguments(...args) { + return [ + ...(0, ZRANGE_1.transformArguments)(...args), + 'WITHSCORES' + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplySortedSetWithScores; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANK.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZRANK.d.ts new file mode 100644 index 0000000000..0300fd9b51 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANK.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, member: string): Array; +export declare function transformReply(): number | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZRANK.js b/node_modules/@node-redis/client/dist/lib/commands/ZRANK.js new file mode 100644 index 0000000000..b8b7f0a4c6 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZRANK.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, member) { + return ['ZRANK', key, member]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREM.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZREM.d.ts new file mode 100644 index 0000000000..9b4cae1cd3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREM.d.ts @@ -0,0 +1,4 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, member: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREM.js b/node_modules/@node-redis/client/dist/lib/commands/ZREM.js new file mode 100644 index 0000000000..fc00be08d0 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREM.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, member) { + return (0, generic_transformers_1.pushVerdictArguments)(['ZREM', key], member); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYLEX.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYLEX.d.ts new file mode 100644 index 0000000000..da61ed51ea --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYLEX.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, min: string, max: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYLEX.js b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYLEX.js new file mode 100644 index 0000000000..8c9932a55e --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYLEX.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, min, max) { + return ['ZREMRANGEBYLEX', key, min, max]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYRANK.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYRANK.d.ts new file mode 100644 index 0000000000..16bbeddeda --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYRANK.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, start: number, stop: number): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYRANK.js b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYRANK.js new file mode 100644 index 0000000000..a139d01609 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYRANK.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, start, stop) { + return ['ZREMRANGEBYRANK', key, start.toString(), stop.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYSCORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYSCORE.d.ts new file mode 100644 index 0000000000..be83ef04b3 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYSCORE.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, min: number, max: number): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYSCORE.js b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYSCORE.js new file mode 100644 index 0000000000..d764196329 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREMRANGEBYSCORE.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, min, max) { + return ['ZREMRANGEBYSCORE', key, min.toString(), max.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREVRANK.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZREVRANK.d.ts new file mode 100644 index 0000000000..0300fd9b51 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREVRANK.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, member: string): Array; +export declare function transformReply(): number | null; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZREVRANK.js b/node_modules/@node-redis/client/dist/lib/commands/ZREVRANK.js new file mode 100644 index 0000000000..e111248483 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZREVRANK.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, member) { + return ['ZREVRANK', key, member]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZSCAN.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZSCAN.d.ts new file mode 100644 index 0000000000..46ac848d0d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZSCAN.d.ts @@ -0,0 +1,10 @@ +import { ScanOptions, ZMember } from './generic-transformers'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, cursor: number, options?: ScanOptions): Array; +interface ZScanReply { + cursor: number; + members: Array; +} +export declare function transformReply([cursor, rawMembers]: [string, Array]): ZScanReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZSCAN.js b/node_modules/@node-redis/client/dist/lib/commands/ZSCAN.js new file mode 100644 index 0000000000..0fa50f6e57 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZSCAN.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, cursor, options) { + return (0, generic_transformers_1.pushScanArguments)([ + 'ZSCAN', + key + ], cursor, options); +} +exports.transformArguments = transformArguments; +function transformReply([cursor, rawMembers]) { + const parsedMembers = []; + for (let i = 0; i < rawMembers.length; i += 2) { + parsedMembers.push({ + value: rawMembers[i], + score: (0, generic_transformers_1.transformReplyNumberInfinity)(rawMembers[i + 1]) + }); + } + return { + cursor: Number(cursor), + members: parsedMembers + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZSCORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZSCORE.d.ts new file mode 100644 index 0000000000..b74d3ff10d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZSCORE.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, member: string): Array; +export { transformReplyNumberInfinityNull as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZSCORE.js b/node_modules/@node-redis/client/dist/lib/commands/ZSCORE.js new file mode 100644 index 0000000000..8d124bc188 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZSCORE.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, member) { + return ['ZSCORE', key, member]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyNumberInfinityNull; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZUNION.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZUNION.d.ts new file mode 100644 index 0000000000..a38c725613 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZUNION.d.ts @@ -0,0 +1,10 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 2; +export declare const IS_READ_ONLY = true; +interface ZUnionOptions { + WEIGHTS?: Array; + AGGREGATE?: 'SUM' | 'MIN' | 'MAX'; +} +export declare function transformArguments(keys: Array | string, options?: ZUnionOptions): RedisCommandArguments; +export declare function transformReply(): Array; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZUNION.js b/node_modules/@node-redis/client/dist/lib/commands/ZUNION.js new file mode 100644 index 0000000000..7d70e13615 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZUNION.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 2; +exports.IS_READ_ONLY = true; +function transformArguments(keys, options) { + const args = (0, generic_transformers_1.pushVerdictArgument)(['ZUNION'], keys); + if (options === null || options === void 0 ? void 0 : options.WEIGHTS) { + args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString())); + } + if (options === null || options === void 0 ? void 0 : options.AGGREGATE) { + args.push('AGGREGATE', options.AGGREGATE); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZUNIONSTORE.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZUNIONSTORE.d.ts new file mode 100644 index 0000000000..938ae358a4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZUNIONSTORE.d.ts @@ -0,0 +1,9 @@ +import { RedisCommandArguments } from '.'; +export declare const FIRST_KEY_INDEX = 1; +interface ZUnionOptions { + WEIGHTS?: Array; + AGGREGATE?: 'SUM' | 'MIN' | 'MAX'; +} +export declare function transformArguments(destination: string, keys: Array | string, options?: ZUnionOptions): RedisCommandArguments; +export declare function transformReply(): number; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZUNIONSTORE.js b/node_modules/@node-redis/client/dist/lib/commands/ZUNIONSTORE.js new file mode 100644 index 0000000000..9ad434aaff --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZUNIONSTORE.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("./generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(destination, keys, options) { + const args = (0, generic_transformers_1.pushVerdictArgument)(['ZUNIONSTORE', destination], keys); + if (options === null || options === void 0 ? void 0 : options.WEIGHTS) { + args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString())); + } + if (options === null || options === void 0 ? void 0 : options.AGGREGATE) { + args.push('AGGREGATE', options.AGGREGATE); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZUNION_WITHSCORES.d.ts b/node_modules/@node-redis/client/dist/lib/commands/ZUNION_WITHSCORES.d.ts new file mode 100644 index 0000000000..621305fe04 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZUNION_WITHSCORES.d.ts @@ -0,0 +1,5 @@ +import { RedisCommandArguments } from '.'; +import { transformArguments as transformZUnionArguments } from './ZUNION'; +export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZUNION'; +export declare function transformArguments(...args: Parameters): RedisCommandArguments; +export { transformReplySortedSetWithScores as transformReply } from './generic-transformers'; diff --git a/node_modules/@node-redis/client/dist/lib/commands/ZUNION_WITHSCORES.js b/node_modules/@node-redis/client/dist/lib/commands/ZUNION_WITHSCORES.js new file mode 100644 index 0000000000..bb82dba9fb --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/ZUNION_WITHSCORES.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const ZUNION_1 = require("./ZUNION"); +var ZUNION_2 = require("./ZUNION"); +Object.defineProperty(exports, "FIRST_KEY_INDEX", { enumerable: true, get: function () { return ZUNION_2.FIRST_KEY_INDEX; } }); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return ZUNION_2.IS_READ_ONLY; } }); +function transformArguments(...args) { + return [ + ...(0, ZUNION_1.transformArguments)(...args), + 'WITHSCORES' + ]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("./generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplySortedSetWithScores; } }); diff --git a/node_modules/@node-redis/client/dist/lib/commands/generic-transformers.d.ts b/node_modules/@node-redis/client/dist/lib/commands/generic-transformers.d.ts new file mode 100644 index 0000000000..08b799c3ba --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/generic-transformers.d.ts @@ -0,0 +1,149 @@ +/// +import { RedisCommandArguments } from '.'; +export declare function transformReplyBoolean(reply: number): boolean; +export declare function transformReplyBooleanArray(reply: Array): Array; +export declare type BitValue = 0 | 1; +export interface ScanOptions { + MATCH?: string; + COUNT?: number; +} +export declare function pushScanArguments(args: Array, cursor: number, options?: ScanOptions): Array; +export declare function transformReplyNumberInfinity(reply: string): number; +export declare function transformReplyNumberInfinityArray(reply: Array): Array; +export declare function transformReplyNumberInfinityNull(reply: string | null): number | null; +export declare function transformReplyNumberInfinityNullArray(reply: Array): Array; +export declare function transformArgumentNumberInfinity(num: number): string; +export declare function transformArgumentStringNumberInfinity(num: string | number): string; +export interface TuplesObject { + [field: string]: string; +} +export declare function transformReplyTuples(reply: Array): TuplesObject; +export interface StreamMessageReply { + id: string; + message: TuplesObject; +} +export declare type StreamMessagesReply = Array; +export declare function transformReplyStreamMessages(reply: Array): StreamMessagesReply; +export declare type StreamsMessagesReply = Array<{ + name: string; + messages: StreamMessagesReply; +}> | null; +export declare function transformReplyStreamsMessages(reply: Array | null): StreamsMessagesReply | null; +export interface ZMember { + score: number; + value: string; +} +export declare function transformReplySortedSetWithScores(reply: Array): Array; +declare type GeoCountArgument = number | { + value: number; + ANY?: true; +}; +export declare function pushGeoCountArgument(args: Array, count: GeoCountArgument | undefined): Array; +export declare type GeoUnits = 'm' | 'km' | 'mi' | 'ft'; +export interface GeoCoordinates { + longitude: string | number; + latitude: string | number; +} +declare type GeoSearchFromMember = string; +export declare type GeoSearchFrom = GeoSearchFromMember | GeoCoordinates; +interface GeoSearchByRadius { + radius: number; + unit: GeoUnits; +} +interface GeoSearchByBox { + width: number; + height: number; + unit: GeoUnits; +} +export declare type GeoSearchBy = GeoSearchByRadius | GeoSearchByBox; +export interface GeoSearchOptions { + SORT?: 'ASC' | 'DESC'; + COUNT?: GeoCountArgument; +} +export declare function pushGeoSearchArguments(args: Array, key: string, from: GeoSearchFrom, by: GeoSearchBy, options?: GeoSearchOptions): Array; +export declare enum GeoReplyWith { + DISTANCE = "WITHDIST", + HASH = "WITHHASH", + COORDINATES = "WITHCOORD" +} +export interface GeoReplyWithMember { + member: string; + distance?: number; + hash?: string; + coordinates?: { + longitude: string; + latitude: string; + }; +} +export declare function transformGeoMembersWithReply(reply: Array>, replyWith: Array): Array; +export declare function transformEXAT(EXAT: number | Date): string; +export declare function transformPXAT(PXAT: number | Date): string; +export interface EvalOptions { + keys?: Array; + arguments?: Array; +} +export declare function pushEvalArguments(args: Array, options?: EvalOptions): Array; +export declare type StringTuplesArguments = Array<[string, string]> | Array | Record; +export declare function pushStringTuplesArguments(args: Array, tuples: StringTuplesArguments): Array; +export declare function pushVerdictArguments(args: RedisCommandArguments, value: string | Buffer | Array): RedisCommandArguments; +export declare function pushVerdictArgument(args: RedisCommandArguments, value: string | Array): RedisCommandArguments; +export declare function pushOptionalVerdictArgument(args: RedisCommandArguments, name: string, value: undefined | string | Array): RedisCommandArguments; +export declare enum CommandFlags { + WRITE = "write", + READONLY = "readonly", + DENYOOM = "denyoom", + ADMIN = "admin", + PUBSUB = "pubsub", + NOSCRIPT = "noscript", + RANDOM = "random", + SORT_FOR_SCRIPT = "sort_for_script", + LOADING = "loading", + STALE = "stale", + SKIP_MONITOR = "skip_monitor", + ASKING = "asking", + FAST = "fast", + MOVABLEKEYS = "movablekeys" +} +export declare enum CommandCategories { + KEYSPACE = "@keyspace", + READ = "@read", + WRITE = "@write", + SET = "@set", + SORTEDSET = "@sortedset", + LIST = "@list", + HASH = "@hash", + STRING = "@string", + BITMAP = "@bitmap", + HYPERLOGLOG = "@hyperloglog", + GEO = "@geo", + STREAM = "@stream", + PUBSUB = "@pubsub", + ADMIN = "@admin", + FAST = "@fast", + SLOW = "@slow", + BLOCKING = "@blocking", + DANGEROUS = "@dangerous", + CONNECTION = "@connection", + TRANSACTION = "@transaction", + SCRIPTING = "@scripting" +} +export declare type CommandRawReply = [ + name: string, + arity: number, + flags: Array, + firstKeyIndex: number, + lastKeyIndex: number, + step: number, + categories: Array +]; +export declare type CommandReply = { + name: string; + arity: number; + flags: Set; + firstKeyIndex: number; + lastKeyIndex: number; + step: number; + categories: Set; +}; +export declare function transformCommandReply(this: void, [name, arity, flags, firstKeyIndex, lastKeyIndex, step, categories]: CommandRawReply): CommandReply; +export {}; diff --git a/node_modules/@node-redis/client/dist/lib/commands/generic-transformers.js b/node_modules/@node-redis/client/dist/lib/commands/generic-transformers.js new file mode 100644 index 0000000000..3b0664a339 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/generic-transformers.js @@ -0,0 +1,282 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformCommandReply = exports.CommandCategories = exports.CommandFlags = exports.pushOptionalVerdictArgument = exports.pushVerdictArgument = exports.pushVerdictArguments = exports.pushStringTuplesArguments = exports.pushEvalArguments = exports.transformPXAT = exports.transformEXAT = exports.transformGeoMembersWithReply = exports.GeoReplyWith = exports.pushGeoSearchArguments = exports.pushGeoCountArgument = exports.transformReplySortedSetWithScores = exports.transformReplyStreamsMessages = exports.transformReplyStreamMessages = exports.transformReplyTuples = exports.transformArgumentStringNumberInfinity = exports.transformArgumentNumberInfinity = exports.transformReplyNumberInfinityNullArray = exports.transformReplyNumberInfinityNull = exports.transformReplyNumberInfinityArray = exports.transformReplyNumberInfinity = exports.pushScanArguments = exports.transformReplyBooleanArray = exports.transformReplyBoolean = void 0; +function transformReplyBoolean(reply) { + return reply === 1; +} +exports.transformReplyBoolean = transformReplyBoolean; +function transformReplyBooleanArray(reply) { + return reply.map(transformReplyBoolean); +} +exports.transformReplyBooleanArray = transformReplyBooleanArray; +function pushScanArguments(args, cursor, options) { + args.push(cursor.toString()); + if (options === null || options === void 0 ? void 0 : options.MATCH) { + args.push('MATCH', options.MATCH); + } + if (options === null || options === void 0 ? void 0 : options.COUNT) { + args.push('COUNT', options.COUNT.toString()); + } + return args; +} +exports.pushScanArguments = pushScanArguments; +function transformReplyNumberInfinity(reply) { + switch (reply) { + case '+inf': + return Infinity; + case '-inf': + return -Infinity; + default: + return Number(reply); + } +} +exports.transformReplyNumberInfinity = transformReplyNumberInfinity; +function transformReplyNumberInfinityArray(reply) { + return reply.map(transformReplyNumberInfinity); +} +exports.transformReplyNumberInfinityArray = transformReplyNumberInfinityArray; +function transformReplyNumberInfinityNull(reply) { + if (reply === null) + return null; + return transformReplyNumberInfinity(reply); +} +exports.transformReplyNumberInfinityNull = transformReplyNumberInfinityNull; +function transformReplyNumberInfinityNullArray(reply) { + return reply.map(transformReplyNumberInfinityNull); +} +exports.transformReplyNumberInfinityNullArray = transformReplyNumberInfinityNullArray; +function transformArgumentNumberInfinity(num) { + switch (num) { + case Infinity: + return '+inf'; + case -Infinity: + return '-inf'; + default: + return num.toString(); + } +} +exports.transformArgumentNumberInfinity = transformArgumentNumberInfinity; +function transformArgumentStringNumberInfinity(num) { + if (typeof num === 'string') + return num; + return transformArgumentNumberInfinity(num); +} +exports.transformArgumentStringNumberInfinity = transformArgumentStringNumberInfinity; +function transformReplyTuples(reply) { + const message = Object.create(null); + for (let i = 0; i < reply.length; i += 2) { + message[reply[i]] = reply[i + 1]; + } + return message; +} +exports.transformReplyTuples = transformReplyTuples; +function transformReplyStreamMessages(reply) { + const messages = []; + for (const [id, message] of reply) { + messages.push({ + id, + message: transformReplyTuples(message) + }); + } + return messages; +} +exports.transformReplyStreamMessages = transformReplyStreamMessages; +function transformReplyStreamsMessages(reply) { + if (reply === null) + return null; + return reply.map(([name, rawMessages]) => ({ + name, + messages: transformReplyStreamMessages(rawMessages) + })); +} +exports.transformReplyStreamsMessages = transformReplyStreamsMessages; +function transformReplySortedSetWithScores(reply) { + const members = []; + for (let i = 0; i < reply.length; i += 2) { + members.push({ + value: reply[i], + score: transformReplyNumberInfinity(reply[i + 1]) + }); + } + return members; +} +exports.transformReplySortedSetWithScores = transformReplySortedSetWithScores; +function pushGeoCountArgument(args, count) { + if (typeof count === 'number') { + args.push('COUNT', count.toString()); + } + else if (count) { + args.push('COUNT', count.value.toString()); + if (count.ANY) { + args.push('ANY'); + } + } + return args; +} +exports.pushGeoCountArgument = pushGeoCountArgument; +function pushGeoSearchArguments(args, key, from, by, options) { + args.push(key); + if (typeof from === 'string') { + args.push('FROMMEMBER', from); + } + else { + args.push('FROMLONLAT', from.longitude.toString(), from.latitude.toString()); + } + if ('radius' in by) { + args.push('BYRADIUS', by.radius.toString()); + } + else { + args.push('BYBOX', by.width.toString(), by.height.toString()); + } + args.push(by.unit); + if (options === null || options === void 0 ? void 0 : options.SORT) { + args.push(options.SORT); + } + pushGeoCountArgument(args, options === null || options === void 0 ? void 0 : options.COUNT); + return args; +} +exports.pushGeoSearchArguments = pushGeoSearchArguments; +var GeoReplyWith; +(function (GeoReplyWith) { + GeoReplyWith["DISTANCE"] = "WITHDIST"; + GeoReplyWith["HASH"] = "WITHHASH"; + GeoReplyWith["COORDINATES"] = "WITHCOORD"; +})(GeoReplyWith = exports.GeoReplyWith || (exports.GeoReplyWith = {})); +function transformGeoMembersWithReply(reply, replyWith) { + const replyWithSet = new Set(replyWith); + let index = 0; + const distanceIndex = replyWithSet.has(GeoReplyWith.DISTANCE) && ++index, hashIndex = replyWithSet.has(GeoReplyWith.HASH) && ++index, coordinatesIndex = replyWithSet.has(GeoReplyWith.COORDINATES) && ++index; + return reply.map(member => { + const transformedMember = { + member: member[0] + }; + if (distanceIndex) { + transformedMember.distance = member[distanceIndex]; + } + if (hashIndex) { + transformedMember.hash = member[hashIndex]; + } + if (coordinatesIndex) { + const [longitude, latitude] = member[coordinatesIndex]; + transformedMember.coordinates = { + longitude, + latitude + }; + } + return transformedMember; + }); +} +exports.transformGeoMembersWithReply = transformGeoMembersWithReply; +function transformEXAT(EXAT) { + return (typeof EXAT === 'number' ? EXAT : Math.floor(EXAT.getTime() / 1000)).toString(); +} +exports.transformEXAT = transformEXAT; +function transformPXAT(PXAT) { + return (typeof PXAT === 'number' ? PXAT : PXAT.getTime()).toString(); +} +exports.transformPXAT = transformPXAT; +function pushEvalArguments(args, options) { + if (options === null || options === void 0 ? void 0 : options.keys) { + args.push(options.keys.length.toString(), ...options.keys); + } + else { + args.push('0'); + } + if (options === null || options === void 0 ? void 0 : options.arguments) { + args.push(...options.arguments); + } + return args; +} +exports.pushEvalArguments = pushEvalArguments; +function pushStringTuplesArguments(args, tuples) { + if (Array.isArray(tuples)) { + args.push(...tuples.flat()); + } + else { + for (const key of Object.keys(tuples)) { + args.push(key, tuples[key]); + } + } + return args; +} +exports.pushStringTuplesArguments = pushStringTuplesArguments; +function pushVerdictArguments(args, value) { + if (Array.isArray(value)) { + args.push(...value); + } + else { + args.push(value); + } + return args; +} +exports.pushVerdictArguments = pushVerdictArguments; +function pushVerdictArgument(args, value) { + if (typeof value === 'string') { + args.push('1', value); + } + else { + args.push(value.length.toString(), ...value); + } + return args; +} +exports.pushVerdictArgument = pushVerdictArgument; +function pushOptionalVerdictArgument(args, name, value) { + if (value === undefined) + return args; + args.push(name); + return pushVerdictArgument(args, value); +} +exports.pushOptionalVerdictArgument = pushOptionalVerdictArgument; +var CommandFlags; +(function (CommandFlags) { + CommandFlags["WRITE"] = "write"; + CommandFlags["READONLY"] = "readonly"; + CommandFlags["DENYOOM"] = "denyoom"; + CommandFlags["ADMIN"] = "admin"; + CommandFlags["PUBSUB"] = "pubsub"; + CommandFlags["NOSCRIPT"] = "noscript"; + CommandFlags["RANDOM"] = "random"; + CommandFlags["SORT_FOR_SCRIPT"] = "sort_for_script"; + CommandFlags["LOADING"] = "loading"; + CommandFlags["STALE"] = "stale"; + CommandFlags["SKIP_MONITOR"] = "skip_monitor"; + CommandFlags["ASKING"] = "asking"; + CommandFlags["FAST"] = "fast"; + CommandFlags["MOVABLEKEYS"] = "movablekeys"; // keys have no pre-determined position. You must discover keys yourself. +})(CommandFlags = exports.CommandFlags || (exports.CommandFlags = {})); +var CommandCategories; +(function (CommandCategories) { + CommandCategories["KEYSPACE"] = "@keyspace"; + CommandCategories["READ"] = "@read"; + CommandCategories["WRITE"] = "@write"; + CommandCategories["SET"] = "@set"; + CommandCategories["SORTEDSET"] = "@sortedset"; + CommandCategories["LIST"] = "@list"; + CommandCategories["HASH"] = "@hash"; + CommandCategories["STRING"] = "@string"; + CommandCategories["BITMAP"] = "@bitmap"; + CommandCategories["HYPERLOGLOG"] = "@hyperloglog"; + CommandCategories["GEO"] = "@geo"; + CommandCategories["STREAM"] = "@stream"; + CommandCategories["PUBSUB"] = "@pubsub"; + CommandCategories["ADMIN"] = "@admin"; + CommandCategories["FAST"] = "@fast"; + CommandCategories["SLOW"] = "@slow"; + CommandCategories["BLOCKING"] = "@blocking"; + CommandCategories["DANGEROUS"] = "@dangerous"; + CommandCategories["CONNECTION"] = "@connection"; + CommandCategories["TRANSACTION"] = "@transaction"; + CommandCategories["SCRIPTING"] = "@scripting"; +})(CommandCategories = exports.CommandCategories || (exports.CommandCategories = {})); +function transformCommandReply([name, arity, flags, firstKeyIndex, lastKeyIndex, step, categories]) { + return { + name, + arity, + flags: new Set(flags), + firstKeyIndex, + lastKeyIndex, + step, + categories: new Set(categories) + }; +} +exports.transformCommandReply = transformCommandReply; diff --git a/node_modules/@node-redis/client/dist/lib/commands/index.d.ts b/node_modules/@node-redis/client/dist/lib/commands/index.d.ts new file mode 100644 index 0000000000..681ca5e9c9 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/index.d.ts @@ -0,0 +1,31 @@ +/// +import { RedisScriptConfig, SHA1 } from '../lua-script'; +export declare type RedisCommandRawReply = string | number | Buffer | Array | null | undefined; +export declare type RedisCommandArguments = Array & { + preserve?: unknown; +}; +export interface RedisCommand { + FIRST_KEY_INDEX?: number | ((...args: Array) => string); + IS_READ_ONLY?: boolean; + transformArguments(this: void, ...args: Array): RedisCommandArguments; + BUFFER_MODE?: boolean; + transformReply?(this: void, reply: RedisCommandRawReply, preserved?: unknown): any; +} +export declare type RedisCommandReply = C['transformReply'] extends (...args: any) => infer T ? T : RedisCommandRawReply; +export interface RedisCommands { + [command: string]: RedisCommand; +} +export interface RedisModule { + [command: string]: RedisCommand; +} +export interface RedisModules { + [module: string]: RedisModule; +} +export declare type RedisScript = RedisScriptConfig & SHA1; +export interface RedisScripts { + [script: string]: RedisScript; +} +export interface RedisPlugins { + modules?: M; + scripts?: S; +} diff --git a/node_modules/@node-redis/client/dist/lib/commands/index.js b/node_modules/@node-redis/client/dist/lib/commands/index.js new file mode 100644 index 0000000000..c8ad2e549b --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/commands/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@node-redis/client/dist/lib/errors.d.ts b/node_modules/@node-redis/client/dist/lib/errors.d.ts new file mode 100644 index 0000000000..b1e6a3e153 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/errors.d.ts @@ -0,0 +1,18 @@ +export declare class AbortError extends Error { + constructor(); +} +export declare class WatchError extends Error { + constructor(); +} +export declare class ConnectionTimeoutError extends Error { + constructor(); +} +export declare class ClientClosedError extends Error { + constructor(); +} +export declare class DisconnectsClientError extends Error { + constructor(); +} +export declare class SocketClosedUnexpectedlyError extends Error { + constructor(); +} diff --git a/node_modules/@node-redis/client/dist/lib/errors.js b/node_modules/@node-redis/client/dist/lib/errors.js new file mode 100644 index 0000000000..511dc9297a --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/errors.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SocketClosedUnexpectedlyError = exports.DisconnectsClientError = exports.ClientClosedError = exports.ConnectionTimeoutError = exports.WatchError = exports.AbortError = void 0; +class AbortError extends Error { + constructor() { + super('The command was aborted'); + } +} +exports.AbortError = AbortError; +class WatchError extends Error { + constructor() { + super('One (or more) of the watched keys has been changed'); + } +} +exports.WatchError = WatchError; +class ConnectionTimeoutError extends Error { + constructor() { + super('Connection timeout'); + } +} +exports.ConnectionTimeoutError = ConnectionTimeoutError; +class ClientClosedError extends Error { + constructor() { + super('The client is closed'); + } +} +exports.ClientClosedError = ClientClosedError; +class DisconnectsClientError extends Error { + constructor() { + super('Disconnects client'); + } +} +exports.DisconnectsClientError = DisconnectsClientError; +class SocketClosedUnexpectedlyError extends Error { + constructor() { + super('Socket closed unexpectedly'); + } +} +exports.SocketClosedUnexpectedlyError = SocketClosedUnexpectedlyError; diff --git a/node_modules/@node-redis/client/dist/lib/lua-script.d.ts b/node_modules/@node-redis/client/dist/lib/lua-script.d.ts new file mode 100644 index 0000000000..8ccae52f84 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/lua-script.d.ts @@ -0,0 +1,10 @@ +import { RedisCommand } from './commands'; +export interface RedisScriptConfig extends RedisCommand { + SCRIPT: string; + NUMBER_OF_KEYS: number; +} +export interface SHA1 { + SHA1: string; +} +export declare function defineScript(script: RedisScriptConfig): typeof script & SHA1; +export declare function scriptSha1(script: string): string; diff --git a/node_modules/@node-redis/client/dist/lib/lua-script.js b/node_modules/@node-redis/client/dist/lib/lua-script.js new file mode 100644 index 0000000000..3a5d94f42d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/lua-script.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.scriptSha1 = exports.defineScript = void 0; +const crypto_1 = require("crypto"); +function defineScript(script) { + return { + ...script, + SHA1: scriptSha1(script.SCRIPT) + }; +} +exports.defineScript = defineScript; +function scriptSha1(script) { + return (0, crypto_1.createHash)('sha1').update(script).digest('hex'); +} +exports.scriptSha1 = scriptSha1; diff --git a/node_modules/@node-redis/client/dist/lib/multi-command.d.ts b/node_modules/@node-redis/client/dist/lib/multi-command.d.ts new file mode 100644 index 0000000000..4218781098 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/multi-command.d.ts @@ -0,0 +1,15 @@ +import { RedisCommand, RedisCommandArguments, RedisCommandRawReply, RedisScript } from './commands'; +export interface RedisMultiQueuedCommand { + args: RedisCommandArguments; + transformReply?: RedisCommand['transformReply']; +} +export default class RedisMultiCommand { + static generateChainId(): symbol; + readonly queue: Array; + readonly scriptsInUse: Set; + addCommand(args: RedisCommandArguments, transformReply?: RedisCommand['transformReply']): void; + addScript(script: RedisScript, args: Array): RedisCommandArguments; + exec(): undefined | Array; + handleExecReplies(rawReplies: Array): Array; + transformReplies(rawReplies: Array): Array; +} diff --git a/node_modules/@node-redis/client/dist/lib/multi-command.js b/node_modules/@node-redis/client/dist/lib/multi-command.js new file mode 100644 index 0000000000..36213f549d --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/multi-command.js @@ -0,0 +1,70 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const errors_1 = require("./errors"); +class RedisMultiCommand { + constructor() { + Object.defineProperty(this, "queue", { + enumerable: true, + configurable: true, + writable: true, + value: [] + }); + Object.defineProperty(this, "scriptsInUse", { + enumerable: true, + configurable: true, + writable: true, + value: new Set() + }); + } + static generateChainId() { + return Symbol('RedisMultiCommand Chain Id'); + } + addCommand(args, transformReply) { + this.queue.push({ + args, + transformReply + }); + } + addScript(script, args) { + const transformedArguments = []; + if (this.scriptsInUse.has(script.SHA1)) { + transformedArguments.push('EVALSHA', script.SHA1); + } + else { + this.scriptsInUse.add(script.SHA1); + transformedArguments.push('EVAL', script.SCRIPT); + } + transformedArguments.push(script.NUMBER_OF_KEYS.toString()); + const scriptArguments = script.transformArguments(...args); + transformedArguments.push(...scriptArguments); + if (scriptArguments.preserve) { + transformedArguments.preserve = scriptArguments.preserve; + } + this.addCommand(transformedArguments, script.transformReply); + return transformedArguments; + } + exec() { + if (!this.queue.length) { + return; + } + return [ + { args: ['MULTI'] }, + ...this.queue, + { args: ['EXEC'] } + ]; + } + handleExecReplies(rawReplies) { + const execReply = rawReplies[rawReplies.length - 1]; + if (execReply === null) { + throw new errors_1.WatchError(); + } + return this.transformReplies(execReply); + } + transformReplies(rawReplies) { + return rawReplies.map((reply, i) => { + const { transformReply, args } = this.queue[i]; + return transformReply ? transformReply(reply, args.preserve) : reply; + }); + } +} +exports.default = RedisMultiCommand; diff --git a/node_modules/@node-redis/client/dist/lib/utils.d.ts b/node_modules/@node-redis/client/dist/lib/utils.d.ts new file mode 100644 index 0000000000..c930f9d8c4 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/utils.d.ts @@ -0,0 +1 @@ +export declare function promiseTimeout(ms: number): Promise; diff --git a/node_modules/@node-redis/client/dist/lib/utils.js b/node_modules/@node-redis/client/dist/lib/utils.js new file mode 100644 index 0000000000..013763c295 --- /dev/null +++ b/node_modules/@node-redis/client/dist/lib/utils.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.promiseTimeout = void 0; +function promiseTimeout(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} +exports.promiseTimeout = promiseTimeout; diff --git a/node_modules/@node-redis/client/package.json b/node_modules/@node-redis/client/package.json new file mode 100644 index 0000000000..d697d200be --- /dev/null +++ b/node_modules/@node-redis/client/package.json @@ -0,0 +1,50 @@ +{ + "name": "@node-redis/client", + "version": "1.0.0", + "license": "MIT", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "test": "nyc -r text-summary -r lcov mocha -r source-map-support/register -r ts-node/register './lib/**/*.spec.ts'", + "build": "tsc", + "lint": "eslint ./*.ts ./lib/**/*.ts", + "documentation": "typedoc" + }, + "dependencies": { + "cluster-key-slot": "1.1.0", + "generic-pool": "3.8.2", + "redis-parser": "3.0.0", + "yallist": "4.0.0" + }, + "devDependencies": { + "@istanbuljs/nyc-config-typescript": "^1.0.1", + "@node-redis/test-utils": "*", + "@types/node": "^16.11.10", + "@types/redis-parser": "^3.0.0", + "@types/sinon": "^10.0.6", + "@types/yallist": "^4.0.1", + "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/parser": "^5.4.0", + "eslint": "^8.3.0", + "nyc": "^15.1.0", + "release-it": "^14.11.8", + "sinon": "^12.0.1", + "source-map-support": "^0.5.21", + "ts-node": "^10.4.0", + "typedoc": "^0.22.10", + "typedoc-github-wiki-theme": "^0.6.0", + "typedoc-plugin-markdown": "^3.11.7", + "typescript": "^4.5.2" + }, + "engines": { + "node": ">=12" + }, + "repository": { + "type": "git", + "url": "git://github.com/redis/node-redis.git" + }, + "bugs": { + "url": "https://github.com/redis/node-redis/issues" + }, + "homepage": "https://github.com/redis/node-redis/tree/master/packages/client" +} diff --git a/node_modules/@node-redis/json/README.md b/node_modules/@node-redis/json/README.md new file mode 100644 index 0000000000..5b6d5ba8ce --- /dev/null +++ b/node_modules/@node-redis/json/README.md @@ -0,0 +1,80 @@ +# @node-redis/json + +This package provides support for the [RedisJSON](https://redisjson.io) module, which adds JSON as a native data type to Redis. It extends the [Node Redis client](https://github.com/redis/node-redis) to include functions for each of the RedisJSON commands. + +To use these extra commands, your Redis server must have the RedisJSON module installed. + +## Usage + +For a complete example, see [`managing-json.js`](https://github.com/redis/node-redis/blob/master/examples/managing-json.js) in the Node Redis examples folder. + +### Storing JSON Documents in Redis + +The [`JSON.SET`](https://oss.redis.com/redisjson/commands/#jsonset) command stores a JSON value at a given JSON Path in a Redis key. + +Here, we'll store a JSON document in the root of the Redis key "`mydoc`": + +```javascript +import { createClient } from 'redis'; + +... +await client.json.set('noderedis:jsondata', '$', { + name: 'Roberta McDonald', + pets: [ + { + name: 'Rex', + species: 'dog', + age: 3, + isMammal: true + }, + { + name: 'Goldie', + species: 'fish', + age: 2, + isMammal: false + } + ] +}); +``` + +For more information about RedisJSON's path syntax, [check out the documentation](https://oss.redis.com/redisjson/path/). + +### Retrieving JSON Documents from Redis + +With RedisJSON, we can retrieve all or part(s) of a JSON document using the [`JSON.GET`]() command and one or more JSON Paths. Let's get the name and age of one of the pets: + +```javascript +const results = await client.json.get('noderedis:jsondata', { + path: [ + '.pets[1].name', + '.pets[1].age' + ] +}); +``` + +`results` will contain the following: + +```javascript + { '.pets[1].name': 'Goldie', '.pets[1].age': 2 } +``` + +### Performing Atomic Updates on JSON Documents Stored in Redis + +RedisJSON includes commands that can atomically update values in a JSON document, in place in Redis without having to first retrieve the entire document. + +Using the [`JSON.NUMINCRBY`](https://oss.redis.com/redisjson/commands/#jsonnumincrby) command, we can update the age of one of the pets like this: + +```javascript +await client.json.numIncrBy('noderedis:jsondata', '.pets[1].age', 1); +``` + +And we can add a new object to the pets array with the [`JSON.ARRAPPEND`](https://oss.redis.com/redisjson/commands/#jsonarrappend) command: + +```javascript + await client.json.arrAppend('noderedis:jsondata', '.pets', { + name: 'Robin', + species: 'bird', + age: 1, + isMammal: false + }); +``` diff --git a/node_modules/@node-redis/json/dist/commands/ARRAPPEND.d.ts b/node_modules/@node-redis/json/dist/commands/ARRAPPEND.d.ts new file mode 100644 index 0000000000..c13272a77a --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRAPPEND.d.ts @@ -0,0 +1,4 @@ +import { RedisJSON } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path: string, ...jsons: Array): Array; +export declare function transformReply(): number | Array; diff --git a/node_modules/@node-redis/json/dist/commands/ARRAPPEND.js b/node_modules/@node-redis/json/dist/commands/ARRAPPEND.js new file mode 100644 index 0000000000..cc178b68a9 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRAPPEND.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const _1 = require("."); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path, ...jsons) { + const args = ['JSON.ARRAPPEND', key, path]; + for (const json of jsons) { + args.push((0, _1.transformRedisJsonArgument)(json)); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/ARRAPPEND.spec.d.ts b/node_modules/@node-redis/json/dist/commands/ARRAPPEND.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRAPPEND.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/ARRAPPEND.spec.js b/node_modules/@node-redis/json/dist/commands/ARRAPPEND.spec.js new file mode 100644 index 0000000000..af16ca9d3a --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRAPPEND.spec.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const ARRAPPEND_1 = require("./ARRAPPEND"); +describe('ARRAPPEND', () => { + describe('transformArguments', () => { + it('single JSON', () => { + assert_1.strict.deepEqual((0, ARRAPPEND_1.transformArguments)('key', '$', 1), ['JSON.ARRAPPEND', 'key', '$', '1']); + }); + it('multiple JSONs', () => { + assert_1.strict.deepEqual((0, ARRAPPEND_1.transformArguments)('key', '$', 1, 2), ['JSON.ARRAPPEND', 'key', '$', '1', '2']); + }); + }); + test_utils_1.default.testWithClient('client.json.arrAppend', async (client) => { + await client.json.set('key', '$', []); + assert_1.strict.deepEqual(await client.json.arrAppend('key', '$', 1), [1]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/ARRINDEX.d.ts b/node_modules/@node-redis/json/dist/commands/ARRINDEX.d.ts new file mode 100644 index 0000000000..bc13f459e0 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRINDEX.d.ts @@ -0,0 +1,5 @@ +import { RedisJSON } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, path: string, json: RedisJSON, start?: number, stop?: number): Array; +export declare function transformReply(): number | Array; diff --git a/node_modules/@node-redis/json/dist/commands/ARRINDEX.js b/node_modules/@node-redis/json/dist/commands/ARRINDEX.js new file mode 100644 index 0000000000..95c9cf1868 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRINDEX.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const _1 = require("."); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, path, json, start, stop) { + const args = ['JSON.ARRINDEX', key, path, (0, _1.transformRedisJsonArgument)(json)]; + if (start !== undefined && start !== null) { + args.push(start.toString()); + if (stop !== undefined && stop !== null) { + args.push(stop.toString()); + } + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/ARRINDEX.spec.d.ts b/node_modules/@node-redis/json/dist/commands/ARRINDEX.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRINDEX.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/ARRINDEX.spec.js b/node_modules/@node-redis/json/dist/commands/ARRINDEX.spec.js new file mode 100644 index 0000000000..9a3561b04b --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRINDEX.spec.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const ARRINDEX_1 = require("./ARRINDEX"); +describe('ARRINDEX', () => { + describe('transformArguments', () => { + it('simple', () => { + assert_1.strict.deepEqual((0, ARRINDEX_1.transformArguments)('key', '$', 'json'), ['JSON.ARRINDEX', 'key', '$', '"json"']); + }); + it('with start', () => { + assert_1.strict.deepEqual((0, ARRINDEX_1.transformArguments)('key', '$', 'json', 1), ['JSON.ARRINDEX', 'key', '$', '"json"', '1']); + }); + it('with start, end', () => { + assert_1.strict.deepEqual((0, ARRINDEX_1.transformArguments)('key', '$', 'json', 1, 2), ['JSON.ARRINDEX', 'key', '$', '"json"', '1', '2']); + }); + }); + test_utils_1.default.testWithClient('client.json.arrIndex', async (client) => { + await client.json.set('key', '$', []); + assert_1.strict.deepEqual(await client.json.arrIndex('key', '$', 'json'), [-1]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/ARRINSERT.d.ts b/node_modules/@node-redis/json/dist/commands/ARRINSERT.d.ts new file mode 100644 index 0000000000..19f2adb5d0 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRINSERT.d.ts @@ -0,0 +1,4 @@ +import { RedisJSON } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path: string, index: number, ...jsons: Array): Array; +export declare function transformReply(): number | Array; diff --git a/node_modules/@node-redis/json/dist/commands/ARRINSERT.js b/node_modules/@node-redis/json/dist/commands/ARRINSERT.js new file mode 100644 index 0000000000..540c481019 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRINSERT.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const _1 = require("."); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path, index, ...jsons) { + const args = ['JSON.ARRINSERT', key, path, index.toString()]; + for (const json of jsons) { + args.push((0, _1.transformRedisJsonArgument)(json)); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/ARRINSERT.spec.d.ts b/node_modules/@node-redis/json/dist/commands/ARRINSERT.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRINSERT.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/ARRINSERT.spec.js b/node_modules/@node-redis/json/dist/commands/ARRINSERT.spec.js new file mode 100644 index 0000000000..e48be76e66 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRINSERT.spec.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const ARRINSERT_1 = require("./ARRINSERT"); +describe('ARRINSERT', () => { + describe('transformArguments', () => { + it('single JSON', () => { + assert_1.strict.deepEqual((0, ARRINSERT_1.transformArguments)('key', '$', 0, 'json'), ['JSON.ARRINSERT', 'key', '$', '0', '"json"']); + }); + it('multiple JSONs', () => { + assert_1.strict.deepEqual((0, ARRINSERT_1.transformArguments)('key', '$', 0, '1', '2'), ['JSON.ARRINSERT', 'key', '$', '0', '"1"', '"2"']); + }); + }); + test_utils_1.default.testWithClient('client.json.arrInsert', async (client) => { + await client.json.set('key', '$', []); + assert_1.strict.deepEqual(await client.json.arrInsert('key', '$', 0, 'json'), [1]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/ARRLEN.d.ts b/node_modules/@node-redis/json/dist/commands/ARRLEN.d.ts new file mode 100644 index 0000000000..f78020a6fa --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRLEN.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, path?: string): Array; +export declare function transformReply(): number | Array; diff --git a/node_modules/@node-redis/json/dist/commands/ARRLEN.js b/node_modules/@node-redis/json/dist/commands/ARRLEN.js new file mode 100644 index 0000000000..30a50cf967 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRLEN.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, path) { + const args = ['JSON.ARRLEN', key]; + if (path) { + args.push(path); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/ARRLEN.spec.d.ts b/node_modules/@node-redis/json/dist/commands/ARRLEN.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRLEN.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/ARRLEN.spec.js b/node_modules/@node-redis/json/dist/commands/ARRLEN.spec.js new file mode 100644 index 0000000000..8351c7d0e1 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRLEN.spec.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const ARRLEN_1 = require("./ARRLEN"); +describe('ARRLEN', () => { + describe('transformArguments', () => { + it('without path', () => { + assert_1.strict.deepEqual((0, ARRLEN_1.transformArguments)('key'), ['JSON.ARRLEN', 'key']); + }); + it('with path', () => { + assert_1.strict.deepEqual((0, ARRLEN_1.transformArguments)('key', '$'), ['JSON.ARRLEN', 'key', '$']); + }); + }); + test_utils_1.default.testWithClient('client.json.arrLen', async (client) => { + await client.json.set('key', '$', []); + assert_1.strict.deepEqual(await client.json.arrLen('key', '$'), [0]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/ARRPOP.d.ts b/node_modules/@node-redis/json/dist/commands/ARRPOP.d.ts new file mode 100644 index 0000000000..1595efebc8 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRPOP.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path?: string, index?: number): Array; +export { transformRedisJsonNullArrayNullReply as transformReply } from '.'; diff --git a/node_modules/@node-redis/json/dist/commands/ARRPOP.js b/node_modules/@node-redis/json/dist/commands/ARRPOP.js new file mode 100644 index 0000000000..12c2090adb --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRPOP.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path, index) { + const args = ['JSON.ARRPOP', key]; + if (path) { + args.push(path); + if (index !== undefined && index !== null) { + args.push(index.toString()); + } + } + return args; +} +exports.transformArguments = transformArguments; +var _1 = require("."); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return _1.transformRedisJsonNullArrayNullReply; } }); diff --git a/node_modules/@node-redis/json/dist/commands/ARRPOP.spec.d.ts b/node_modules/@node-redis/json/dist/commands/ARRPOP.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRPOP.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/ARRPOP.spec.js b/node_modules/@node-redis/json/dist/commands/ARRPOP.spec.js new file mode 100644 index 0000000000..f18ce47fc9 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRPOP.spec.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const ARRPOP_1 = require("./ARRPOP"); +describe('ARRPOP', () => { + describe('transformArguments', () => { + it('key', () => { + assert_1.strict.deepEqual((0, ARRPOP_1.transformArguments)('key'), ['JSON.ARRPOP', 'key']); + }); + it('key, path', () => { + assert_1.strict.deepEqual((0, ARRPOP_1.transformArguments)('key', '$'), ['JSON.ARRPOP', 'key', '$']); + }); + it('key, path, index', () => { + assert_1.strict.deepEqual((0, ARRPOP_1.transformArguments)('key', '$', 0), ['JSON.ARRPOP', 'key', '$', '0']); + }); + }); + test_utils_1.default.testWithClient('client.json.arrPop', async (client) => { + await client.json.set('key', '$', []); + assert_1.strict.deepEqual(await client.json.arrPop('key', '$'), [null]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/ARRTRIM.d.ts b/node_modules/@node-redis/json/dist/commands/ARRTRIM.d.ts new file mode 100644 index 0000000000..ac7d469071 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRTRIM.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path: string, start: number, stop: number): Array; +export declare function transformReply(): number | Array; diff --git a/node_modules/@node-redis/json/dist/commands/ARRTRIM.js b/node_modules/@node-redis/json/dist/commands/ARRTRIM.js new file mode 100644 index 0000000000..287a02cfd5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRTRIM.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path, start, stop) { + return ['JSON.ARRTRIM', key, path, start.toString(), stop.toString()]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/ARRTRIM.spec.d.ts b/node_modules/@node-redis/json/dist/commands/ARRTRIM.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRTRIM.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/ARRTRIM.spec.js b/node_modules/@node-redis/json/dist/commands/ARRTRIM.spec.js new file mode 100644 index 0000000000..bd33894376 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/ARRTRIM.spec.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const ARRTRIM_1 = require("./ARRTRIM"); +describe('ARRTRIM', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, ARRTRIM_1.transformArguments)('key', '$', 0, 1), ['JSON.ARRTRIM', 'key', '$', '0', '1']); + }); + test_utils_1.default.testWithClient('client.json.arrTrim', async (client) => { + await client.json.set('key', '$', []); + assert_1.strict.deepEqual(await client.json.arrTrim('key', '$', 0, 1), [0]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.d.ts b/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.d.ts new file mode 100644 index 0000000000..d9fa8ce29b --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 2; +export declare function transformArguments(key: string, path?: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.js b/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.js new file mode 100644 index 0000000000..3382bdeae1 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 2; +function transformArguments(key, path) { + const args = ['JSON.DEBUG', 'MEMORY', key]; + if (path) { + args.push(path); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.spec.d.ts b/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.spec.js b/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.spec.js new file mode 100644 index 0000000000..13e7be6e29 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/DEBUG_MEMORY.spec.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const DEBUG_MEMORY_1 = require("./DEBUG_MEMORY"); +describe('DEBUG MEMORY', () => { + describe('transformArguments', () => { + it('without path', () => { + assert_1.strict.deepEqual((0, DEBUG_MEMORY_1.transformArguments)('key'), ['JSON.DEBUG', 'MEMORY', 'key']); + }); + it('with path', () => { + assert_1.strict.deepEqual((0, DEBUG_MEMORY_1.transformArguments)('key', '$'), ['JSON.DEBUG', 'MEMORY', 'key', '$']); + }); + }); + test_utils_1.default.testWithClient('client.json.arrTrim', async (client) => { + assert_1.strict.deepEqual(await client.json.debugMemory('key', '$'), []); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/DEL.d.ts b/node_modules/@node-redis/json/dist/commands/DEL.d.ts new file mode 100644 index 0000000000..6526825063 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/DEL.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path?: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/json/dist/commands/DEL.js b/node_modules/@node-redis/json/dist/commands/DEL.js new file mode 100644 index 0000000000..4866aa8b61 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/DEL.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path) { + const args = ['JSON.DEL', key]; + if (path) { + args.push(path); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/DEL.spec.d.ts b/node_modules/@node-redis/json/dist/commands/DEL.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/DEL.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/DEL.spec.js b/node_modules/@node-redis/json/dist/commands/DEL.spec.js new file mode 100644 index 0000000000..10311cfed8 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/DEL.spec.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const DEL_1 = require("./DEL"); +describe('DEL', () => { + describe('transformArguments', () => { + it('key', () => { + assert_1.strict.deepEqual((0, DEL_1.transformArguments)('key'), ['JSON.DEL', 'key']); + }); + it('key, path', () => { + assert_1.strict.deepEqual((0, DEL_1.transformArguments)('key', '$.path'), ['JSON.DEL', 'key', '$.path']); + }); + }); + test_utils_1.default.testWithClient('client.json.del', async (client) => { + assert_1.strict.deepEqual(await client.json.del('key'), 0); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/FORGET.d.ts b/node_modules/@node-redis/json/dist/commands/FORGET.d.ts new file mode 100644 index 0000000000..6526825063 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/FORGET.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path?: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/json/dist/commands/FORGET.js b/node_modules/@node-redis/json/dist/commands/FORGET.js new file mode 100644 index 0000000000..e48d301b34 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/FORGET.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path) { + const args = ['JSON.FORGET', key]; + if (path) { + args.push(path); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/FORGET.spec.d.ts b/node_modules/@node-redis/json/dist/commands/FORGET.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/FORGET.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/FORGET.spec.js b/node_modules/@node-redis/json/dist/commands/FORGET.spec.js new file mode 100644 index 0000000000..d011093f82 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/FORGET.spec.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const FORGET_1 = require("./FORGET"); +describe('FORGET', () => { + describe('transformArguments', () => { + it('key', () => { + assert_1.strict.deepEqual((0, FORGET_1.transformArguments)('key'), ['JSON.FORGET', 'key']); + }); + it('key, path', () => { + assert_1.strict.deepEqual((0, FORGET_1.transformArguments)('key', '$.path'), ['JSON.FORGET', 'key', '$.path']); + }); + }); + test_utils_1.default.testWithClient('client.json.forget', async (client) => { + assert_1.strict.deepEqual(await client.json.forget('key'), 0); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/GET.d.ts b/node_modules/@node-redis/json/dist/commands/GET.d.ts new file mode 100644 index 0000000000..d96bfa35b2 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/GET.d.ts @@ -0,0 +1,11 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +interface GetOptions { + path?: string | Array; + INDENT?: string; + NEWLINE?: string; + SPACE?: string; + NOESCAPE?: true; +} +export declare function transformArguments(key: string, options?: GetOptions): Array; +export { transformRedisJsonNullReply as transformReply } from '.'; diff --git a/node_modules/@node-redis/json/dist/commands/GET.js b/node_modules/@node-redis/json/dist/commands/GET.js new file mode 100644 index 0000000000..1775c392fc --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/GET.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("@node-redis/client/dist/lib/commands/generic-transformers"); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, options) { + const args = ['JSON.GET', key]; + if (options === null || options === void 0 ? void 0 : options.path) { + (0, generic_transformers_1.pushVerdictArguments)(args, options.path); + } + if (options === null || options === void 0 ? void 0 : options.INDENT) { + args.push('INDENT', options.INDENT); + } + if (options === null || options === void 0 ? void 0 : options.NEWLINE) { + args.push('NEWLINE', options.NEWLINE); + } + if (options === null || options === void 0 ? void 0 : options.SPACE) { + args.push('SPACE', options.SPACE); + } + if (options === null || options === void 0 ? void 0 : options.NOESCAPE) { + args.push('NOESCAPE'); + } + return args; +} +exports.transformArguments = transformArguments; +var _1 = require("."); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return _1.transformRedisJsonNullReply; } }); diff --git a/node_modules/@node-redis/json/dist/commands/GET.spec.d.ts b/node_modules/@node-redis/json/dist/commands/GET.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/GET.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/GET.spec.js b/node_modules/@node-redis/json/dist/commands/GET.spec.js new file mode 100644 index 0000000000..c279999b0b --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/GET.spec.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const GET_1 = require("./GET"); +describe('GET', () => { + describe('transformArguments', () => { + describe('path', () => { + it('string', () => { + assert_1.strict.deepEqual((0, GET_1.transformArguments)('key', { path: '$' }), ['JSON.GET', 'key', '$']); + }); + it('array', () => { + assert_1.strict.deepEqual((0, GET_1.transformArguments)('key', { path: ['$.1', '$.2'] }), ['JSON.GET', 'key', '$.1', '$.2']); + }); + }); + it('key', () => { + assert_1.strict.deepEqual((0, GET_1.transformArguments)('key'), ['JSON.GET', 'key']); + }); + it('INDENT', () => { + assert_1.strict.deepEqual((0, GET_1.transformArguments)('key', { INDENT: 'indent' }), ['JSON.GET', 'key', 'INDENT', 'indent']); + }); + it('NEWLINE', () => { + assert_1.strict.deepEqual((0, GET_1.transformArguments)('key', { NEWLINE: 'newline' }), ['JSON.GET', 'key', 'NEWLINE', 'newline']); + }); + it('SPACE', () => { + assert_1.strict.deepEqual((0, GET_1.transformArguments)('key', { SPACE: 'space' }), ['JSON.GET', 'key', 'SPACE', 'space']); + }); + it('NOESCAPE', () => { + assert_1.strict.deepEqual((0, GET_1.transformArguments)('key', { NOESCAPE: true }), ['JSON.GET', 'key', 'NOESCAPE']); + }); + it('INDENT, NEWLINE, SPACE, NOESCAPE, path', () => { + assert_1.strict.deepEqual((0, GET_1.transformArguments)('key', { + path: '$.path', + INDENT: 'indent', + NEWLINE: 'newline', + SPACE: 'space', + NOESCAPE: true + }), ['JSON.GET', 'key', '$.path', 'INDENT', 'indent', 'NEWLINE', 'newline', 'SPACE', 'space', 'NOESCAPE']); + }); + }); + test_utils_1.default.testWithClient('client.json.get', async (client) => { + assert_1.strict.equal(await client.json.get('key'), null); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/MGET.d.ts b/node_modules/@node-redis/json/dist/commands/MGET.d.ts new file mode 100644 index 0000000000..763a5ab942 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/MGET.d.ts @@ -0,0 +1,4 @@ +import { RedisJSON } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(keys: Array, path: string): Array; +export declare function transformReply(reply: Array): Array; diff --git a/node_modules/@node-redis/json/dist/commands/MGET.js b/node_modules/@node-redis/json/dist/commands/MGET.js new file mode 100644 index 0000000000..ed9bfd978b --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/MGET.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const _1 = require("."); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(keys, path) { + return [ + 'JSON.MGET', + ...keys, + path + ]; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + return reply.map(_1.transformRedisJsonNullReply); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/json/dist/commands/MGET.spec.d.ts b/node_modules/@node-redis/json/dist/commands/MGET.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/MGET.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/MGET.spec.js b/node_modules/@node-redis/json/dist/commands/MGET.spec.js new file mode 100644 index 0000000000..a4630e7296 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/MGET.spec.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const MGET_1 = require("./MGET"); +describe('MGET', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, MGET_1.transformArguments)(['1', '2'], '$'), ['JSON.MGET', '1', '2', '$']); + }); + test_utils_1.default.testWithClient('client.json.mGet', async (client) => { + assert_1.strict.deepEqual(await client.json.mGet(['1', '2'], '$'), [null, null]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/NUMINCRBY.d.ts b/node_modules/@node-redis/json/dist/commands/NUMINCRBY.d.ts new file mode 100644 index 0000000000..3cac586dd2 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/NUMINCRBY.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path: string, by: number): Array; +export { transformNumbersReply as transformReply } from '.'; diff --git a/node_modules/@node-redis/json/dist/commands/NUMINCRBY.js b/node_modules/@node-redis/json/dist/commands/NUMINCRBY.js new file mode 100644 index 0000000000..a0f91007b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/NUMINCRBY.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path, by) { + return ['JSON.NUMINCRBY', key, path, by.toString()]; +} +exports.transformArguments = transformArguments; +var _1 = require("."); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return _1.transformNumbersReply; } }); diff --git a/node_modules/@node-redis/json/dist/commands/NUMINCRBY.spec.d.ts b/node_modules/@node-redis/json/dist/commands/NUMINCRBY.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/NUMINCRBY.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/NUMINCRBY.spec.js b/node_modules/@node-redis/json/dist/commands/NUMINCRBY.spec.js new file mode 100644 index 0000000000..7bc09248a1 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/NUMINCRBY.spec.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const NUMINCRBY_1 = require("./NUMINCRBY"); +describe('NUMINCRBY', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, NUMINCRBY_1.transformArguments)('key', '$', 1), ['JSON.NUMINCRBY', 'key', '$', '1']); + }); + test_utils_1.default.testWithClient('client.json.numIncrBy', async (client) => { + await client.json.set('key', '$', 0); + assert_1.strict.deepEqual(await client.json.numIncrBy('key', '$', 1), [1]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/NUMMULTBY.d.ts b/node_modules/@node-redis/json/dist/commands/NUMMULTBY.d.ts new file mode 100644 index 0000000000..3cac586dd2 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/NUMMULTBY.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path: string, by: number): Array; +export { transformNumbersReply as transformReply } from '.'; diff --git a/node_modules/@node-redis/json/dist/commands/NUMMULTBY.js b/node_modules/@node-redis/json/dist/commands/NUMMULTBY.js new file mode 100644 index 0000000000..64de23fdb4 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/NUMMULTBY.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path, by) { + return ['JSON.NUMMULTBY', key, path, by.toString()]; +} +exports.transformArguments = transformArguments; +var _1 = require("."); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return _1.transformNumbersReply; } }); diff --git a/node_modules/@node-redis/json/dist/commands/NUMMULTBY.spec.d.ts b/node_modules/@node-redis/json/dist/commands/NUMMULTBY.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/NUMMULTBY.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/NUMMULTBY.spec.js b/node_modules/@node-redis/json/dist/commands/NUMMULTBY.spec.js new file mode 100644 index 0000000000..72be16a9f5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/NUMMULTBY.spec.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const NUMMULTBY_1 = require("./NUMMULTBY"); +describe('NUMMULTBY', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, NUMMULTBY_1.transformArguments)('key', '$', 2), ['JSON.NUMMULTBY', 'key', '$', '2']); + }); + test_utils_1.default.testWithClient('client.json.numMultBy', async (client) => { + await client.json.set('key', '$', 1); + assert_1.strict.deepEqual(await client.json.numMultBy('key', '$', 2), [2]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/OBJKEYS.d.ts b/node_modules/@node-redis/json/dist/commands/OBJKEYS.d.ts new file mode 100644 index 0000000000..b66d5decc1 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/OBJKEYS.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path?: string): Array; +export declare function transformReply(): Array | null | Array | null>; diff --git a/node_modules/@node-redis/json/dist/commands/OBJKEYS.js b/node_modules/@node-redis/json/dist/commands/OBJKEYS.js new file mode 100644 index 0000000000..fa936f258f --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/OBJKEYS.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path) { + const args = ['JSON.OBJKEYS', key]; + if (path) { + args.push(path); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/OBJKEYS.spec.d.ts b/node_modules/@node-redis/json/dist/commands/OBJKEYS.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/OBJKEYS.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/OBJKEYS.spec.js b/node_modules/@node-redis/json/dist/commands/OBJKEYS.spec.js new file mode 100644 index 0000000000..17d40b5d34 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/OBJKEYS.spec.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const OBJKEYS_1 = require("./OBJKEYS"); +describe('OBJKEYS', () => { + describe('transformArguments', () => { + it('without path', () => { + assert_1.strict.deepEqual((0, OBJKEYS_1.transformArguments)('key'), ['JSON.OBJKEYS', 'key']); + }); + it('with path', () => { + assert_1.strict.deepEqual((0, OBJKEYS_1.transformArguments)('key', '$'), ['JSON.OBJKEYS', 'key', '$']); + }); + }); + // testUtils.testWithClient('client.json.objKeys', async client => { + // assert.deepEqual( + // await client.json.objKeys('key', '$'), + // [null] + // ); + // }, GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/OBJLEN.d.ts b/node_modules/@node-redis/json/dist/commands/OBJLEN.d.ts new file mode 100644 index 0000000000..915b6e16f7 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/OBJLEN.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path?: string): Array; +export declare function transformReply(): number | null | Array; diff --git a/node_modules/@node-redis/json/dist/commands/OBJLEN.js b/node_modules/@node-redis/json/dist/commands/OBJLEN.js new file mode 100644 index 0000000000..07c0962024 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/OBJLEN.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path) { + const args = ['JSON.OBJLEN', key]; + if (path) { + args.push(path); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/OBJLEN.spec.d.ts b/node_modules/@node-redis/json/dist/commands/OBJLEN.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/OBJLEN.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/OBJLEN.spec.js b/node_modules/@node-redis/json/dist/commands/OBJLEN.spec.js new file mode 100644 index 0000000000..7b7d1c9b20 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/OBJLEN.spec.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const OBJLEN_1 = require("./OBJLEN"); +describe('OBJLEN', () => { + describe('transformArguments', () => { + it('without path', () => { + assert_1.strict.deepEqual((0, OBJLEN_1.transformArguments)('key'), ['JSON.OBJLEN', 'key']); + }); + it('with path', () => { + assert_1.strict.deepEqual((0, OBJLEN_1.transformArguments)('key', '$'), ['JSON.OBJLEN', 'key', '$']); + }); + }); + // testUtils.testWithClient('client.json.objLen', async client => { + // assert.equal( + // await client.json.objLen('key', '$'), + // [null] + // ); + // }, GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/RESP.d.ts b/node_modules/@node-redis/json/dist/commands/RESP.d.ts new file mode 100644 index 0000000000..340951082b --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/RESP.d.ts @@ -0,0 +1,5 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path?: string): Array; +declare type RESPReply = Array; +export declare function transfromReply(): RESPReply; +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/RESP.js b/node_modules/@node-redis/json/dist/commands/RESP.js new file mode 100644 index 0000000000..76fc64b9fd --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/RESP.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path) { + const args = ['JSON.RESP', key]; + if (path) { + args.push(path); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/RESP.spec.d.ts b/node_modules/@node-redis/json/dist/commands/RESP.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/RESP.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/RESP.spec.js b/node_modules/@node-redis/json/dist/commands/RESP.spec.js new file mode 100644 index 0000000000..1942836cfa --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/RESP.spec.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const RESP_1 = require("./RESP"); +describe('RESP', () => { + describe('transformArguments', () => { + it('without path', () => { + assert_1.strict.deepEqual((0, RESP_1.transformArguments)('key'), ['JSON.RESP', 'key']); + }); + it('with path', () => { + assert_1.strict.deepEqual((0, RESP_1.transformArguments)('key', '$'), ['JSON.RESP', 'key', '$']); + }); + }); + // testUtils.testWithClient('client.json.resp', async client => { + // assert.deepEqual( + // await client.json.resp('key', '$'), + // [null] + // ); + // }, GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/SET.d.ts b/node_modules/@node-redis/json/dist/commands/SET.d.ts new file mode 100644 index 0000000000..9acba665a4 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/SET.d.ts @@ -0,0 +1,11 @@ +import { RedisJSON } from '.'; +export declare const FIRST_KEY_INDEX = 1; +interface NX { + NX: true; +} +interface XX { + XX: true; +} +export declare function transformArguments(key: string, path: string, json: RedisJSON, options?: NX | XX): Array; +export declare function transformReply(): 'OK' | null; +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/SET.js b/node_modules/@node-redis/json/dist/commands/SET.js new file mode 100644 index 0000000000..6381878dcc --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/SET.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const _1 = require("."); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path, json, options) { + var _a, _b; + const args = ['JSON.SET', key, path, (0, _1.transformRedisJsonArgument)(json)]; + if ((_a = options) === null || _a === void 0 ? void 0 : _a.NX) { + args.push('NX'); + } + else if ((_b = options) === null || _b === void 0 ? void 0 : _b.XX) { + args.push('XX'); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/SET.spec.d.ts b/node_modules/@node-redis/json/dist/commands/SET.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/SET.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/SET.spec.js b/node_modules/@node-redis/json/dist/commands/SET.spec.js new file mode 100644 index 0000000000..f5c614064f --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/SET.spec.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SET_1 = require("./SET"); +describe('SET', () => { + describe('transformArguments', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, SET_1.transformArguments)('key', '$', 'json'), ['JSON.SET', 'key', '$', '"json"']); + }); + it('NX', () => { + assert_1.strict.deepEqual((0, SET_1.transformArguments)('key', '$', 'json', { NX: true }), ['JSON.SET', 'key', '$', '"json"', 'NX']); + }); + it('XX', () => { + assert_1.strict.deepEqual((0, SET_1.transformArguments)('key', '$', 'json', { XX: true }), ['JSON.SET', 'key', '$', '"json"', 'XX']); + }); + }); + test_utils_1.default.testWithClient('client.json.mGet', async (client) => { + assert_1.strict.equal(await client.json.set('key', '$', 'json'), 'OK'); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/STRAPPEND.d.ts b/node_modules/@node-redis/json/dist/commands/STRAPPEND.d.ts new file mode 100644 index 0000000000..1deefbd936 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/STRAPPEND.d.ts @@ -0,0 +1,6 @@ +export declare const FIRST_KEY_INDEX = 1; +declare type AppendArguments = [key: string, append: string]; +declare type AppendWithPathArguments = [key: string, path: string, append: string]; +export declare function transformArguments(...[key, pathOrAppend, append]: AppendArguments | AppendWithPathArguments): Array; +export declare function transformReply(): number | Array; +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/STRAPPEND.js b/node_modules/@node-redis/json/dist/commands/STRAPPEND.js new file mode 100644 index 0000000000..b5c67362a9 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/STRAPPEND.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +const _1 = require("."); +exports.FIRST_KEY_INDEX = 1; +function transformArguments(...[key, pathOrAppend, append]) { + const args = ['JSON.STRAPPEND', key]; + if (append !== undefined && append !== null) { + args.push(pathOrAppend, (0, _1.transformRedisJsonArgument)(append)); + } + else { + args.push((0, _1.transformRedisJsonArgument)(pathOrAppend)); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/STRAPPEND.spec.d.ts b/node_modules/@node-redis/json/dist/commands/STRAPPEND.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/STRAPPEND.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/STRAPPEND.spec.js b/node_modules/@node-redis/json/dist/commands/STRAPPEND.spec.js new file mode 100644 index 0000000000..7062d504db --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/STRAPPEND.spec.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const STRAPPEND_1 = require("./STRAPPEND"); +describe('STRAPPEND', () => { + describe('transformArguments', () => { + it('without path', () => { + assert_1.strict.deepEqual((0, STRAPPEND_1.transformArguments)('key', 'append'), ['JSON.STRAPPEND', 'key', '"append"']); + }); + it('with path', () => { + assert_1.strict.deepEqual((0, STRAPPEND_1.transformArguments)('key', '$', 'append'), ['JSON.STRAPPEND', 'key', '$', '"append"']); + }); + }); + test_utils_1.default.testWithClient('client.json.strAppend', async (client) => { + await client.json.set('key', '$', ''); + assert_1.strict.deepEqual(await client.json.strAppend('key', '$', 'append'), [6]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/STRLEN.d.ts b/node_modules/@node-redis/json/dist/commands/STRLEN.d.ts new file mode 100644 index 0000000000..a27960d332 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/STRLEN.d.ts @@ -0,0 +1,4 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string, path?: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/json/dist/commands/STRLEN.js b/node_modules/@node-redis/json/dist/commands/STRLEN.js new file mode 100644 index 0000000000..599a793e81 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/STRLEN.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(key, path) { + const args = ['JSON.STRLEN', key]; + if (path) { + args.push(path); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/STRLEN.spec.d.ts b/node_modules/@node-redis/json/dist/commands/STRLEN.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/STRLEN.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/STRLEN.spec.js b/node_modules/@node-redis/json/dist/commands/STRLEN.spec.js new file mode 100644 index 0000000000..84878cee1c --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/STRLEN.spec.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const STRLEN_1 = require("./STRLEN"); +describe('STRLEN', () => { + describe('transformArguments', () => { + it('without path', () => { + assert_1.strict.deepEqual((0, STRLEN_1.transformArguments)('key'), ['JSON.STRLEN', 'key']); + }); + it('with path', () => { + assert_1.strict.deepEqual((0, STRLEN_1.transformArguments)('key', '$'), ['JSON.STRLEN', 'key', '$']); + }); + }); + test_utils_1.default.testWithClient('client.json.strLen', async (client) => { + await client.json.set('key', '$', ''); + assert_1.strict.deepEqual(await client.json.strLen('key', '$'), [0]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/TYPE.d.ts b/node_modules/@node-redis/json/dist/commands/TYPE.d.ts new file mode 100644 index 0000000000..f9bc3f4a8e --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/TYPE.d.ts @@ -0,0 +1,3 @@ +export declare const FIRST_KEY_INDEX = 1; +export declare function transformArguments(key: string, path?: string): Array; +export declare function transformReply(): string | null | Array; diff --git a/node_modules/@node-redis/json/dist/commands/TYPE.js b/node_modules/@node-redis/json/dist/commands/TYPE.js new file mode 100644 index 0000000000..7a4bc8a684 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/TYPE.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.FIRST_KEY_INDEX = void 0; +exports.FIRST_KEY_INDEX = 1; +function transformArguments(key, path) { + const args = ['JSON.TYPE', key]; + if (path) { + args.push(path); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/json/dist/commands/TYPE.spec.d.ts b/node_modules/@node-redis/json/dist/commands/TYPE.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/TYPE.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/json/dist/commands/TYPE.spec.js b/node_modules/@node-redis/json/dist/commands/TYPE.spec.js new file mode 100644 index 0000000000..9483a16891 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/TYPE.spec.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const TYPE_1 = require("./TYPE"); +describe('TYPE', () => { + describe('transformArguments', () => { + it('without path', () => { + assert_1.strict.deepEqual((0, TYPE_1.transformArguments)('key'), ['JSON.TYPE', 'key']); + }); + it('with path', () => { + assert_1.strict.deepEqual((0, TYPE_1.transformArguments)('key', '$'), ['JSON.TYPE', 'key', '$']); + }); + }); + // testUtils.testWithClient('client.json.type', async client => { + // assert.deepEqual( + // await client.json.type('key', '$'), + // [null] + // ); + // }, GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/json/dist/commands/index.d.ts b/node_modules/@node-redis/json/dist/commands/index.d.ts new file mode 100644 index 0000000000..3d0004b48d --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/index.d.ts @@ -0,0 +1,74 @@ +import * as ARRAPPEND from './ARRAPPEND'; +import * as ARRINDEX from './ARRINDEX'; +import * as ARRINSERT from './ARRINSERT'; +import * as ARRLEN from './ARRLEN'; +import * as ARRPOP from './ARRPOP'; +import * as ARRTRIM from './ARRTRIM'; +import * as DEBUG_MEMORY from './DEBUG_MEMORY'; +import * as DEL from './DEL'; +import * as FORGET from './FORGET'; +import * as GET from './GET'; +import * as MGET from './MGET'; +import * as NUMINCRBY from './NUMINCRBY'; +import * as NUMMULTBY from './NUMMULTBY'; +import * as OBJKEYS from './OBJKEYS'; +import * as OBJLEN from './OBJLEN'; +import * as RESP from './RESP'; +import * as SET from './SET'; +import * as STRAPPEND from './STRAPPEND'; +import * as STRLEN from './STRLEN'; +import * as TYPE from './TYPE'; +declare const _default: { + ARRAPPEND: typeof ARRAPPEND; + arrAppend: typeof ARRAPPEND; + ARRINDEX: typeof ARRINDEX; + arrIndex: typeof ARRINDEX; + ARRINSERT: typeof ARRINSERT; + arrInsert: typeof ARRINSERT; + ARRLEN: typeof ARRLEN; + arrLen: typeof ARRLEN; + ARRPOP: typeof ARRPOP; + arrPop: typeof ARRPOP; + ARRTRIM: typeof ARRTRIM; + arrTrim: typeof ARRTRIM; + DEBUG_MEMORY: typeof DEBUG_MEMORY; + debugMemory: typeof DEBUG_MEMORY; + DEL: typeof DEL; + del: typeof DEL; + FORGET: typeof FORGET; + forget: typeof FORGET; + GET: typeof GET; + get: typeof GET; + MGET: typeof MGET; + mGet: typeof MGET; + NUMINCRBY: typeof NUMINCRBY; + numIncrBy: typeof NUMINCRBY; + NUMMULTBY: typeof NUMMULTBY; + numMultBy: typeof NUMMULTBY; + OBJKEYS: typeof OBJKEYS; + objKeys: typeof OBJKEYS; + OBJLEN: typeof OBJLEN; + objLen: typeof OBJLEN; + RESP: typeof RESP; + resp: typeof RESP; + SET: typeof SET; + set: typeof SET; + STRAPPEND: typeof STRAPPEND; + strAppend: typeof STRAPPEND; + STRLEN: typeof STRLEN; + strLen: typeof STRLEN; + TYPE: typeof TYPE; + type: typeof TYPE; +}; +export default _default; +export declare type RedisJSON = null | boolean | number | string | Date | Array | { + [key: string]: RedisJSON; +} | { + [key: number]: RedisJSON; +}; +export declare function transformRedisJsonArgument(json: RedisJSON): string; +export declare function transformRedisJsonReply(json: string): RedisJSON; +export declare function transformRedisJsonArrayReply(jsons: Array): Array; +export declare function transformRedisJsonNullReply(json: string | null): RedisJSON | null; +export declare function transformRedisJsonNullArrayNullReply(jsons: Array | null): Array | null; +export declare function transformNumbersReply(reply: string): number | Array; diff --git a/node_modules/@node-redis/json/dist/commands/index.js b/node_modules/@node-redis/json/dist/commands/index.js new file mode 100644 index 0000000000..4135432937 --- /dev/null +++ b/node_modules/@node-redis/json/dist/commands/index.js @@ -0,0 +1,93 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformNumbersReply = exports.transformRedisJsonNullArrayNullReply = exports.transformRedisJsonNullReply = exports.transformRedisJsonArrayReply = exports.transformRedisJsonReply = exports.transformRedisJsonArgument = void 0; +const ARRAPPEND = require("./ARRAPPEND"); +const ARRINDEX = require("./ARRINDEX"); +const ARRINSERT = require("./ARRINSERT"); +const ARRLEN = require("./ARRLEN"); +const ARRPOP = require("./ARRPOP"); +const ARRTRIM = require("./ARRTRIM"); +const DEBUG_MEMORY = require("./DEBUG_MEMORY"); +const DEL = require("./DEL"); +const FORGET = require("./FORGET"); +const GET = require("./GET"); +const MGET = require("./MGET"); +const NUMINCRBY = require("./NUMINCRBY"); +const NUMMULTBY = require("./NUMMULTBY"); +const OBJKEYS = require("./OBJKEYS"); +const OBJLEN = require("./OBJLEN"); +const RESP = require("./RESP"); +const SET = require("./SET"); +const STRAPPEND = require("./STRAPPEND"); +const STRLEN = require("./STRLEN"); +const TYPE = require("./TYPE"); +exports.default = { + ARRAPPEND, + arrAppend: ARRAPPEND, + ARRINDEX, + arrIndex: ARRINDEX, + ARRINSERT, + arrInsert: ARRINSERT, + ARRLEN, + arrLen: ARRLEN, + ARRPOP, + arrPop: ARRPOP, + ARRTRIM, + arrTrim: ARRTRIM, + DEBUG_MEMORY, + debugMemory: DEBUG_MEMORY, + DEL, + del: DEL, + FORGET, + forget: FORGET, + GET, + get: GET, + MGET, + mGet: MGET, + NUMINCRBY, + numIncrBy: NUMINCRBY, + NUMMULTBY, + numMultBy: NUMMULTBY, + OBJKEYS, + objKeys: OBJKEYS, + OBJLEN, + objLen: OBJLEN, + RESP, + resp: RESP, + SET, + set: SET, + STRAPPEND, + strAppend: STRAPPEND, + STRLEN, + strLen: STRLEN, + TYPE, + type: TYPE +}; +function transformRedisJsonArgument(json) { + return JSON.stringify(json); +} +exports.transformRedisJsonArgument = transformRedisJsonArgument; +function transformRedisJsonReply(json) { + return JSON.parse(json); +} +exports.transformRedisJsonReply = transformRedisJsonReply; +function transformRedisJsonArrayReply(jsons) { + return jsons.map(transformRedisJsonReply); +} +exports.transformRedisJsonArrayReply = transformRedisJsonArrayReply; +function transformRedisJsonNullReply(json) { + if (json === null) + return null; + return transformRedisJsonReply(json); +} +exports.transformRedisJsonNullReply = transformRedisJsonNullReply; +function transformRedisJsonNullArrayNullReply(jsons) { + if (jsons === null) + return null; + return jsons.map(transformRedisJsonNullReply); +} +exports.transformRedisJsonNullArrayNullReply = transformRedisJsonNullArrayNullReply; +function transformNumbersReply(reply) { + return JSON.parse(reply); +} +exports.transformNumbersReply = transformNumbersReply; diff --git a/node_modules/@node-redis/json/dist/index.d.ts b/node_modules/@node-redis/json/dist/index.d.ts new file mode 100644 index 0000000000..bc0e103e8c --- /dev/null +++ b/node_modules/@node-redis/json/dist/index.d.ts @@ -0,0 +1 @@ +export { default } from './commands'; diff --git a/node_modules/@node-redis/json/dist/index.js b/node_modules/@node-redis/json/dist/index.js new file mode 100644 index 0000000000..992c58d217 --- /dev/null +++ b/node_modules/@node-redis/json/dist/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = void 0; +var commands_1 = require("./commands"); +Object.defineProperty(exports, "default", { enumerable: true, get: function () { return commands_1.default; } }); diff --git a/node_modules/@node-redis/json/dist/test-utils.d.ts b/node_modules/@node-redis/json/dist/test-utils.d.ts new file mode 100644 index 0000000000..b796febe65 --- /dev/null +++ b/node_modules/@node-redis/json/dist/test-utils.d.ts @@ -0,0 +1,56 @@ +import TestUtils from '@node-redis/test-utils'; +declare const _default: TestUtils; +export default _default; +export declare const GLOBAL: { + SERVERS: { + OPEN: { + serverArguments: string[]; + clientOptions: { + modules: { + json: { + ARRAPPEND: typeof import("./commands/ARRAPPEND"); + arrAppend: typeof import("./commands/ARRAPPEND"); + ARRINDEX: typeof import("./commands/ARRINDEX"); + arrIndex: typeof import("./commands/ARRINDEX"); + ARRINSERT: typeof import("./commands/ARRINSERT"); + arrInsert: typeof import("./commands/ARRINSERT"); + ARRLEN: typeof import("./commands/ARRLEN"); + arrLen: typeof import("./commands/ARRLEN"); + ARRPOP: typeof import("./commands/ARRPOP"); + arrPop: typeof import("./commands/ARRPOP"); + ARRTRIM: typeof import("./commands/ARRTRIM"); + arrTrim: typeof import("./commands/ARRTRIM"); + DEBUG_MEMORY: typeof import("./commands/DEBUG_MEMORY"); + debugMemory: typeof import("./commands/DEBUG_MEMORY"); + DEL: typeof import("./commands/DEL"); + del: typeof import("./commands/DEL"); + FORGET: typeof import("./commands/FORGET"); + forget: typeof import("./commands/FORGET"); + GET: typeof import("./commands/GET"); + get: typeof import("./commands/GET"); + MGET: typeof import("./commands/MGET"); + mGet: typeof import("./commands/MGET"); + NUMINCRBY: typeof import("./commands/NUMINCRBY"); + numIncrBy: typeof import("./commands/NUMINCRBY"); + NUMMULTBY: typeof import("./commands/NUMMULTBY"); + numMultBy: typeof import("./commands/NUMMULTBY"); + OBJKEYS: typeof import("./commands/OBJKEYS"); + objKeys: typeof import("./commands/OBJKEYS"); + OBJLEN: typeof import("./commands/OBJLEN"); + objLen: typeof import("./commands/OBJLEN"); + RESP: typeof import("./commands/RESP"); + resp: typeof import("./commands/RESP"); + SET: typeof import("./commands/SET"); + set: typeof import("./commands/SET"); + STRAPPEND: typeof import("./commands/STRAPPEND"); + strAppend: typeof import("./commands/STRAPPEND"); + STRLEN: typeof import("./commands/STRLEN"); + strLen: typeof import("./commands/STRLEN"); + TYPE: typeof import("./commands/TYPE"); + type: typeof import("./commands/TYPE"); + }; + }; + }; + }; + }; +}; diff --git a/node_modules/@node-redis/json/dist/test-utils.js b/node_modules/@node-redis/json/dist/test-utils.js new file mode 100644 index 0000000000..b8d8aa2bf9 --- /dev/null +++ b/node_modules/@node-redis/json/dist/test-utils.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GLOBAL = void 0; +const test_utils_1 = require("@node-redis/test-utils"); +const _1 = require("."); +exports.default = new test_utils_1.default({ + dockerImageName: 'redislabs/rejson', + dockerImageVersionArgument: 'rejson-version', + defaultDockerVersion: '2.0.2' +}); +exports.GLOBAL = { + SERVERS: { + OPEN: { + serverArguments: ['--loadmodule /usr/lib/redis/modules/rejson.so'], + clientOptions: { + modules: { + json: _1.default + } + } + } + } +}; diff --git a/node_modules/@node-redis/json/package.json b/node_modules/@node-redis/json/package.json new file mode 100644 index 0000000000..49302f3881 --- /dev/null +++ b/node_modules/@node-redis/json/package.json @@ -0,0 +1,24 @@ +{ + "name": "@node-redis/json", + "version": "1.0.0", + "license": "MIT", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "test": "nyc -r text-summary -r lcov mocha -r source-map-support/register -r ts-node/register './lib/**/*.spec.ts'", + "build": "tsc" + }, + "peerDependencies": { + "@node-redis/client": "^1.0.0" + }, + "devDependencies": { + "@istanbuljs/nyc-config-typescript": "^1.0.1", + "@node-redis/test-utils": "*", + "@types/node": "^16.11.10", + "nyc": "^15.1.0", + "release-it": "^14.11.8", + "source-map-support": "^0.5.21", + "ts-node": "^10.4.0", + "typescript": "^4.5.2" + } +} diff --git a/node_modules/@node-redis/search/README.md b/node_modules/@node-redis/search/README.md new file mode 100644 index 0000000000..f54316d3c1 --- /dev/null +++ b/node_modules/@node-redis/search/README.md @@ -0,0 +1,120 @@ +# @node-redis/search + +This package provides support for the [RediSearch](https://redisearch.io) module, which adds indexing and querying support for data stored in Redis Hashes or as JSON documents with the RedisJSON module. It extends the [Node Redis client](https://github.com/redis/node-redis) to include functions for each of the RediSearch commands. + +To use these extra commands, your Redis server must have the RediSearch module installed. To index and query JSON documents, you'll also need to add the RedisJSON module. + +## Usage + +For complete examples, see [`search-hashes.js`](https://github.com/redis/node-redis/blob/master/examples/search-hashes.js) and [`search-json.js`](https://github.com/redis/node-redis/blob/master/examples/search-json.js) in the Node Redis examples folder. + +### Indexing and Querying Data in Redis Hashes + +#### Creating an Index + +Before we can perform any searches, we need to tell RediSearch how to index our data, and which Redis keys to find that data in. The [FT.CREATE](https://oss.redis.com/redisearch/Commands/#ftcreate) command creates a RediSearch index. Here's how to use it to create an index we'll call `idx:animals` where we want to index hashes containing `name`, `species` and `age` fields, and whose key names in Redis begin with the prefix `noderedis:animals`: + +```javascript +await client.ft.create('idx:animals', { + name: { + type: SchemaFieldTypes.TEXT, + sortable: true + }, + species: SchemaFieldTypes.TAG, + age: SchemaFieldTypes.NUMERIC + }, { + ON: 'HASH', + PREFIX: 'noderedis:animals' + } +); +``` + +See the [`FT.CREATE` documentation](https://oss.redis.com/redisearch/Commands/#ftcreate) for information about the different field types and additional options. + +#### Querying the Index + +Once we've created an index, and added some data to Redis hashes whose keys begin with the prefix `noderedis:animals`, we can start writing some search queries. RediSearch supports a rich query syntax for full-text search, faceted search, aggregation and more. Check out the [`FT.SEARCH` documentation](https://oss.redis.com/redisearch/Commands/#ftsearch) and the [query syntax reference](https://oss.redis.com/redisearch/Query_Syntax/) for more information. + +Let's write a query to find all the animals where the `species` field has the value `dog`: + +```javascript +const results = await client.ft.search('idx:animals', '@species:{dog}'); +``` + +`results` looks like this: + +```javascript +{ + total: 2, + documents: [ + { + id: 'noderedis:animals:4', + value: { + name: 'Fido', + species: 'dog', + age: '7' + } + }, + { + id: 'noderedis:animals:3', + value: { + name: 'Rover', + species: 'dog', + age: '9' + } + } + ] +} +``` + +### Indexing and Querying Data with RedisJSON + +RediSearch can also index and query JSON documents stored in Redis using the RedisJSON module. The approach is similar to that for indexing and searching data in hashes, but we can now use JSON Path like syntax and the data no longer has to be flat name/value pairs - it can contain nested objects and arrays. + +#### Creating an Index + +As before, we create an index with the `FT.CREATE` command, this time specifying we want to index JSON documents that look like this: + +```javascript +{ + name: 'Alice', + age: 32, + coins: 100 +} +``` + +Each document represents a user in some system, and users have name, age and coins properties. + +One way we might choose to index these documents is as follows: + +```javascript +await client.ft.create('idx:users', { + '$.name': { + type: SchemaFieldTypes.TEXT, + SORTABLE: 'UNF' + }, + '$.age': { + type: SchemaFieldTypes.NUMERIC, + AS: 'age' + }, + '$.coins': { + type: SchemaFieldTypes.NUMERIC, + AS: 'coins' + } +}, { + ON: 'JSON', + PREFIX: 'noderedis:users' +}); +``` + +Note that we're using JSON Path to specify where the fields to index are in our JSON documents, and the `AS` clause to define a name/alias for each field. We'll use these when writing queries. + +#### Querying the Index + +Now we have an index and some data stored as JSON documents in Redis (see the [JSON package documentation](https://github.com/redis/node-redis/tree/master/packages/json) for examples of how to store JSON), we can write some queries... + +We'll use the [RediSearch query language](https://oss.redis.com/redisearch/Query_Syntax/) and [`FT.SEARCH`](https://oss.redis.com/redisearch/Commands/#ftsearch) command. Here's a query to find users under the age of 30: + +```javascript +await client.ft.search('idx:users', '@age:[0 30]'); +``` diff --git a/node_modules/@node-redis/search/dist/commands/AGGREGATE.d.ts b/node_modules/@node-redis/search/dist/commands/AGGREGATE.d.ts new file mode 100644 index 0000000000..214d8e607d --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/AGGREGATE.d.ts @@ -0,0 +1,112 @@ +import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands'; +import { TuplesObject } from '@node-redis/client/dist/lib/commands/generic-transformers'; +import { PropertyName, SortByOptions } from '.'; +export declare enum AggregateSteps { + GROUPBY = "GROUPBY", + SORTBY = "SORTBY", + APPLY = "APPLY", + LIMIT = "LIMIT", + FILTER = "FILTER" +} +interface AggregateStep { + type: T; +} +export declare enum AggregateGroupByReducers { + COUNT = "COUNT", + COUNT_DISTINCT = "COUNT_DISTINCT", + COUNT_DISTINCTISH = "COUNT_DISTINCTISH", + SUM = "SUM", + MIN = "MIN", + MAX = "MAX", + AVG = "AVG", + STDDEV = "STDDEV", + QUANTILE = "QUANTILE", + TOLIST = "TOLIST", + TO_LIST = "TOLIST", + FIRST_VALUE = "FIRST_VALUE", + RANDOM_SAMPLE = "RANDOM_SAMPLE" +} +interface GroupByReducer { + type: T; + AS?: string; +} +declare type CountReducer = GroupByReducer; +interface CountDistinctReducer extends GroupByReducer { + property: PropertyName; +} +interface CountDistinctishReducer extends GroupByReducer { + property: PropertyName; +} +interface SumReducer extends GroupByReducer { + property: PropertyName; +} +interface MinReducer extends GroupByReducer { + property: PropertyName; +} +interface MaxReducer extends GroupByReducer { + property: PropertyName; +} +interface AvgReducer extends GroupByReducer { + property: PropertyName; +} +interface StdDevReducer extends GroupByReducer { + property: PropertyName; +} +interface QuantileReducer extends GroupByReducer { + property: PropertyName; + quantile: number; +} +interface ToListReducer extends GroupByReducer { + property: PropertyName; +} +interface FirstValueReducer extends GroupByReducer { + property: PropertyName; + BY?: PropertyName | { + property: PropertyName; + direction?: 'ASC' | 'DESC'; + }; +} +interface RandomSampleReducer extends GroupByReducer { + property: PropertyName; + sampleSize: number; +} +declare type GroupByReducers = CountReducer | CountDistinctReducer | CountDistinctishReducer | SumReducer | MinReducer | MaxReducer | AvgReducer | StdDevReducer | QuantileReducer | ToListReducer | FirstValueReducer | RandomSampleReducer; +interface GroupByStep extends AggregateStep { + properties?: PropertyName | Array; + REDUCE: GroupByReducers | Array; +} +interface SortStep extends AggregateStep { + BY: SortByOptions | Array; + MAX?: number; +} +interface ApplyStep extends AggregateStep { + expression: string; + AS: string; +} +interface LimitStep extends AggregateStep { + from: number; + size: number; +} +interface FilterStep extends AggregateStep { + expression: string; +} +declare type LoadField = PropertyName | { + identifier: PropertyName; + AS?: string; +}; +interface AggregateOptions { + VERBATIM?: true; + LOAD?: LoadField | Array; + STEPS?: Array; +} +export declare function transformArguments(index: string, query: string, options?: AggregateOptions): RedisCommandArguments; +declare type AggregateRawReply = [ + total: number, + ...results: Array> +]; +interface AggregateReply { + total: number; + results: Array; +} +export declare function transformReply(rawReply: AggregateRawReply): AggregateReply; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/AGGREGATE.js b/node_modules/@node-redis/search/dist/commands/AGGREGATE.js new file mode 100644 index 0000000000..381b860e35 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/AGGREGATE.js @@ -0,0 +1,155 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.AggregateGroupByReducers = exports.AggregateSteps = void 0; +const generic_transformers_1 = require("@node-redis/client/dist/lib/commands/generic-transformers"); +const _1 = require("."); +var AggregateSteps; +(function (AggregateSteps) { + AggregateSteps["GROUPBY"] = "GROUPBY"; + AggregateSteps["SORTBY"] = "SORTBY"; + AggregateSteps["APPLY"] = "APPLY"; + AggregateSteps["LIMIT"] = "LIMIT"; + AggregateSteps["FILTER"] = "FILTER"; +})(AggregateSteps = exports.AggregateSteps || (exports.AggregateSteps = {})); +var AggregateGroupByReducers; +(function (AggregateGroupByReducers) { + AggregateGroupByReducers["COUNT"] = "COUNT"; + AggregateGroupByReducers["COUNT_DISTINCT"] = "COUNT_DISTINCT"; + AggregateGroupByReducers["COUNT_DISTINCTISH"] = "COUNT_DISTINCTISH"; + AggregateGroupByReducers["SUM"] = "SUM"; + AggregateGroupByReducers["MIN"] = "MIN"; + AggregateGroupByReducers["MAX"] = "MAX"; + AggregateGroupByReducers["AVG"] = "AVG"; + AggregateGroupByReducers["STDDEV"] = "STDDEV"; + AggregateGroupByReducers["QUANTILE"] = "QUANTILE"; + AggregateGroupByReducers["TOLIST"] = "TOLIST"; + AggregateGroupByReducers["TO_LIST"] = "TOLIST"; + AggregateGroupByReducers["FIRST_VALUE"] = "FIRST_VALUE"; + AggregateGroupByReducers["RANDOM_SAMPLE"] = "RANDOM_SAMPLE"; +})(AggregateGroupByReducers = exports.AggregateGroupByReducers || (exports.AggregateGroupByReducers = {})); +function transformArguments(index, query, options) { + const args = ['FT.AGGREGATE', index, query]; + if (options === null || options === void 0 ? void 0 : options.VERBATIM) { + args.push('VERBATIM'); + } + if (options === null || options === void 0 ? void 0 : options.LOAD) { + args.push('LOAD'); + (0, _1.pushArgumentsWithLength)(args, () => { + if (Array.isArray(options.LOAD)) { + for (const load of options.LOAD) { + pushLoadField(args, load); + } + } + else { + pushLoadField(args, options.LOAD); + } + }); + } + if (options === null || options === void 0 ? void 0 : options.STEPS) { + for (const step of options.STEPS) { + switch (step.type) { + case AggregateSteps.GROUPBY: + args.push('GROUPBY'); + if (!step.properties) { + args.push('0'); + } + else { + (0, generic_transformers_1.pushVerdictArgument)(args, step.properties); + } + if (Array.isArray(step.REDUCE)) { + for (const reducer of step.REDUCE) { + pushGroupByReducer(args, reducer); + } + } + else { + pushGroupByReducer(args, step.REDUCE); + } + break; + case AggregateSteps.SORTBY: + (0, _1.pushSortByArguments)(args, 'SORTBY', step.BY); + if (step.MAX) { + args.push('MAX', step.MAX.toString()); + } + break; + case AggregateSteps.APPLY: + args.push('APPLY', step.expression, 'AS', step.AS); + break; + case AggregateSteps.LIMIT: + args.push('LIMIT', step.from.toString(), step.size.toString()); + break; + case AggregateSteps.FILTER: + args.push('FILTER', step.expression); + break; + } + } + } + return args; +} +exports.transformArguments = transformArguments; +function pushLoadField(args, toLoad) { + if (typeof toLoad === 'string') { + args.push(toLoad); + } + else { + args.push(toLoad.identifier); + if (toLoad.AS) { + args.push('AS', toLoad.AS); + } + } +} +function pushGroupByReducer(args, reducer) { + args.push('REDUCE', reducer.type); + switch (reducer.type) { + case AggregateGroupByReducers.COUNT: + args.push('0'); + break; + case AggregateGroupByReducers.COUNT_DISTINCT: + case AggregateGroupByReducers.COUNT_DISTINCTISH: + case AggregateGroupByReducers.SUM: + case AggregateGroupByReducers.MIN: + case AggregateGroupByReducers.MAX: + case AggregateGroupByReducers.AVG: + case AggregateGroupByReducers.STDDEV: + case AggregateGroupByReducers.TOLIST: + args.push('1', reducer.property); + break; + case AggregateGroupByReducers.QUANTILE: + args.push('2', reducer.property, reducer.quantile.toString()); + break; + case AggregateGroupByReducers.FIRST_VALUE: { + (0, _1.pushArgumentsWithLength)(args, () => { + args.push(reducer.property); + if (reducer.BY) { + args.push('BY'); + if (typeof reducer.BY === 'string') { + args.push(reducer.BY); + } + else { + args.push(reducer.BY.property); + if (reducer.BY.direction) { + args.push(reducer.BY.direction); + } + } + } + }); + break; + } + case AggregateGroupByReducers.RANDOM_SAMPLE: + args.push('2', reducer.property, reducer.sampleSize.toString()); + break; + } + if (reducer.AS) { + args.push('AS', reducer.AS); + } +} +function transformReply(rawReply) { + const results = []; + for (let i = 1; i < rawReply.length; i++) { + results.push((0, generic_transformers_1.transformReplyTuples)(rawReply[i])); + } + return { + total: rawReply[0], + results + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/search/dist/commands/AGGREGATE.spec.d.ts b/node_modules/@node-redis/search/dist/commands/AGGREGATE.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/AGGREGATE.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/AGGREGATE.spec.js b/node_modules/@node-redis/search/dist/commands/AGGREGATE.spec.js new file mode 100644 index 0000000000..1ccace10fb --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/AGGREGATE.spec.js @@ -0,0 +1,358 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const AGGREGATE_1 = require("./AGGREGATE"); +const CREATE_1 = require("./CREATE"); +describe('AGGREGATE', () => { + describe('transformArguments', () => { + it('without options', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*'), ['FT.AGGREGATE', 'index', '*']); + }); + it('with VERBATIM', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { VERBATIM: true }), ['FT.AGGREGATE', 'index', '*', 'VERBATIM']); + }); + describe('with LOAD', () => { + describe('single', () => { + describe('without alias', () => { + it('string', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { LOAD: '@property' }), ['FT.AGGREGATE', 'index', '*', 'LOAD', '1', '@property']); + }); + it('{ identifier: string }', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + LOAD: { + identifier: '@property' + } + }), ['FT.AGGREGATE', 'index', '*', 'LOAD', '1', '@property']); + }); + }); + it('with alias', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + LOAD: { + identifier: '@property', + AS: 'alias' + } + }), ['FT.AGGREGATE', 'index', '*', 'LOAD', '3', '@property', 'AS', 'alias']); + }); + }); + it('multiple', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { LOAD: ['@1', '@2'] }), ['FT.AGGREGATE', 'index', '*', 'LOAD', '2', '@1', '@2']); + }); + }); + describe('with STEPS', () => { + describe('GROUPBY', () => { + describe('COUNT', () => { + describe('without properties', () => { + it('without alias', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.COUNT + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT', '0']); + }); + it('with alias', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.COUNT, + AS: 'count' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT', '0', 'AS', 'count']); + }); + }); + describe('with properties', () => { + it('single', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + properties: '@property', + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.COUNT + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '1', '@property', 'REDUCE', 'COUNT', '0']); + }); + it('multiple', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + properties: ['@1', '@2'], + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.COUNT + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '2', '@1', '@2', 'REDUCE', 'COUNT', '0']); + }); + }); + }); + it('COUNT_DISTINCT', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.COUNT_DISTINCT, + property: '@property' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT_DISTINCT', '1', '@property']); + }); + it('COUNT_DISTINCTISH', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.COUNT_DISTINCTISH, + property: '@property' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT_DISTINCTISH', '1', '@property']); + }); + it('SUM', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.SUM, + property: '@property' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'SUM', '1', '@property']); + }); + it('MIN', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.MIN, + property: '@property' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'MIN', '1', '@property']); + }); + it('MAX', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.MAX, + property: '@property' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'MAX', '1', '@property']); + }); + it('AVG', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.AVG, + property: '@property' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'AVG', '1', '@property']); + }); + it('STDDEV', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.STDDEV, + property: '@property' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'STDDEV', '1', '@property']); + }); + it('QUANTILE', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.QUANTILE, + property: '@property', + quantile: 0.5 + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'QUANTILE', '2', '@property', '0.5']); + }); + it('TO_LIST', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.TO_LIST, + property: '@property' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'TOLIST', '1', '@property']); + }); + describe('FIRST_VALUE', () => { + it('simple', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.FIRST_VALUE, + property: '@property' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '1', '@property']); + }); + describe('with BY', () => { + describe('without direction', () => { + it('string', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.FIRST_VALUE, + property: '@property', + BY: '@by' + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '3', '@property', 'BY', '@by']); + }); + it('{ property: string }', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.FIRST_VALUE, + property: '@property', + BY: { + property: '@by' + } + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '3', '@property', 'BY', '@by']); + }); + }); + it('with direction', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.FIRST_VALUE, + property: '@property', + BY: { + property: '@by', + direction: 'ASC' + } + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '4', '@property', 'BY', '@by', 'ASC']); + }); + }); + }); + it('RANDOM_SAMPLE', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: { + type: AGGREGATE_1.AggregateGroupByReducers.RANDOM_SAMPLE, + property: '@property', + sampleSize: 1 + } + }] + }), ['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'RANDOM_SAMPLE', '2', '@property', '1']); + }); + }); + describe('SORTBY', () => { + it('string', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.SORTBY, + BY: '@by' + }] + }), ['FT.AGGREGATE', 'index', '*', 'SORTBY', '1', '@by']); + }); + it('Array', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.SORTBY, + BY: ['@1', '@2'] + }] + }), ['FT.AGGREGATE', 'index', '*', 'SORTBY', '2', '@1', '@2']); + }); + it('with MAX', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.SORTBY, + BY: '@by', + MAX: 1 + }] + }), ['FT.AGGREGATE', 'index', '*', 'SORTBY', '1', '@by', 'MAX', '1']); + }); + }); + describe('APPLY', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.APPLY, + expression: '@field + 1', + AS: 'as' + }] + }), ['FT.AGGREGATE', 'index', '*', 'APPLY', '@field + 1', 'AS', 'as']); + }); + describe('LIMIT', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.LIMIT, + from: 0, + size: 1 + }] + }), ['FT.AGGREGATE', 'index', '*', 'LIMIT', '0', '1']); + }); + describe('FILTER', () => { + assert_1.strict.deepEqual((0, AGGREGATE_1.transformArguments)('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.FILTER, + expression: '@field != ""' + }] + }), ['FT.AGGREGATE', 'index', '*', 'FILTER', '@field != ""']); + }); + }); + }); + test_utils_1.default.testWithClient('client.ft.aggregate', async (client) => { + await Promise.all([ + client.ft.create('index', { + field: CREATE_1.SchemaFieldTypes.NUMERIC + }), + client.hSet('1', 'field', '1'), + client.hSet('2', 'field', '2') + ]); + assert_1.strict.deepEqual(await client.ft.aggregate('index', '*', { + STEPS: [{ + type: AGGREGATE_1.AggregateSteps.GROUPBY, + REDUCE: [{ + type: AGGREGATE_1.AggregateGroupByReducers.SUM, + property: '@field', + AS: 'sum' + }, { + type: AGGREGATE_1.AggregateGroupByReducers.AVG, + property: '@field', + AS: 'avg' + }] + }] + }), { + total: 1, + results: [ + Object.create(null, { + sum: { + value: '3', + configurable: true, + enumerable: true + }, + avg: { + value: '1.5', + configurable: true, + enumerable: true + } + }) + ] + }); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/ALIASADD.d.ts b/node_modules/@node-redis/search/dist/commands/ALIASADD.d.ts new file mode 100644 index 0000000000..e3e7ab431b --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASADD.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(name: string, index: string): Array; +export declare function transformReply(): 'OK'; diff --git a/node_modules/@node-redis/search/dist/commands/ALIASADD.js b/node_modules/@node-redis/search/dist/commands/ALIASADD.js new file mode 100644 index 0000000000..f71c91e725 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASADD.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(name, index) { + return ['FT.ALIASADD', name, index]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/ALIASADD.spec.d.ts b/node_modules/@node-redis/search/dist/commands/ALIASADD.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASADD.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/ALIASADD.spec.js b/node_modules/@node-redis/search/dist/commands/ALIASADD.spec.js new file mode 100644 index 0000000000..04e38d6515 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASADD.spec.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const ALIASADD_1 = require("./ALIASADD"); +describe('ALIASADD', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, ALIASADD_1.transformArguments)('alias', 'index'), ['FT.ALIASADD', 'alias', 'index']); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/ALIASDEL.d.ts b/node_modules/@node-redis/search/dist/commands/ALIASDEL.d.ts new file mode 100644 index 0000000000..e3e7ab431b --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASDEL.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(name: string, index: string): Array; +export declare function transformReply(): 'OK'; diff --git a/node_modules/@node-redis/search/dist/commands/ALIASDEL.js b/node_modules/@node-redis/search/dist/commands/ALIASDEL.js new file mode 100644 index 0000000000..f80ce4ed31 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASDEL.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(name, index) { + return ['FT.ALIASDEL', name, index]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/ALIASDEL.spec.d.ts b/node_modules/@node-redis/search/dist/commands/ALIASDEL.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASDEL.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/ALIASDEL.spec.js b/node_modules/@node-redis/search/dist/commands/ALIASDEL.spec.js new file mode 100644 index 0000000000..ae461795f4 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASDEL.spec.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const ALIASDEL_1 = require("./ALIASDEL"); +describe('ALIASDEL', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, ALIASDEL_1.transformArguments)('alias', 'index'), ['FT.ALIASDEL', 'alias', 'index']); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.d.ts b/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.d.ts new file mode 100644 index 0000000000..e3e7ab431b --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(name: string, index: string): Array; +export declare function transformReply(): 'OK'; diff --git a/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.js b/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.js new file mode 100644 index 0000000000..718d8f550c --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(name, index) { + return ['FT.ALIASUPDATE', name, index]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.spec.d.ts b/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.spec.js b/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.spec.js new file mode 100644 index 0000000000..8dabb0945e --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/ALIASUPDATE.spec.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const ALIASUPDATE_1 = require("./ALIASUPDATE"); +describe('ALIASUPDATE', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, ALIASUPDATE_1.transformArguments)('alias', 'index'), ['FT.ALIASUPDATE', 'alias', 'index']); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/CONFIG_GET.d.ts b/node_modules/@node-redis/search/dist/commands/CONFIG_GET.d.ts new file mode 100644 index 0000000000..de47f89e61 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CONFIG_GET.d.ts @@ -0,0 +1,6 @@ +export declare function transformArguments(option: string): string[]; +interface ConfigGetReply { + [option: string]: string | null; +} +export declare function transformReply(rawReply: Array<[string, string | null]>): ConfigGetReply; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/CONFIG_GET.js b/node_modules/@node-redis/search/dist/commands/CONFIG_GET.js new file mode 100644 index 0000000000..58fb360e2d --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CONFIG_GET.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(option) { + return ['FT.CONFIG', 'GET', option]; +} +exports.transformArguments = transformArguments; +function transformReply(rawReply) { + const transformedReply = Object.create(null); + for (const [key, value] of rawReply) { + transformedReply[key] = value; + } + return transformedReply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/search/dist/commands/CONFIG_GET.spec.d.ts b/node_modules/@node-redis/search/dist/commands/CONFIG_GET.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CONFIG_GET.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/CONFIG_GET.spec.js b/node_modules/@node-redis/search/dist/commands/CONFIG_GET.spec.js new file mode 100644 index 0000000000..521700b4fd --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CONFIG_GET.spec.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const CONFIG_GET_1 = require("./CONFIG_GET"); +describe('CONFIG GET', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, CONFIG_GET_1.transformArguments)('TIMEOUT'), ['FT.CONFIG', 'GET', 'TIMEOUT']); + }); + test_utils_1.default.testWithClient('client.ft.configGet', async (client) => { + assert_1.strict.deepEqual(await client.ft.configGet('TIMEOUT'), Object.create(null, { + TIMEOUT: { + value: '500', + configurable: true, + enumerable: true + } + })); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/CONFIG_SET.d.ts b/node_modules/@node-redis/search/dist/commands/CONFIG_SET.d.ts new file mode 100644 index 0000000000..c35477939b --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CONFIG_SET.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(option: string, value: string): Array; +export declare function transformReply(): 'OK'; diff --git a/node_modules/@node-redis/search/dist/commands/CONFIG_SET.js b/node_modules/@node-redis/search/dist/commands/CONFIG_SET.js new file mode 100644 index 0000000000..c1b095fca5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CONFIG_SET.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(option, value) { + return ['FT.CONFIG', 'SET', option, value]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/CONFIG_SET.spec.d.ts b/node_modules/@node-redis/search/dist/commands/CONFIG_SET.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CONFIG_SET.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/CONFIG_SET.spec.js b/node_modules/@node-redis/search/dist/commands/CONFIG_SET.spec.js new file mode 100644 index 0000000000..fbee85b7bf --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CONFIG_SET.spec.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const CONFIG_SET_1 = require("./CONFIG_SET"); +describe('CONFIG SET', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, CONFIG_SET_1.transformArguments)('TIMEOUT', '500'), ['FT.CONFIG', 'SET', 'TIMEOUT', '500']); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/CREATE.d.ts b/node_modules/@node-redis/search/dist/commands/CREATE.d.ts new file mode 100644 index 0000000000..6a083b9309 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CREATE.d.ts @@ -0,0 +1,53 @@ +import { RedisSearchLanguages, PropertyName } from '.'; +export declare enum SchemaFieldTypes { + TEXT = "TEXT", + NUMERIC = "NUMERIC", + GEO = "GEO", + TAG = "TAG" +} +declare type CreateSchemaField> = T | ({ + type: T; + AS?: string; + SORTABLE?: true | 'UNF'; + NOINDEX?: true; +} & E); +export declare enum SchemaTextFieldPhonetics { + DM_EN = "dm:en", + DM_FR = "dm:fr", + FM_PT = "dm:pt", + DM_ES = "dm:es" +} +declare type CreateSchemaTextField = CreateSchemaField; +declare type CreateSchemaNumericField = CreateSchemaField; +declare type CreateSchemaGeoField = CreateSchemaField; +declare type CreateSchemaTagField = CreateSchemaField; +interface CreateSchema { + [field: string]: CreateSchemaTextField | CreateSchemaNumericField | CreateSchemaGeoField | CreateSchemaTagField; +} +interface CreateOptions { + ON?: 'HASH' | 'JSON'; + PREFIX?: string | Array; + FILTER?: string; + LANGUAGE?: RedisSearchLanguages; + LANGUAGE_FIELD?: PropertyName; + SCORE?: number; + SCORE_FIELD?: PropertyName; + MAXTEXTFIELDS?: true; + TEMPORARY?: number; + NOOFFSETS?: true; + NOHL?: true; + NOFIELDS?: true; + NOFREQS?: true; + SKIPINITIALSCAN?: true; + STOPWORDS?: string | Array; +} +export declare function transformArguments(index: string, schema: CreateSchema, options?: CreateOptions): Array; +export declare function transformReply(): 'OK'; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/CREATE.js b/node_modules/@node-redis/search/dist/commands/CREATE.js new file mode 100644 index 0000000000..ec3faf2038 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CREATE.js @@ -0,0 +1,112 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.SchemaTextFieldPhonetics = exports.SchemaFieldTypes = void 0; +const generic_transformers_1 = require("@node-redis/client/dist/lib/commands/generic-transformers"); +var SchemaFieldTypes; +(function (SchemaFieldTypes) { + SchemaFieldTypes["TEXT"] = "TEXT"; + SchemaFieldTypes["NUMERIC"] = "NUMERIC"; + SchemaFieldTypes["GEO"] = "GEO"; + SchemaFieldTypes["TAG"] = "TAG"; +})(SchemaFieldTypes = exports.SchemaFieldTypes || (exports.SchemaFieldTypes = {})); +var SchemaTextFieldPhonetics; +(function (SchemaTextFieldPhonetics) { + SchemaTextFieldPhonetics["DM_EN"] = "dm:en"; + SchemaTextFieldPhonetics["DM_FR"] = "dm:fr"; + SchemaTextFieldPhonetics["FM_PT"] = "dm:pt"; + SchemaTextFieldPhonetics["DM_ES"] = "dm:es"; +})(SchemaTextFieldPhonetics = exports.SchemaTextFieldPhonetics || (exports.SchemaTextFieldPhonetics = {})); +function transformArguments(index, schema, options) { + const args = ['FT.CREATE', index]; + if (options === null || options === void 0 ? void 0 : options.ON) { + args.push('ON', options.ON); + } + (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'PREFIX', options === null || options === void 0 ? void 0 : options.PREFIX); + if (options === null || options === void 0 ? void 0 : options.FILTER) { + args.push('FILTER', options.FILTER); + } + if (options === null || options === void 0 ? void 0 : options.LANGUAGE) { + args.push('LANGUAGE', options.LANGUAGE); + } + if (options === null || options === void 0 ? void 0 : options.LANGUAGE_FIELD) { + args.push('LANGUAGE_FIELD', options.LANGUAGE_FIELD); + } + if (options === null || options === void 0 ? void 0 : options.SCORE) { + args.push('SCORE', options.SCORE.toString()); + } + if (options === null || options === void 0 ? void 0 : options.SCORE_FIELD) { + args.push('SCORE_FIELD', options.SCORE_FIELD); + } + // if (options?.PAYLOAD_FIELD) { + // args.push('PAYLOAD_FIELD', options.PAYLOAD_FIELD); + // } + if (options === null || options === void 0 ? void 0 : options.MAXTEXTFIELDS) { + args.push('MAXTEXTFIELDS'); + } + if (options === null || options === void 0 ? void 0 : options.TEMPORARY) { + args.push('TEMPORARY', options.TEMPORARY.toString()); + } + if (options === null || options === void 0 ? void 0 : options.NOOFFSETS) { + args.push('NOOFFSETS'); + } + if (options === null || options === void 0 ? void 0 : options.NOHL) { + args.push('NOHL'); + } + if (options === null || options === void 0 ? void 0 : options.NOFIELDS) { + args.push('NOFIELDS'); + } + if (options === null || options === void 0 ? void 0 : options.NOFREQS) { + args.push('NOFREQS'); + } + if (options === null || options === void 0 ? void 0 : options.SKIPINITIALSCAN) { + args.push('SKIPINITIALSCAN'); + } + (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'STOPWORDS', options === null || options === void 0 ? void 0 : options.STOPWORDS); + args.push('SCHEMA'); + for (const [field, fieldOptions] of Object.entries(schema)) { + args.push(field); + if (typeof fieldOptions === 'string') { + args.push(fieldOptions); + continue; + } + if (fieldOptions.AS) { + args.push('AS', fieldOptions.AS); + } + args.push(fieldOptions.type); + switch (fieldOptions.type) { + case 'TEXT': + if (fieldOptions.NOSTEM) { + args.push('NOSTEM'); + } + if (fieldOptions.WEIGHT) { + args.push('WEIGHT', fieldOptions.WEIGHT.toString()); + } + if (fieldOptions.PHONETIC) { + args.push('PHONETIC', fieldOptions.PHONETIC); + } + break; + // case 'NUMERIC': + // case 'GEO': + // break; + case 'TAG': + if (fieldOptions.SEPERATOR) { + args.push('SEPERATOR', fieldOptions.SEPERATOR); + } + if (fieldOptions.CASESENSITIVE) { + args.push('CASESENSITIVE'); + } + break; + } + if (fieldOptions.SORTABLE) { + args.push('SORTABLE'); + if (fieldOptions.SORTABLE === 'UNF') { + args.push('UNF'); + } + } + if (fieldOptions.NOINDEX) { + args.push('NOINDEX'); + } + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/CREATE.spec.d.ts b/node_modules/@node-redis/search/dist/commands/CREATE.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CREATE.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/CREATE.spec.js b/node_modules/@node-redis/search/dist/commands/CREATE.spec.js new file mode 100644 index 0000000000..ce7b198830 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/CREATE.spec.js @@ -0,0 +1,218 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const CREATE_1 = require("./CREATE"); +const _1 = require("."); +describe('CREATE', () => { + describe('transformArguments', () => { + it('simple', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}), ['FT.CREATE', 'index', 'SCHEMA']); + }); + describe('with fields', () => { + describe('TEXT', () => { + it('without options', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: CREATE_1.SchemaFieldTypes.TEXT + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TEXT']); + }); + it('with NOSTEM', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TEXT, + NOSTEM: true + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TEXT', 'NOSTEM']); + }); + it('with WEIGHT', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TEXT, + WEIGHT: 1 + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TEXT', 'WEIGHT', '1']); + }); + it('with PHONETIC', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TEXT, + PHONETIC: CREATE_1.SchemaTextFieldPhonetics.DM_EN + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TEXT', 'PHONETIC', CREATE_1.SchemaTextFieldPhonetics.DM_EN]); + }); + }); + it('NUMERIC', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: CREATE_1.SchemaFieldTypes.NUMERIC + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'NUMERIC']); + }); + it('GEO', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: CREATE_1.SchemaFieldTypes.GEO + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'GEO']); + }); + describe('TAG', () => { + describe('without options', () => { + it('SchemaFieldTypes.TAG', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: CREATE_1.SchemaFieldTypes.TAG + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TAG']); + }); + it('{ type: SchemaFieldTypes.TAG }', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TAG + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TAG']); + }); + }); + it('with SEPERATOR', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TAG, + SEPERATOR: 'seperator' + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TAG', 'SEPERATOR', 'seperator']); + }); + it('with CASESENSITIVE', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TAG, + CASESENSITIVE: true + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TAG', 'CASESENSITIVE']); + }); + }); + describe('with generic options', () => { + it('with AS', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TEXT, + AS: 'as' + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'AS', 'as', 'TEXT']); + }); + describe('with SORTABLE', () => { + it('true', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TEXT, + SORTABLE: true + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TEXT', 'SORTABLE']); + }); + it('UNF', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TEXT, + SORTABLE: 'UNF' + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TEXT', 'SORTABLE', 'UNF']); + }); + }); + it('with NOINDEX', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', { + field: { + type: CREATE_1.SchemaFieldTypes.TEXT, + NOINDEX: true + } + }), ['FT.CREATE', 'index', 'SCHEMA', 'field', 'TEXT', 'NOINDEX']); + }); + }); + }); + it('with ON', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + ON: 'HASH' + }), ['FT.CREATE', 'index', 'ON', 'HASH', 'SCHEMA']); + }); + describe('with PREFIX', () => { + it('string', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + PREFIX: 'prefix' + }), ['FT.CREATE', 'index', 'PREFIX', '1', 'prefix', 'SCHEMA']); + }); + it('Array', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + PREFIX: ['1', '2'] + }), ['FT.CREATE', 'index', 'PREFIX', '2', '1', '2', 'SCHEMA']); + }); + }); + it('with FILTER', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + FILTER: '@field != ""' + }), ['FT.CREATE', 'index', 'FILTER', '@field != ""', 'SCHEMA']); + }); + it('with LANGUAGE', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + LANGUAGE: _1.RedisSearchLanguages.ARABIC + }), ['FT.CREATE', 'index', 'LANGUAGE', _1.RedisSearchLanguages.ARABIC, 'SCHEMA']); + }); + it('with LANGUAGE_FIELD', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + LANGUAGE_FIELD: '@field' + }), ['FT.CREATE', 'index', 'LANGUAGE_FIELD', '@field', 'SCHEMA']); + }); + it('with SCORE', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + SCORE: 1 + }), ['FT.CREATE', 'index', 'SCORE', '1', 'SCHEMA']); + }); + it('with SCORE_FIELD', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + SCORE_FIELD: '@field' + }), ['FT.CREATE', 'index', 'SCORE_FIELD', '@field', 'SCHEMA']); + }); + it('with MAXTEXTFIELDS', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + MAXTEXTFIELDS: true + }), ['FT.CREATE', 'index', 'MAXTEXTFIELDS', 'SCHEMA']); + }); + it('with TEMPORARY', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + TEMPORARY: 1 + }), ['FT.CREATE', 'index', 'TEMPORARY', '1', 'SCHEMA']); + }); + it('with NOOFFSETS', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + NOOFFSETS: true + }), ['FT.CREATE', 'index', 'NOOFFSETS', 'SCHEMA']); + }); + it('with NOHL', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + NOHL: true + }), ['FT.CREATE', 'index', 'NOHL', 'SCHEMA']); + }); + it('with NOFIELDS', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + NOFIELDS: true + }), ['FT.CREATE', 'index', 'NOFIELDS', 'SCHEMA']); + }); + it('with NOFREQS', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + NOFREQS: true + }), ['FT.CREATE', 'index', 'NOFREQS', 'SCHEMA']); + }); + it('with SKIPINITIALSCAN', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + SKIPINITIALSCAN: true + }), ['FT.CREATE', 'index', 'SKIPINITIALSCAN', 'SCHEMA']); + }); + describe('with STOPWORDS', () => { + it('string', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + STOPWORDS: 'stopword' + }), ['FT.CREATE', 'index', 'STOPWORDS', '1', 'stopword', 'SCHEMA']); + }); + it('Array', () => { + assert_1.strict.deepEqual((0, CREATE_1.transformArguments)('index', {}, { + STOPWORDS: ['1', '2'] + }), ['FT.CREATE', 'index', 'STOPWORDS', '2', '1', '2', 'SCHEMA']); + }); + }); + }); + test_utils_1.default.testWithClient('client.ft.create', async (client) => { + assert_1.strict.equal(await client.ft.create('index', { + field: CREATE_1.SchemaFieldTypes.TEXT // TODO: shouldn't be mandatory + }), 'OK'); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/DICTADD.d.ts b/node_modules/@node-redis/search/dist/commands/DICTADD.d.ts new file mode 100644 index 0000000000..6a2d4e0478 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTADD.d.ts @@ -0,0 +1,3 @@ +import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands'; +export declare function transformArguments(dictionary: string, term: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/search/dist/commands/DICTADD.js b/node_modules/@node-redis/search/dist/commands/DICTADD.js new file mode 100644 index 0000000000..ee8e2e2995 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTADD.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +const generic_transformers_1 = require("@node-redis/client/dist/lib/commands/generic-transformers"); +function transformArguments(dictionary, term) { + return (0, generic_transformers_1.pushVerdictArguments)(['FT.DICTADD', dictionary], term); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/DICTADD.spec.d.ts b/node_modules/@node-redis/search/dist/commands/DICTADD.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTADD.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/DICTADD.spec.js b/node_modules/@node-redis/search/dist/commands/DICTADD.spec.js new file mode 100644 index 0000000000..aa3aec0646 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTADD.spec.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const DICTADD_1 = require("./DICTADD"); +describe('DICTADD', () => { + describe('transformArguments', () => { + it('string', () => { + assert_1.strict.deepEqual((0, DICTADD_1.transformArguments)('dictionary', 'term'), ['FT.DICTADD', 'dictionary', 'term']); + }); + it('Array', () => { + assert_1.strict.deepEqual((0, DICTADD_1.transformArguments)('dictionary', ['1', '2']), ['FT.DICTADD', 'dictionary', '1', '2']); + }); + }); + test_utils_1.default.testWithClient('client.ft.dictAdd', async (client) => { + assert_1.strict.equal(await client.ft.dictAdd('dictionary', 'term'), 1); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/DICTDEL.d.ts b/node_modules/@node-redis/search/dist/commands/DICTDEL.d.ts new file mode 100644 index 0000000000..6a2d4e0478 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTDEL.d.ts @@ -0,0 +1,3 @@ +import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands'; +export declare function transformArguments(dictionary: string, term: string | Array): RedisCommandArguments; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/search/dist/commands/DICTDEL.js b/node_modules/@node-redis/search/dist/commands/DICTDEL.js new file mode 100644 index 0000000000..d3b6472d66 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTDEL.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +const generic_transformers_1 = require("@node-redis/client/dist/lib/commands/generic-transformers"); +function transformArguments(dictionary, term) { + return (0, generic_transformers_1.pushVerdictArguments)(['FT.DICTDEL', dictionary], term); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/DICTDEL.spec.d.ts b/node_modules/@node-redis/search/dist/commands/DICTDEL.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTDEL.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/DICTDEL.spec.js b/node_modules/@node-redis/search/dist/commands/DICTDEL.spec.js new file mode 100644 index 0000000000..6abffa0e9d --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTDEL.spec.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const DICTDEL_1 = require("./DICTDEL"); +describe('DICTDEL', () => { + describe('transformArguments', () => { + it('string', () => { + assert_1.strict.deepEqual((0, DICTDEL_1.transformArguments)('dictionary', 'term'), ['FT.DICTDEL', 'dictionary', 'term']); + }); + it('Array', () => { + assert_1.strict.deepEqual((0, DICTDEL_1.transformArguments)('dictionary', ['1', '2']), ['FT.DICTDEL', 'dictionary', '1', '2']); + }); + }); + test_utils_1.default.testWithClient('client.ft.dictDel', async (client) => { + assert_1.strict.equal(await client.ft.dictDel('dictionary', 'term'), 0); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/DICTDUMP.d.ts b/node_modules/@node-redis/search/dist/commands/DICTDUMP.d.ts new file mode 100644 index 0000000000..3bf78084d3 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTDUMP.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(dictionary: string): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/search/dist/commands/DICTDUMP.js b/node_modules/@node-redis/search/dist/commands/DICTDUMP.js new file mode 100644 index 0000000000..e736b160ba --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTDUMP.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(dictionary) { + return ['FT.DICTDUMP', dictionary]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/DICTDUMP.spec.d.ts b/node_modules/@node-redis/search/dist/commands/DICTDUMP.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTDUMP.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/DICTDUMP.spec.js b/node_modules/@node-redis/search/dist/commands/DICTDUMP.spec.js new file mode 100644 index 0000000000..c0d2cc6d6d --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DICTDUMP.spec.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const DICTDUMP_1 = require("./DICTDUMP"); +describe('DICTDUMP', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, DICTDUMP_1.transformArguments)('dictionary'), ['FT.DICTDUMP', 'dictionary']); + }); + test_utils_1.default.testWithClient('client.ft.dictDump', async (client) => { + await client.ft.dictAdd('dictionary', 'string'); + assert_1.strict.deepEqual(await client.ft.dictDump('dictionary'), ['string']); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/DROPINDEX.d.ts b/node_modules/@node-redis/search/dist/commands/DROPINDEX.d.ts new file mode 100644 index 0000000000..e8ed7f3a9e --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DROPINDEX.d.ts @@ -0,0 +1,6 @@ +interface DropIndexOptions { + DD?: true; +} +export declare function transformArguments(index: string, options?: DropIndexOptions): Array; +export declare function transformReply(): 'OK'; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/DROPINDEX.js b/node_modules/@node-redis/search/dist/commands/DROPINDEX.js new file mode 100644 index 0000000000..6e90bc3ac3 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DROPINDEX.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(index, options) { + const args = ['FT.DROPINDEX', index]; + if (options === null || options === void 0 ? void 0 : options.DD) { + args.push('DD'); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/DROPINDEX.spec.d.ts b/node_modules/@node-redis/search/dist/commands/DROPINDEX.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DROPINDEX.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/DROPINDEX.spec.js b/node_modules/@node-redis/search/dist/commands/DROPINDEX.spec.js new file mode 100644 index 0000000000..d77e865db6 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/DROPINDEX.spec.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const CREATE_1 = require("./CREATE"); +const DROPINDEX_1 = require("./DROPINDEX"); +describe('DROPINDEX', () => { + describe('transformArguments', () => { + it('without options', () => { + assert_1.strict.deepEqual((0, DROPINDEX_1.transformArguments)('index'), ['FT.DROPINDEX', 'index']); + }); + it('with DD', () => { + assert_1.strict.deepEqual((0, DROPINDEX_1.transformArguments)('index', { DD: true }), ['FT.DROPINDEX', 'index', 'DD']); + }); + }); + test_utils_1.default.testWithClient('client.ft.dropIndex', async (client) => { + await client.ft.create('index', { + field: CREATE_1.SchemaFieldTypes.TEXT // TODO: shouldn't be mandatory + }); + assert_1.strict.equal(await client.ft.dropIndex('index'), 'OK'); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/EXPLAIN.d.ts b/node_modules/@node-redis/search/dist/commands/EXPLAIN.d.ts new file mode 100644 index 0000000000..de0e614547 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/EXPLAIN.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(index: string, query: string): Array; +export declare function transformReply(): string; diff --git a/node_modules/@node-redis/search/dist/commands/EXPLAIN.js b/node_modules/@node-redis/search/dist/commands/EXPLAIN.js new file mode 100644 index 0000000000..423705dda4 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/EXPLAIN.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(index, query) { + return ['FT.EXPLAIN', index, query]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/EXPLAIN.spec.d.ts b/node_modules/@node-redis/search/dist/commands/EXPLAIN.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/EXPLAIN.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/EXPLAIN.spec.js b/node_modules/@node-redis/search/dist/commands/EXPLAIN.spec.js new file mode 100644 index 0000000000..33a0939f58 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/EXPLAIN.spec.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const EXPLAIN_1 = require("./EXPLAIN"); +describe('EXPLAIN', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, EXPLAIN_1.transformArguments)('index', '*'), ['FT.EXPLAIN', 'index', '*']); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.d.ts b/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.d.ts new file mode 100644 index 0000000000..1eaddc97ef --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(index: string, query: string): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.js b/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.js new file mode 100644 index 0000000000..f8025608db --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(index, query) { + return ['FT.EXPLAINCLI', index, query]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.spec.d.ts b/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.spec.js b/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.spec.js new file mode 100644 index 0000000000..7e10ca600d --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/EXPLAINCLI.spec.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const EXPLAINCLI_1 = require("./EXPLAINCLI"); +describe('EXPLAINCLI', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, EXPLAINCLI_1.transformArguments)('index', '*'), ['FT.EXPLAINCLI', 'index', '*']); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/INFO.d.ts b/node_modules/@node-redis/search/dist/commands/INFO.d.ts new file mode 100644 index 0000000000..1320ef4645 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/INFO.d.ts @@ -0,0 +1,124 @@ +export declare function transformArguments(index: string): Array; +declare type InfoRawReply = [ + _: string, + indexName: string, + _: string, + indexOptions: Array, + _: string, + indexDefinition: [ + _: string, + keyType: string, + _: string, + prefixes: Array, + _: string, + defaultScore: string + ], + _: string, + attributes: Array>, + _: string, + numDocs: string, + _: string, + maxDocId: string, + _: string, + numTerms: string, + _: string, + numRecords: string, + _: string, + invertedSzMb: string, + _: string, + totalInvertedIndexBlocks: string, + _: string, + offsetVectorsSzMb: string, + _: string, + docTableSizeMb: string, + _: string, + sortableValuesSizeMb: string, + _: string, + keyTableSizeMb: string, + _: string, + recordsPerDocAvg: string, + _: string, + bytesPerRecordAvg: string, + _: string, + offsetsPerTermAvg: string, + _: string, + offsetBitsPerRecordAvg: string, + _: string, + hashIndexingFailures: string, + _: string, + indexing: string, + _: string, + percentIndexed: string, + _: string, + gcStats: [ + _: string, + bytesCollected: string, + _: string, + totalMsRun: string, + _: string, + totalCycles: string, + _: string, + averageCycleTimeMs: string, + _: string, + lastRunTimeMs: string, + _: string, + gcNumericTreesMissed: string, + _: string, + gcBlocksDenied: string + ], + _: string, + cursorStats: [ + _: string, + globalIdle: number, + _: string, + globalTotal: number, + _: string, + indexCapacity: number, + _: string, + idnexTotal: number + ] +]; +interface InfoReply { + indexName: string; + indexOptions: Array; + indexDefinition: { + keyType: string; + prefixes: Array; + defaultScore: string; + }; + attributes: Array>; + numDocs: string; + maxDocId: string; + numTerms: string; + numRecords: string; + invertedSzMb: string; + totalInvertedIndexBlocks: string; + offsetVectorsSzMb: string; + docTableSizeMb: string; + sortableValuesSizeMb: string; + keyTableSizeMb: string; + recordsPerDocAvg: string; + bytesPerRecordAvg: string; + offsetsPerTermAvg: string; + offsetBitsPerRecordAvg: string; + hashIndexingFailures: string; + indexing: string; + percentIndexed: string; + gcStats: { + bytesCollected: string; + totalMsRun: string; + totalCycles: string; + averageCycleTimeMs: string; + lastRunTimeMs: string; + gcNumericTreesMissed: string; + gcBlocksDenied: string; + }; + cursorStats: { + globalIdle: number; + globalTotal: number; + indexCapacity: number; + idnexTotal: number; + }; +} +export declare function transformReply(rawReply: InfoRawReply): InfoReply; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/INFO.js b/node_modules/@node-redis/search/dist/commands/INFO.js new file mode 100644 index 0000000000..f6b88c8993 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/INFO.js @@ -0,0 +1,52 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(index) { + return ['FT.INFO', index]; +} +exports.transformArguments = transformArguments; +function transformReply(rawReply) { + return { + indexName: rawReply[1], + indexOptions: rawReply[3], + indexDefinition: { + keyType: rawReply[5][1], + prefixes: rawReply[5][3], + defaultScore: rawReply[5][5] + }, + attributes: rawReply[7], + numDocs: rawReply[9], + maxDocId: rawReply[11], + numTerms: rawReply[13], + numRecords: rawReply[15], + invertedSzMb: rawReply[17], + totalInvertedIndexBlocks: rawReply[19], + offsetVectorsSzMb: rawReply[21], + docTableSizeMb: rawReply[23], + sortableValuesSizeMb: rawReply[25], + keyTableSizeMb: rawReply[27], + recordsPerDocAvg: rawReply[29], + bytesPerRecordAvg: rawReply[31], + offsetsPerTermAvg: rawReply[33], + offsetBitsPerRecordAvg: rawReply[35], + hashIndexingFailures: rawReply[37], + indexing: rawReply[39], + percentIndexed: rawReply[41], + gcStats: { + bytesCollected: rawReply[43][1], + totalMsRun: rawReply[43][3], + totalCycles: rawReply[43][5], + averageCycleTimeMs: rawReply[43][7], + lastRunTimeMs: rawReply[43][9], + gcNumericTreesMissed: rawReply[43][11], + gcBlocksDenied: rawReply[43][13] + }, + cursorStats: { + globalIdle: rawReply[45][1], + globalTotal: rawReply[45][3], + indexCapacity: rawReply[45][5], + idnexTotal: rawReply[45][7] + } + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/search/dist/commands/INFO.spec.d.ts b/node_modules/@node-redis/search/dist/commands/INFO.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/INFO.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/INFO.spec.js b/node_modules/@node-redis/search/dist/commands/INFO.spec.js new file mode 100644 index 0000000000..a67d47b635 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/INFO.spec.js @@ -0,0 +1,57 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const INFO_1 = require("./INFO"); +describe('INFO', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, INFO_1.transformArguments)('index'), ['FT.INFO', 'index']); + }); + test_utils_1.default.testWithClient('client.ft.info', async (client) => { + await client.ft.create('index', {}, { + ON: 'HASH' // TODO: shouldn't be mandatory + }); + assert_1.strict.deepEqual(await client.ft.info('index'), { + indexName: 'index', + indexOptions: [], + indexDefinition: { + defaultScore: '1', + keyType: 'HASH', + prefixes: [''] + }, + attributes: [], + numDocs: '0', + maxDocId: '0', + numTerms: '0', + numRecords: '0', + invertedSzMb: '0', + totalInvertedIndexBlocks: '0', + offsetVectorsSzMb: '0', + docTableSizeMb: '0', + sortableValuesSizeMb: '0', + keyTableSizeMb: '0', + recordsPerDocAvg: '-nan', + bytesPerRecordAvg: '-nan', + offsetsPerTermAvg: '-nan', + offsetBitsPerRecordAvg: '-nan', + hashIndexingFailures: '0', + indexing: '0', + percentIndexed: '1', + gcStats: { + bytesCollected: '0', + totalMsRun: '0', + totalCycles: '0', + averageCycleTimeMs: '-nan', + lastRunTimeMs: '0', + gcNumericTreesMissed: '0', + gcBlocksDenied: '0' + }, + cursorStats: { + globalIdle: 0, + globalTotal: 0, + indexCapacity: 128, + idnexTotal: 0 + } + }); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/PROFILE.d.ts b/node_modules/@node-redis/search/dist/commands/PROFILE.d.ts new file mode 100644 index 0000000000..852b3d1580 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/PROFILE.d.ts @@ -0,0 +1,7 @@ +export declare const IS_READ_ONLY = true; +interface ProfileOptions { + LIMITED?: true; +} +export declare function transformArguments(index: string, type: 'SEARCH' | 'AGGREGATE', query: string, options?: ProfileOptions): Array; +export declare function transformReply(): void; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/PROFILE.js b/node_modules/@node-redis/search/dist/commands/PROFILE.js new file mode 100644 index 0000000000..3b61797764 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/PROFILE.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(index, type, query, options) { + const args = ['FT.PROFILE', index, type]; + if (options === null || options === void 0 ? void 0 : options.LIMITED) { + args.push('LIMITED'); + } + args.push('QUERY', query); + return args; +} +exports.transformArguments = transformArguments; +function transformReply() { +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/search/dist/commands/SEARCH.d.ts b/node_modules/@node-redis/search/dist/commands/SEARCH.d.ts new file mode 100644 index 0000000000..177946b0a9 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SEARCH.d.ts @@ -0,0 +1,48 @@ +import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands'; +import { RedisSearchLanguages, PropertyName, SortByOptions } from '.'; +export declare const FIRST_KEY_INDEX = 1; +export declare const IS_READ_ONLY = true; +interface SearchOptions { + VERBATIM?: true; + NOSTOPWORDS?: true; + WITHSORTKEYS?: true; + INKEYS?: string | Array; + INFIELDS?: string | Array; + RETURN?: string | Array; + SUMMARIZE?: true | { + FIELDS?: PropertyName | Array; + FRAGS?: number; + LEN?: number; + SEPARATOR?: string; + }; + HIGHLIGHT?: true | { + FIELDS?: PropertyName | Array; + TAGS?: { + open: string; + close: string; + }; + }; + SLOP?: number; + INORDER?: true; + LANGUAGE?: RedisSearchLanguages; + EXPANDER?: string; + SCORER?: string; + MSORTBY?: SortByOptions | Array; + LIMIT?: { + from: number | string; + size: number | string; + }; +} +export declare function transformArguments(index: string, query: string, options?: SearchOptions): RedisCommandArguments; +interface SearchDocumentValue { + [key: string]: string | number | null | Array | SearchDocumentValue; +} +interface SearchReply { + total: number; + documents: Array<{ + id: string; + value: SearchDocumentValue; + }>; +} +export declare function transformReply(reply: Array): SearchReply; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SEARCH.js b/node_modules/@node-redis/search/dist/commands/SEARCH.js new file mode 100644 index 0000000000..1a9838ee7d --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SEARCH.js @@ -0,0 +1,105 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0; +const generic_transformers_1 = require("@node-redis/client/dist/lib/commands/generic-transformers"); +const _1 = require("."); +exports.FIRST_KEY_INDEX = 1; +exports.IS_READ_ONLY = true; +function transformArguments(index, query, options) { + const args = ['FT.SEARCH', index, query]; + if (options === null || options === void 0 ? void 0 : options.VERBATIM) { + args.push('VERBATIM'); + } + if (options === null || options === void 0 ? void 0 : options.NOSTOPWORDS) { + args.push('NOSTOPWORDS'); + } + // if (options?.WITHSCORES) { + // args.push('WITHSCORES'); + // } + // if (options?.WITHPAYLOADS) { + // args.push('WITHPAYLOADS'); + // } + (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'INKEYS', options === null || options === void 0 ? void 0 : options.INKEYS); + (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'INFIELDS', options === null || options === void 0 ? void 0 : options.INFIELDS); + (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'RETURN', options === null || options === void 0 ? void 0 : options.RETURN); + if (options === null || options === void 0 ? void 0 : options.SUMMARIZE) { + args.push('SUMMARIZE'); + if (typeof options.SUMMARIZE === 'object') { + if (options.SUMMARIZE.FIELDS) { + args.push('FIELDS'); + (0, generic_transformers_1.pushVerdictArgument)(args, options.SUMMARIZE.FIELDS); + } + if (options.SUMMARIZE.FRAGS) { + args.push('FRAGS', options.SUMMARIZE.FRAGS.toString()); + } + if (options.SUMMARIZE.LEN) { + args.push('LEN', options.SUMMARIZE.LEN.toString()); + } + if (options.SUMMARIZE.SEPARATOR) { + args.push('SEPARATOR', options.SUMMARIZE.SEPARATOR); + } + } + } + if (options === null || options === void 0 ? void 0 : options.HIGHLIGHT) { + args.push('HIGHLIGHT'); + if (typeof options.HIGHLIGHT === 'object') { + if (options.HIGHLIGHT.FIELDS) { + args.push('FIELDS'); + (0, generic_transformers_1.pushVerdictArgument)(args, options.HIGHLIGHT.FIELDS); + } + if (options.HIGHLIGHT.TAGS) { + args.push('TAGS', options.HIGHLIGHT.TAGS.open, options.HIGHLIGHT.TAGS.close); + } + } + } + if (options === null || options === void 0 ? void 0 : options.SLOP) { + args.push('SLOP', options.SLOP.toString()); + } + if (options === null || options === void 0 ? void 0 : options.INORDER) { + args.push('INORDER'); + } + if (options === null || options === void 0 ? void 0 : options.LANGUAGE) { + args.push('LANGUAGE', options.LANGUAGE); + } + if (options === null || options === void 0 ? void 0 : options.EXPANDER) { + args.push('EXPANDER', options.EXPANDER); + } + if (options === null || options === void 0 ? void 0 : options.SCORER) { + args.push('SCORER', options.SCORER); + } + // if (options?.EXPLAINSCORE) { + // args.push('EXPLAINSCORE'); + // } + // if (options?.PAYLOAD) { + // args.push('PAYLOAD', options.PAYLOAD); + // } + // if (options?.SORTBY) { + // args.push('SORTBY'); + // pushSortByArguments(args, options.SORTBY); + // } + if (options === null || options === void 0 ? void 0 : options.MSORTBY) { + (0, _1.pushSortByArguments)(args, 'MSORTBY', options.MSORTBY); + } + if (options === null || options === void 0 ? void 0 : options.LIMIT) { + args.push('LIMIT', options.LIMIT.from.toString(), options.LIMIT.size.toString()); + } + return args; +} +exports.transformArguments = transformArguments; +function transformReply(reply) { + const documents = []; + for (let i = 1; i < reply.length; i += 2) { + const tuples = reply[i + 1]; + documents.push({ + id: reply[i], + value: tuples.length === 2 && tuples[0] === '$' ? + JSON.parse(tuples[1]) : + (0, generic_transformers_1.transformReplyTuples)(tuples) + }); + } + return { + total: reply[0], + documents + }; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/search/dist/commands/SEARCH.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SEARCH.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SEARCH.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SEARCH.spec.js b/node_modules/@node-redis/search/dist/commands/SEARCH.spec.js new file mode 100644 index 0000000000..decde45689 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SEARCH.spec.js @@ -0,0 +1,149 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const _1 = require("."); +const test_utils_1 = require("../test-utils"); +const CREATE_1 = require("./CREATE"); +const SEARCH_1 = require("./SEARCH"); +describe('SEARCH', () => { + describe('transformArguments', () => { + it('without options', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query'), ['FT.SEARCH', 'index', 'query']); + }); + it('with VERBATIM', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { VERBATIM: true }), ['FT.SEARCH', 'index', 'query', 'VERBATIM']); + }); + it('with NOSTOPWORDS', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { NOSTOPWORDS: true }), ['FT.SEARCH', 'index', 'query', 'NOSTOPWORDS']); + }); + it('with INKEYS', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { INKEYS: 'key' }), ['FT.SEARCH', 'index', 'query', 'INKEYS', '1', 'key']); + }); + it('with INFIELDS', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { INFIELDS: 'field' }), ['FT.SEARCH', 'index', 'query', 'INFIELDS', '1', 'field']); + }); + it('with RETURN', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { RETURN: 'return' }), ['FT.SEARCH', 'index', 'query', 'RETURN', '1', 'return']); + }); + describe('with SUMMARIZE', () => { + it('true', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { SUMMARIZE: true }), ['FT.SEARCH', 'index', 'query', 'SUMMARIZE']); + }); + describe('with FIELDS', () => { + it('string', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { + SUMMARIZE: { + FIELDS: ['@field'] + } + }), ['FT.SEARCH', 'index', 'query', 'SUMMARIZE', 'FIELDS', '1', '@field']); + }); + it('Array', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { + SUMMARIZE: { + FIELDS: ['@1', '@2'] + } + }), ['FT.SEARCH', 'index', 'query', 'SUMMARIZE', 'FIELDS', '2', '@1', '@2']); + }); + }); + it('with FRAGS', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { + SUMMARIZE: { + FRAGS: 1 + } + }), ['FT.SEARCH', 'index', 'query', 'SUMMARIZE', 'FRAGS', '1']); + }); + it('with LEN', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { + SUMMARIZE: { + LEN: 1 + } + }), ['FT.SEARCH', 'index', 'query', 'SUMMARIZE', 'LEN', '1']); + }); + it('with SEPARATOR', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { + SUMMARIZE: { + SEPARATOR: 'separator' + } + }), ['FT.SEARCH', 'index', 'query', 'SUMMARIZE', 'SEPARATOR', 'separator']); + }); + }); + describe('with HIGHLIGHT', () => { + it('true', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { HIGHLIGHT: true }), ['FT.SEARCH', 'index', 'query', 'HIGHLIGHT']); + }); + describe('with FIELDS', () => { + it('string', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { + HIGHLIGHT: { + FIELDS: ['@field'] + } + }), ['FT.SEARCH', 'index', 'query', 'HIGHLIGHT', 'FIELDS', '1', '@field']); + }); + it('Array', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { + HIGHLIGHT: { + FIELDS: ['@1', '@2'] + } + }), ['FT.SEARCH', 'index', 'query', 'HIGHLIGHT', 'FIELDS', '2', '@1', '@2']); + }); + }); + it('with TAGS', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { + HIGHLIGHT: { + TAGS: { + open: 'open', + close: 'close' + } + } + }), ['FT.SEARCH', 'index', 'query', 'HIGHLIGHT', 'TAGS', 'open', 'close']); + }); + }); + it('with SLOP', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { SLOP: 1 }), ['FT.SEARCH', 'index', 'query', 'SLOP', '1']); + }); + it('with INORDER', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { INORDER: true }), ['FT.SEARCH', 'index', 'query', 'INORDER']); + }); + it('with LANGUAGE', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { LANGUAGE: _1.RedisSearchLanguages.ARABIC }), ['FT.SEARCH', 'index', 'query', 'LANGUAGE', _1.RedisSearchLanguages.ARABIC]); + }); + it('with EXPANDER', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { EXPANDER: 'expender' }), ['FT.SEARCH', 'index', 'query', 'EXPANDER', 'expender']); + }); + it('with SCORER', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { SCORER: 'scorer' }), ['FT.SEARCH', 'index', 'query', 'SCORER', 'scorer']); + }); + it('with MSORTBY', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { MSORTBY: '@by' }), ['FT.SEARCH', 'index', 'query', 'MSORTBY', '1', '@by']); + }); + it('with LIMIT', () => { + assert_1.strict.deepEqual((0, SEARCH_1.transformArguments)('index', 'query', { + LIMIT: { + from: 0, + size: 1 + } + }), ['FT.SEARCH', 'index', 'query', 'LIMIT', '0', '1']); + }); + }); + test_utils_1.default.testWithClient('client.ft.search', async (client) => { + await Promise.all([ + client.ft.create('index', { + field: CREATE_1.SchemaFieldTypes.NUMERIC + }), + client.hSet('1', 'field', '1') + ]); + assert_1.strict.deepEqual(await client.ft.search('index', '*'), { + total: 1, + documents: [{ + id: '1', + value: Object.create(null, { + field: { + value: '1', + configurable: true, + enumerable: true + } + }) + }] + }); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SPELLCHECK.d.ts b/node_modules/@node-redis/search/dist/commands/SPELLCHECK.d.ts new file mode 100644 index 0000000000..e0bcdd0420 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SPELLCHECK.d.ts @@ -0,0 +1,23 @@ +interface SpellCheckTerms { + mode: 'INCLUDE' | 'EXCLUDE'; + dictionary: string; +} +interface SpellCheckOptions { + DISTANCE?: number; + TERMS?: SpellCheckTerms | Array; +} +export declare function transformArguments(index: string, query: string, options?: SpellCheckOptions): Array; +declare type SpellCheckRawReply = Array<[ + _: string, + term: string, + suggestions: Array<[score: string, suggestion: string]> +]>; +declare type SpellCheckReply = Array<{ + term: string; + suggestions: Array<{ + score: number; + suggestion: string; + }>; +}>; +export declare function transformReply(rawReply: SpellCheckRawReply): SpellCheckReply; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SPELLCHECK.js b/node_modules/@node-redis/search/dist/commands/SPELLCHECK.js new file mode 100644 index 0000000000..68044e1910 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SPELLCHECK.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(index, query, options) { + const args = ['FT.SPELLCHECK', index, query]; + if (options === null || options === void 0 ? void 0 : options.DISTANCE) { + args.push('DISTANCE', options.DISTANCE.toString()); + } + if (options === null || options === void 0 ? void 0 : options.TERMS) { + if (Array.isArray(options.TERMS)) { + for (const term of options.TERMS) { + pushTerms(args, term); + } + } + else { + pushTerms(args, options.TERMS); + } + } + return args; +} +exports.transformArguments = transformArguments; +function pushTerms(args, { mode, dictionary }) { + args.push('TERMS', mode, dictionary); +} +function transformReply(rawReply) { + return rawReply.map(([, term, suggestions]) => ({ + term, + suggestions: suggestions.map(([score, suggestion]) => ({ + score: Number(score), + suggestion + })) + })); +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/search/dist/commands/SPELLCHECK.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SPELLCHECK.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SPELLCHECK.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SPELLCHECK.spec.js b/node_modules/@node-redis/search/dist/commands/SPELLCHECK.spec.js new file mode 100644 index 0000000000..2871468e23 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SPELLCHECK.spec.js @@ -0,0 +1,52 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const CREATE_1 = require("./CREATE"); +const SPELLCHECK_1 = require("./SPELLCHECK"); +describe('SPELLCHECK', () => { + describe('transformArguments', () => { + it('without options', () => { + assert_1.strict.deepEqual((0, SPELLCHECK_1.transformArguments)('index', 'query'), ['FT.SPELLCHECK', 'index', 'query']); + }); + it('with DISTANCE', () => { + assert_1.strict.deepEqual((0, SPELLCHECK_1.transformArguments)('index', 'query', { DISTANCE: 2 }), ['FT.SPELLCHECK', 'index', 'query', 'DISTANCE', '2']); + }); + describe('with TERMS', () => { + it('single', () => { + assert_1.strict.deepEqual((0, SPELLCHECK_1.transformArguments)('index', 'query', { + TERMS: { + mode: 'INCLUDE', + dictionary: 'dictionary' + } + }), ['FT.SPELLCHECK', 'index', 'query', 'TERMS', 'INCLUDE', 'dictionary']); + }); + it('multiple', () => { + assert_1.strict.deepEqual((0, SPELLCHECK_1.transformArguments)('index', 'query', { + TERMS: [{ + mode: 'INCLUDE', + dictionary: 'include' + }, { + mode: 'EXCLUDE', + dictionary: 'exclude' + }] + }), ['FT.SPELLCHECK', 'index', 'query', 'TERMS', 'INCLUDE', 'include', 'TERMS', 'EXCLUDE', 'exclude']); + }); + }); + }); + test_utils_1.default.testWithClient('client.ft.spellCheck', async (client) => { + await Promise.all([ + client.ft.create('index', { + field: CREATE_1.SchemaFieldTypes.TEXT + }), + client.hSet('key', 'field', 'query') + ]); + assert_1.strict.deepEqual(await client.ft.spellCheck('index', 'quer'), [{ + term: 'quer', + suggestions: [{ + score: 1, + suggestion: 'query' + }] + }]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SUGADD.d.ts b/node_modules/@node-redis/search/dist/commands/SUGADD.d.ts new file mode 100644 index 0000000000..1bbae32a1c --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGADD.d.ts @@ -0,0 +1,7 @@ +interface SugAddOptions { + INCR?: true; + PAYLOAD?: string; +} +export declare function transformArguments(key: string, string: string, score: number, options?: SugAddOptions): Array; +export declare function transformReply(): number; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SUGADD.js b/node_modules/@node-redis/search/dist/commands/SUGADD.js new file mode 100644 index 0000000000..c7276bc52a --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGADD.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(key, string, score, options) { + const args = ['FT.SUGADD', key, string, score.toString()]; + if (options === null || options === void 0 ? void 0 : options.INCR) { + args.push('INCR'); + } + if (options === null || options === void 0 ? void 0 : options.PAYLOAD) { + args.push('PAYLOAD', options.PAYLOAD); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/SUGADD.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SUGADD.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGADD.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SUGADD.spec.js b/node_modules/@node-redis/search/dist/commands/SUGADD.spec.js new file mode 100644 index 0000000000..d44954da99 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGADD.spec.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SUGADD_1 = require("./SUGADD"); +describe('SUGADD', () => { + describe('transformArguments', () => { + it('without options', () => { + assert_1.strict.deepEqual((0, SUGADD_1.transformArguments)('key', 'string', 1), ['FT.SUGADD', 'key', 'string', '1']); + }); + it('with INCR', () => { + assert_1.strict.deepEqual((0, SUGADD_1.transformArguments)('key', 'string', 1, { INCR: true }), ['FT.SUGADD', 'key', 'string', '1', 'INCR']); + }); + it('with PAYLOAD', () => { + assert_1.strict.deepEqual((0, SUGADD_1.transformArguments)('key', 'string', 1, { PAYLOAD: 'payload' }), ['FT.SUGADD', 'key', 'string', '1', 'PAYLOAD', 'payload']); + }); + }); + test_utils_1.default.testWithClient('client.ft.sugAdd', async (client) => { + assert_1.strict.equal(await client.ft.sugAdd('key', 'string', 1), 1); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SUGDEL.d.ts b/node_modules/@node-redis/search/dist/commands/SUGDEL.d.ts new file mode 100644 index 0000000000..3afb68d623 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGDEL.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(key: string, string: string): Array; +export { transformReplyBoolean as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers'; diff --git a/node_modules/@node-redis/search/dist/commands/SUGDEL.js b/node_modules/@node-redis/search/dist/commands/SUGDEL.js new file mode 100644 index 0000000000..fe04850f44 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGDEL.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = void 0; +function transformArguments(key, string) { + return ['FT.SUGDEL', key, string]; +} +exports.transformArguments = transformArguments; +var generic_transformers_1 = require("@node-redis/client/dist/lib/commands/generic-transformers"); +Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformReplyBoolean; } }); diff --git a/node_modules/@node-redis/search/dist/commands/SUGDEL.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SUGDEL.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGDEL.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SUGDEL.spec.js b/node_modules/@node-redis/search/dist/commands/SUGDEL.spec.js new file mode 100644 index 0000000000..efcd222f37 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGDEL.spec.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SUGDEL_1 = require("./SUGDEL"); +describe('SUGDEL', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, SUGDEL_1.transformArguments)('key', 'string'), ['FT.SUGDEL', 'key', 'string']); + }); + test_utils_1.default.testWithClient('client.ft.sugDel', async (client) => { + assert_1.strict.equal(await client.ft.sugDel('key', 'string'), false); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET.d.ts b/node_modules/@node-redis/search/dist/commands/SUGGET.d.ts new file mode 100644 index 0000000000..079cfc7aee --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET.d.ts @@ -0,0 +1,7 @@ +export declare const IS_READ_ONLY = true; +export interface SugGetOptions { + FUZZY?: true; + MAX?: number; +} +export declare function transformArguments(key: string, prefix: string, options?: SugGetOptions): Array; +export declare function transformReply(): null | Array; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET.js b/node_modules/@node-redis/search/dist/commands/SUGGET.js new file mode 100644 index 0000000000..522becc352 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(key, prefix, options) { + const args = ['FT.SUGGET', key, prefix]; + if (options === null || options === void 0 ? void 0 : options.FUZZY) { + args.push('FUZZY'); + } + if (options === null || options === void 0 ? void 0 : options.MAX) { + args.push('MAX', options.MAX.toString()); + } + return args; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SUGGET.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET.spec.js b/node_modules/@node-redis/search/dist/commands/SUGGET.spec.js new file mode 100644 index 0000000000..0af70575dc --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET.spec.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SUGGET_1 = require("./SUGGET"); +describe('SUGGET', () => { + describe('transformArguments', () => { + it('without options', () => { + assert_1.strict.deepEqual((0, SUGGET_1.transformArguments)('key', 'prefix'), ['FT.SUGGET', 'key', 'prefix']); + }); + it('with FUZZY', () => { + assert_1.strict.deepEqual((0, SUGGET_1.transformArguments)('key', 'prefix', { FUZZY: true }), ['FT.SUGGET', 'key', 'prefix', 'FUZZY']); + }); + it('with MAX', () => { + assert_1.strict.deepEqual((0, SUGGET_1.transformArguments)('key', 'prefix', { MAX: 10 }), ['FT.SUGGET', 'key', 'prefix', 'MAX', '10']); + }); + }); + describe('client.ft.sugGet', () => { + test_utils_1.default.testWithClient('null', async (client) => { + assert_1.strict.equal(await client.ft.sugGet('key', 'prefix'), null); + }, test_utils_1.GLOBAL.SERVERS.OPEN); + test_utils_1.default.testWithClient('with suggestions', async (client) => { + await client.ft.sugAdd('key', 'string', 1); + assert_1.strict.deepEqual(await client.ft.sugGet('key', 'string'), ['string']); + }, test_utils_1.GLOBAL.SERVERS.OPEN); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.d.ts b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.d.ts new file mode 100644 index 0000000000..a8ff95525e --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.d.ts @@ -0,0 +1,8 @@ +import { SugGetOptions } from './SUGGET'; +export { IS_READ_ONLY } from './SUGGET'; +export declare function transformArguments(key: string, prefix: string, options?: SugGetOptions): Array; +export interface SuggestionWithPayload { + suggestion: string; + payload: string | null; +} +export declare function transformReply(rawReply: Array | null): Array | null; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.js b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.js new file mode 100644 index 0000000000..c091b30165 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +const SUGGET_1 = require("./SUGGET"); +var SUGGET_2 = require("./SUGGET"); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return SUGGET_2.IS_READ_ONLY; } }); +function transformArguments(key, prefix, options) { + return [ + ...(0, SUGGET_1.transformArguments)(key, prefix, options), + 'WITHPAYLOADS' + ]; +} +exports.transformArguments = transformArguments; +function transformReply(rawReply) { + if (rawReply === null) + return null; + const transformedReply = []; + for (let i = 0; i < rawReply.length; i += 2) { + transformedReply.push({ + suggestion: rawReply[i], + payload: rawReply[i + 1] + }); + } + return transformedReply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.spec.js b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.spec.js new file mode 100644 index 0000000000..359504a9a2 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHPAYLOADS.spec.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SUGGET_WITHPAYLOADS_1 = require("./SUGGET_WITHPAYLOADS"); +describe('SUGGET WITHPAYLOADS', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, SUGGET_WITHPAYLOADS_1.transformArguments)('key', 'prefix'), ['FT.SUGGET', 'key', 'prefix', 'WITHPAYLOADS']); + }); + describe('client.ft.sugGetWithPayloads', () => { + test_utils_1.default.testWithClient('null', async (client) => { + assert_1.strict.equal(await client.ft.sugGetWithPayloads('key', 'prefix'), null); + }, test_utils_1.GLOBAL.SERVERS.OPEN); + test_utils_1.default.testWithClient('with suggestions', async (client) => { + await client.ft.sugAdd('key', 'string', 1, { PAYLOAD: 'payload' }); + assert_1.strict.deepEqual(await client.ft.sugGetWithPayloads('key', 'string'), [{ + suggestion: 'string', + payload: 'payload' + }]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.d.ts b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.d.ts new file mode 100644 index 0000000000..2d42b6873a --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.d.ts @@ -0,0 +1,8 @@ +import { SugGetOptions } from './SUGGET'; +export { IS_READ_ONLY } from './SUGGET'; +export declare function transformArguments(key: string, prefix: string, options?: SugGetOptions): Array; +export interface SuggestionWithScores { + suggestion: string; + score: number; +} +export declare function transformReply(rawReply: Array | null): Array | null; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.js b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.js new file mode 100644 index 0000000000..5147cb18c0 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +const SUGGET_1 = require("./SUGGET"); +var SUGGET_2 = require("./SUGGET"); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return SUGGET_2.IS_READ_ONLY; } }); +function transformArguments(key, prefix, options) { + return [ + ...(0, SUGGET_1.transformArguments)(key, prefix, options), + 'WITHSCORES' + ]; +} +exports.transformArguments = transformArguments; +function transformReply(rawReply) { + if (rawReply === null) + return null; + const transformedReply = []; + for (let i = 0; i < rawReply.length; i += 2) { + transformedReply.push({ + suggestion: rawReply[i], + score: Number(rawReply[i + 1]) + }); + } + return transformedReply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.spec.js b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.spec.js new file mode 100644 index 0000000000..8229fa1ad0 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES.spec.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SUGGET_WITHSCORES_1 = require("./SUGGET_WITHSCORES"); +describe('SUGGET WITHSCORES', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, SUGGET_WITHSCORES_1.transformArguments)('key', 'prefix'), ['FT.SUGGET', 'key', 'prefix', 'WITHSCORES']); + }); + describe('client.ft.sugGetWithScores', () => { + test_utils_1.default.testWithClient('null', async (client) => { + assert_1.strict.equal(await client.ft.sugGetWithScores('key', 'prefix'), null); + }, test_utils_1.GLOBAL.SERVERS.OPEN); + test_utils_1.default.testWithClient('with suggestions', async (client) => { + await client.ft.sugAdd('key', 'string', 1); + assert_1.strict.deepEqual(await client.ft.sugGetWithScores('key', 'string'), [{ + suggestion: 'string', + score: 2147483648 + }]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.d.ts b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.d.ts new file mode 100644 index 0000000000..16e232e78f --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.d.ts @@ -0,0 +1,7 @@ +import { SugGetOptions } from './SUGGET'; +import { SuggestionWithPayload } from './SUGGET_WITHPAYLOADS'; +import { SuggestionWithScores } from './SUGGET_WITHSCORES'; +export { IS_READ_ONLY } from './SUGGET'; +export declare function transformArguments(key: string, prefix: string, options?: SugGetOptions): Array; +declare type SuggestionWithScoresAndPayloads = SuggestionWithScores & SuggestionWithPayload; +export declare function transformReply(rawReply: Array | null): Array | null; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.js b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.js new file mode 100644 index 0000000000..fa5d83a18f --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0; +const SUGGET_1 = require("./SUGGET"); +var SUGGET_2 = require("./SUGGET"); +Object.defineProperty(exports, "IS_READ_ONLY", { enumerable: true, get: function () { return SUGGET_2.IS_READ_ONLY; } }); +function transformArguments(key, prefix, options) { + return [ + ...(0, SUGGET_1.transformArguments)(key, prefix, options), + 'WITHSCORES', + 'WITHPAYLOADS' + ]; +} +exports.transformArguments = transformArguments; +function transformReply(rawReply) { + if (rawReply === null) + return null; + const transformedReply = []; + for (let i = 0; i < rawReply.length; i += 3) { + transformedReply.push({ + suggestion: rawReply[i], + score: Number(rawReply[i + 1]), + payload: rawReply[i + 2] + }); + } + return transformedReply; +} +exports.transformReply = transformReply; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.spec.js b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.spec.js new file mode 100644 index 0000000000..9bcac7d140 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.spec.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SUGGET_WITHSCORES_WITHPAYLOADS_1 = require("./SUGGET_WITHSCORES_WITHPAYLOADS"); +describe('SUGGET WITHSCORES WITHPAYLOADS', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, SUGGET_WITHSCORES_WITHPAYLOADS_1.transformArguments)('key', 'prefix'), ['FT.SUGGET', 'key', 'prefix', 'WITHSCORES', 'WITHPAYLOADS']); + }); + describe('client.ft.sugGetWithScoresWithPayloads', () => { + test_utils_1.default.testWithClient('null', async (client) => { + assert_1.strict.equal(await client.ft.sugGetWithScoresWithPayloads('key', 'prefix'), null); + }, test_utils_1.GLOBAL.SERVERS.OPEN); + test_utils_1.default.testWithClient('with suggestions', async (client) => { + await client.ft.sugAdd('key', 'string', 1, { PAYLOAD: 'payload' }); + assert_1.strict.deepEqual(await client.ft.sugGetWithScoresWithPayloads('key', 'string'), [{ + suggestion: 'string', + score: 2147483648, + payload: 'payload' + }]); + }, test_utils_1.GLOBAL.SERVERS.OPEN); + }); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SUGLEN.d.ts b/node_modules/@node-redis/search/dist/commands/SUGLEN.d.ts new file mode 100644 index 0000000000..b0c716895c --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGLEN.d.ts @@ -0,0 +1,3 @@ +export declare const IS_READ_ONLY = true; +export declare function transformArguments(key: string): Array; +export declare function transformReply(): number; diff --git a/node_modules/@node-redis/search/dist/commands/SUGLEN.js b/node_modules/@node-redis/search/dist/commands/SUGLEN.js new file mode 100644 index 0000000000..3681839736 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGLEN.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = exports.IS_READ_ONLY = void 0; +exports.IS_READ_ONLY = true; +function transformArguments(key) { + return ['FT.SUGLEN', key]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/SUGLEN.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SUGLEN.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGLEN.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SUGLEN.spec.js b/node_modules/@node-redis/search/dist/commands/SUGLEN.spec.js new file mode 100644 index 0000000000..80d1530125 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SUGLEN.spec.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SUGLEN_1 = require("./SUGLEN"); +describe('SUGLEN', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, SUGLEN_1.transformArguments)('key'), ['FT.SUGLEN', 'key']); + }); + test_utils_1.default.testWithClient('client.ft.sugLen', async (client) => { + assert_1.strict.equal(await client.ft.sugLen('key'), 0); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SYNDUMP.d.ts b/node_modules/@node-redis/search/dist/commands/SYNDUMP.d.ts new file mode 100644 index 0000000000..3bade6c12c --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SYNDUMP.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(index: string): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/search/dist/commands/SYNDUMP.js b/node_modules/@node-redis/search/dist/commands/SYNDUMP.js new file mode 100644 index 0000000000..b7c153e766 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SYNDUMP.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(index) { + return ['FT.SYNDUMP', index]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/SYNDUMP.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SYNDUMP.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SYNDUMP.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SYNDUMP.spec.js b/node_modules/@node-redis/search/dist/commands/SYNDUMP.spec.js new file mode 100644 index 0000000000..28f91ff65b --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SYNDUMP.spec.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SYNDUMP_1 = require("./SYNDUMP"); +describe('SYNDUMP', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, SYNDUMP_1.transformArguments)('index'), ['FT.SYNDUMP', 'index']); + }); + test_utils_1.default.testWithClient('client.ft.synDump', async (client) => { + await client.ft.create('index', {}, { + ON: 'HASH' // TODO: shouldn't be mandatory + }); + assert_1.strict.deepEqual(await client.ft.synDump('index'), []); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/SYNUPDATE.d.ts b/node_modules/@node-redis/search/dist/commands/SYNUPDATE.d.ts new file mode 100644 index 0000000000..ce66559e77 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SYNUPDATE.d.ts @@ -0,0 +1,7 @@ +import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands'; +interface SynUpdateOptions { + SKIPINITIALSCAN?: true; +} +export declare function transformArguments(index: string, groupId: string, terms: string | Array, options?: SynUpdateOptions): RedisCommandArguments; +export declare function transformReply(): 'OK'; +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SYNUPDATE.js b/node_modules/@node-redis/search/dist/commands/SYNUPDATE.js new file mode 100644 index 0000000000..9aa5fd2fb1 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SYNUPDATE.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +const generic_transformers_1 = require("@node-redis/client/dist/lib/commands/generic-transformers"); +function transformArguments(index, groupId, terms, options) { + const args = ['FT.SYNUPDATE', index, groupId]; + if (options === null || options === void 0 ? void 0 : options.SKIPINITIALSCAN) { + args.push('SKIPINITIALSCAN'); + } + return (0, generic_transformers_1.pushVerdictArguments)(args, terms); +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/SYNUPDATE.spec.d.ts b/node_modules/@node-redis/search/dist/commands/SYNUPDATE.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SYNUPDATE.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/SYNUPDATE.spec.js b/node_modules/@node-redis/search/dist/commands/SYNUPDATE.spec.js new file mode 100644 index 0000000000..8540cc8a33 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/SYNUPDATE.spec.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const SYNUPDATE_1 = require("./SYNUPDATE"); +describe('SYNUPDATE', () => { + describe('transformArguments', () => { + it('single term', () => { + assert_1.strict.deepEqual((0, SYNUPDATE_1.transformArguments)('index', 'groupId', 'term'), ['FT.SYNUPDATE', 'index', 'groupId', 'term']); + }); + it('multiple terms', () => { + assert_1.strict.deepEqual((0, SYNUPDATE_1.transformArguments)('index', 'groupId', ['1', '2']), ['FT.SYNUPDATE', 'index', 'groupId', '1', '2']); + }); + it('with SKIPINITIALSCAN', () => { + assert_1.strict.deepEqual((0, SYNUPDATE_1.transformArguments)('index', 'groupId', 'term', { SKIPINITIALSCAN: true }), ['FT.SYNUPDATE', 'index', 'groupId', 'SKIPINITIALSCAN', 'term']); + }); + }); + test_utils_1.default.testWithClient('client.ft.synUpdate', async (client) => { + await client.ft.create('index', {}, { + ON: 'HASH' // TODO: shouldn't be mandatory + }); + assert_1.strict.equal(await client.ft.synUpdate('index', 'groupId', 'term'), 'OK'); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/TAGVALS.d.ts b/node_modules/@node-redis/search/dist/commands/TAGVALS.d.ts new file mode 100644 index 0000000000..dff3e302e6 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/TAGVALS.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(index: string, fieldName: string): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/search/dist/commands/TAGVALS.js b/node_modules/@node-redis/search/dist/commands/TAGVALS.js new file mode 100644 index 0000000000..84fc416d39 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/TAGVALS.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments(index, fieldName) { + return ['FT.TAGVALS', index, fieldName]; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/TAGVALS.spec.d.ts b/node_modules/@node-redis/search/dist/commands/TAGVALS.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/TAGVALS.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/TAGVALS.spec.js b/node_modules/@node-redis/search/dist/commands/TAGVALS.spec.js new file mode 100644 index 0000000000..9739139f17 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/TAGVALS.spec.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const CREATE_1 = require("./CREATE"); +const TAGVALS_1 = require("./TAGVALS"); +describe('TAGVALS', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, TAGVALS_1.transformArguments)('index', '@field'), ['FT.TAGVALS', 'index', '@field']); + }); + test_utils_1.default.testWithClient('client.ft.tagVals', async (client) => { + await client.ft.create('index', { + field: CREATE_1.SchemaFieldTypes.TAG + }); + assert_1.strict.deepEqual(await client.ft.tagVals('index', 'field'), []); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/_LIST.d.ts b/node_modules/@node-redis/search/dist/commands/_LIST.d.ts new file mode 100644 index 0000000000..db92074a85 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/_LIST.d.ts @@ -0,0 +1,2 @@ +export declare function transformArguments(): Array; +export declare function transformReply(): Array; diff --git a/node_modules/@node-redis/search/dist/commands/_LIST.js b/node_modules/@node-redis/search/dist/commands/_LIST.js new file mode 100644 index 0000000000..c255557fd2 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/_LIST.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.transformArguments = void 0; +function transformArguments() { + return ['FT._LIST']; +} +exports.transformArguments = transformArguments; diff --git a/node_modules/@node-redis/search/dist/commands/_LIST.spec.d.ts b/node_modules/@node-redis/search/dist/commands/_LIST.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/_LIST.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/_LIST.spec.js b/node_modules/@node-redis/search/dist/commands/_LIST.spec.js new file mode 100644 index 0000000000..7aab0a1a5d --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/_LIST.spec.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const test_utils_1 = require("../test-utils"); +const _LIST_1 = require("./_LIST"); +describe('_LIST', () => { + it('transformArguments', () => { + assert_1.strict.deepEqual((0, _LIST_1.transformArguments)(), ['FT._LIST']); + }); + test_utils_1.default.testWithClient('client.ft._list', async (client) => { + assert_1.strict.deepEqual(await client.ft._list(), []); + }, test_utils_1.GLOBAL.SERVERS.OPEN); +}); diff --git a/node_modules/@node-redis/search/dist/commands/index.d.ts b/node_modules/@node-redis/search/dist/commands/index.d.ts new file mode 100644 index 0000000000..4494c6038e --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/index.d.ts @@ -0,0 +1,119 @@ +import * as _LIST from './_LIST'; +import * as AGGREGATE from './AGGREGATE'; +import * as ALIASADD from './ALIASADD'; +import * as ALIASDEL from './ALIASDEL'; +import * as ALIASUPDATE from './ALIASUPDATE'; +import * as CONFIG_GET from './CONFIG_GET'; +import * as CONFIG_SET from './CONFIG_SET'; +import * as CREATE from './CREATE'; +import * as DICTADD from './DICTADD'; +import * as DICTDEL from './DICTDEL'; +import * as DICTDUMP from './DICTDUMP'; +import * as DROPINDEX from './DROPINDEX'; +import * as EXPLAIN from './EXPLAIN'; +import * as EXPLAINCLI from './EXPLAINCLI'; +import * as INFO from './INFO'; +import * as SEARCH from './SEARCH'; +import * as SPELLCHECK from './SPELLCHECK'; +import * as SUGADD from './SUGADD'; +import * as SUGDEL from './SUGDEL'; +import * as SUGGET_WITHPAYLOADS from './SUGGET_WITHPAYLOADS'; +import * as SUGGET_WITHSCORES_WITHPAYLOADS from './SUGGET_WITHSCORES_WITHPAYLOADS'; +import * as SUGGET_WITHSCORES from './SUGGET_WITHSCORES'; +import * as SUGGET from './SUGGET'; +import * as SUGLEN from './SUGLEN'; +import * as SYNDUMP from './SYNDUMP'; +import * as SYNUPDATE from './SYNUPDATE'; +import * as TAGVALS from './TAGVALS'; +import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands'; +declare const _default: { + _LIST: typeof _LIST; + _list: typeof _LIST; + AGGREGATE: typeof AGGREGATE; + aggregate: typeof AGGREGATE; + ALIASADD: typeof ALIASADD; + aliasAdd: typeof ALIASADD; + ALIASDEL: typeof ALIASDEL; + aliasDel: typeof ALIASDEL; + ALIASUPDATE: typeof ALIASUPDATE; + aliasUpdate: typeof ALIASUPDATE; + CONFIG_GET: typeof CONFIG_GET; + configGet: typeof CONFIG_GET; + CONFIG_SET: typeof CONFIG_SET; + configSet: typeof CONFIG_SET; + CREATE: typeof CREATE; + create: typeof CREATE; + DICTADD: typeof DICTADD; + dictAdd: typeof DICTADD; + DICTDEL: typeof DICTDEL; + dictDel: typeof DICTDEL; + DICTDUMP: typeof DICTDUMP; + dictDump: typeof DICTDUMP; + DROPINDEX: typeof DROPINDEX; + dropIndex: typeof DROPINDEX; + EXPLAIN: typeof EXPLAIN; + explain: typeof EXPLAIN; + EXPLAINCLI: typeof EXPLAINCLI; + explainCli: typeof EXPLAINCLI; + INFO: typeof INFO; + info: typeof INFO; + SEARCH: typeof SEARCH; + search: typeof SEARCH; + SPELLCHECK: typeof SPELLCHECK; + spellCheck: typeof SPELLCHECK; + SUGADD: typeof SUGADD; + sugAdd: typeof SUGADD; + SUGDEL: typeof SUGDEL; + sugDel: typeof SUGDEL; + SUGGET_WITHPAYLOADS: typeof SUGGET_WITHPAYLOADS; + sugGetWithPayloads: typeof SUGGET_WITHPAYLOADS; + SUGGET_WITHSCORES_WITHPAYLOADS: typeof SUGGET_WITHSCORES_WITHPAYLOADS; + sugGetWithScoresWithPayloads: typeof SUGGET_WITHSCORES_WITHPAYLOADS; + SUGGET_WITHSCORES: typeof SUGGET_WITHSCORES; + sugGetWithScores: typeof SUGGET_WITHSCORES; + SUGGET: typeof SUGGET; + sugGet: typeof SUGGET; + SUGLEN: typeof SUGLEN; + sugLen: typeof SUGLEN; + SYNDUMP: typeof SYNDUMP; + synDump: typeof SYNDUMP; + SYNUPDATE: typeof SYNUPDATE; + synUpdate: typeof SYNUPDATE; + TAGVALS: typeof TAGVALS; + tagVals: typeof TAGVALS; +}; +export default _default; +export declare enum RedisSearchLanguages { + ARABIC = "Arabic", + BASQUE = "Basque", + CATALANA = "Catalan", + DANISH = "Danish", + DUTCH = "Dutch", + ENGLISH = "English", + FINNISH = "Finnish", + FRENCH = "French", + GERMAN = "German", + GREEK = "Greek", + HUNGARIAN = "Hungarian", + INDONESAIN = "Indonesian", + IRISH = "Irish", + ITALIAN = "Italian", + LITHUANIAN = "Lithuanian", + NEPALI = "Nepali", + NORWEIGAN = "Norwegian", + PORTUGUESE = "Portuguese", + ROMANIAN = "Romanian", + RUSSIAN = "Russian", + SPANISH = "Spanish", + SWEDISH = "Swedish", + TAMIL = "Tamil", + TURKISH = "Turkish", + CHINESE = "Chinese" +} +export declare type PropertyName = `${'@' | '$.'}${string}`; +export declare type SortByOptions = PropertyName | { + BY: PropertyName; + DIRECTION?: 'ASC' | 'DESC'; +}; +export declare function pushSortByArguments(args: RedisCommandArguments, name: string, sortBy: SortByOptions | Array): RedisCommandArguments; +export declare function pushArgumentsWithLength(args: RedisCommandArguments, fn: (args: RedisCommandArguments) => void): RedisCommandArguments; diff --git a/node_modules/@node-redis/search/dist/commands/index.js b/node_modules/@node-redis/search/dist/commands/index.js new file mode 100644 index 0000000000..c5a0da233d --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/index.js @@ -0,0 +1,150 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.pushArgumentsWithLength = exports.pushSortByArguments = exports.RedisSearchLanguages = void 0; +const _LIST = require("./_LIST"); +const AGGREGATE = require("./AGGREGATE"); +const ALIASADD = require("./ALIASADD"); +const ALIASDEL = require("./ALIASDEL"); +const ALIASUPDATE = require("./ALIASUPDATE"); +const CONFIG_GET = require("./CONFIG_GET"); +const CONFIG_SET = require("./CONFIG_SET"); +const CREATE = require("./CREATE"); +const DICTADD = require("./DICTADD"); +const DICTDEL = require("./DICTDEL"); +const DICTDUMP = require("./DICTDUMP"); +const DROPINDEX = require("./DROPINDEX"); +const EXPLAIN = require("./EXPLAIN"); +const EXPLAINCLI = require("./EXPLAINCLI"); +const INFO = require("./INFO"); +// import * as PROFILE from './PROFILE'; +const SEARCH = require("./SEARCH"); +const SPELLCHECK = require("./SPELLCHECK"); +const SUGADD = require("./SUGADD"); +const SUGDEL = require("./SUGDEL"); +const SUGGET_WITHPAYLOADS = require("./SUGGET_WITHPAYLOADS"); +const SUGGET_WITHSCORES_WITHPAYLOADS = require("./SUGGET_WITHSCORES_WITHPAYLOADS"); +const SUGGET_WITHSCORES = require("./SUGGET_WITHSCORES"); +const SUGGET = require("./SUGGET"); +const SUGLEN = require("./SUGLEN"); +const SYNDUMP = require("./SYNDUMP"); +const SYNUPDATE = require("./SYNUPDATE"); +const TAGVALS = require("./TAGVALS"); +exports.default = { + _LIST, + _list: _LIST, + AGGREGATE, + aggregate: AGGREGATE, + ALIASADD, + aliasAdd: ALIASADD, + ALIASDEL, + aliasDel: ALIASDEL, + ALIASUPDATE, + aliasUpdate: ALIASUPDATE, + CONFIG_GET, + configGet: CONFIG_GET, + CONFIG_SET, + configSet: CONFIG_SET, + CREATE, + create: CREATE, + DICTADD, + dictAdd: DICTADD, + DICTDEL, + dictDel: DICTDEL, + DICTDUMP, + dictDump: DICTDUMP, + DROPINDEX, + dropIndex: DROPINDEX, + EXPLAIN, + explain: EXPLAIN, + EXPLAINCLI, + explainCli: EXPLAINCLI, + INFO, + info: INFO, + // PROFILE, + // profile: PROFILE, + SEARCH, + search: SEARCH, + SPELLCHECK, + spellCheck: SPELLCHECK, + SUGADD, + sugAdd: SUGADD, + SUGDEL, + sugDel: SUGDEL, + SUGGET_WITHPAYLOADS, + sugGetWithPayloads: SUGGET_WITHPAYLOADS, + SUGGET_WITHSCORES_WITHPAYLOADS, + sugGetWithScoresWithPayloads: SUGGET_WITHSCORES_WITHPAYLOADS, + SUGGET_WITHSCORES, + sugGetWithScores: SUGGET_WITHSCORES, + SUGGET, + sugGet: SUGGET, + SUGLEN, + sugLen: SUGLEN, + SYNDUMP, + synDump: SYNDUMP, + SYNUPDATE, + synUpdate: SYNUPDATE, + TAGVALS, + tagVals: TAGVALS +}; +var RedisSearchLanguages; +(function (RedisSearchLanguages) { + RedisSearchLanguages["ARABIC"] = "Arabic"; + RedisSearchLanguages["BASQUE"] = "Basque"; + RedisSearchLanguages["CATALANA"] = "Catalan"; + RedisSearchLanguages["DANISH"] = "Danish"; + RedisSearchLanguages["DUTCH"] = "Dutch"; + RedisSearchLanguages["ENGLISH"] = "English"; + RedisSearchLanguages["FINNISH"] = "Finnish"; + RedisSearchLanguages["FRENCH"] = "French"; + RedisSearchLanguages["GERMAN"] = "German"; + RedisSearchLanguages["GREEK"] = "Greek"; + RedisSearchLanguages["HUNGARIAN"] = "Hungarian"; + RedisSearchLanguages["INDONESAIN"] = "Indonesian"; + RedisSearchLanguages["IRISH"] = "Irish"; + RedisSearchLanguages["ITALIAN"] = "Italian"; + RedisSearchLanguages["LITHUANIAN"] = "Lithuanian"; + RedisSearchLanguages["NEPALI"] = "Nepali"; + RedisSearchLanguages["NORWEIGAN"] = "Norwegian"; + RedisSearchLanguages["PORTUGUESE"] = "Portuguese"; + RedisSearchLanguages["ROMANIAN"] = "Romanian"; + RedisSearchLanguages["RUSSIAN"] = "Russian"; + RedisSearchLanguages["SPANISH"] = "Spanish"; + RedisSearchLanguages["SWEDISH"] = "Swedish"; + RedisSearchLanguages["TAMIL"] = "Tamil"; + RedisSearchLanguages["TURKISH"] = "Turkish"; + RedisSearchLanguages["CHINESE"] = "Chinese"; +})(RedisSearchLanguages = exports.RedisSearchLanguages || (exports.RedisSearchLanguages = {})); +function pushSortByProperty(args, sortBy) { + if (typeof sortBy === 'string') { + args.push(sortBy); + } + else { + args.push(sortBy.BY); + if (sortBy.DIRECTION) { + args.push(sortBy.DIRECTION); + } + } +} +function pushSortByArguments(args, name, sortBy) { + const lengthBefore = args.push(name, '' // will be overwritten + ); + if (Array.isArray(sortBy)) { + for (const field of sortBy) { + pushSortByProperty(args, field); + } + } + else { + pushSortByProperty(args, sortBy); + } + args[lengthBefore - 1] = (args.length - lengthBefore).toString(); + return args; +} +exports.pushSortByArguments = pushSortByArguments; +function pushArgumentsWithLength(args, fn) { + const lengthIndex = args.push('') - 1; + fn(args); + args[lengthIndex] = (args.length - lengthIndex - 1).toString(); + return args; +} +exports.pushArgumentsWithLength = pushArgumentsWithLength; diff --git a/node_modules/@node-redis/search/dist/commands/index.spec.d.ts b/node_modules/@node-redis/search/dist/commands/index.spec.d.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/index.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@node-redis/search/dist/commands/index.spec.js b/node_modules/@node-redis/search/dist/commands/index.spec.js new file mode 100644 index 0000000000..321bb66139 --- /dev/null +++ b/node_modules/@node-redis/search/dist/commands/index.spec.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const _1 = require("."); +describe('pushSortByArguments', () => { + describe('single', () => { + it('string', () => { + assert_1.strict.deepEqual((0, _1.pushSortByArguments)([], 'SORTBT', '@property'), ['SORTBT', '1', '@property']); + }); + it('.BY', () => { + assert_1.strict.deepEqual((0, _1.pushSortByArguments)([], 'SORTBT', { BY: '@property' }), ['SORTBT', '1', '@property']); + }); + it('with DIRECTION', () => { + assert_1.strict.deepEqual((0, _1.pushSortByArguments)([], 'SORTBY', { + BY: '@property', + DIRECTION: 'ASC' + }), ['SORTBY', '2', '@property', 'ASC']); + }); + }); + it('multiple', () => { + assert_1.strict.deepEqual((0, _1.pushSortByArguments)([], 'SORTBY', ['@1', '@2']), ['SORTBY', '2', '@1', '@2']); + }); +}); +it('pushArgumentsWithLength', () => { + assert_1.strict.deepEqual((0, _1.pushArgumentsWithLength)(['a'], args => { + args.push('b', 'c'); + }), ['a', '2', 'b', 'c']); +}); diff --git a/node_modules/@node-redis/search/dist/index.d.ts b/node_modules/@node-redis/search/dist/index.d.ts new file mode 100644 index 0000000000..bb56bdacca --- /dev/null +++ b/node_modules/@node-redis/search/dist/index.d.ts @@ -0,0 +1,3 @@ +export { default } from './commands'; +export { SchemaFieldTypes, SchemaTextFieldPhonetics } from './commands/CREATE'; +export { AggregateSteps, AggregateGroupByReducers } from './commands/AGGREGATE'; diff --git a/node_modules/@node-redis/search/dist/index.js b/node_modules/@node-redis/search/dist/index.js new file mode 100644 index 0000000000..bbdd732ab4 --- /dev/null +++ b/node_modules/@node-redis/search/dist/index.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AggregateGroupByReducers = exports.AggregateSteps = exports.SchemaTextFieldPhonetics = exports.SchemaFieldTypes = exports.default = void 0; +var commands_1 = require("./commands"); +Object.defineProperty(exports, "default", { enumerable: true, get: function () { return commands_1.default; } }); +var CREATE_1 = require("./commands/CREATE"); +Object.defineProperty(exports, "SchemaFieldTypes", { enumerable: true, get: function () { return CREATE_1.SchemaFieldTypes; } }); +Object.defineProperty(exports, "SchemaTextFieldPhonetics", { enumerable: true, get: function () { return CREATE_1.SchemaTextFieldPhonetics; } }); +var AGGREGATE_1 = require("./commands/AGGREGATE"); +Object.defineProperty(exports, "AggregateSteps", { enumerable: true, get: function () { return AGGREGATE_1.AggregateSteps; } }); +Object.defineProperty(exports, "AggregateGroupByReducers", { enumerable: true, get: function () { return AGGREGATE_1.AggregateGroupByReducers; } }); diff --git a/node_modules/@node-redis/search/dist/test-utils.d.ts b/node_modules/@node-redis/search/dist/test-utils.d.ts new file mode 100644 index 0000000000..4213f1c688 --- /dev/null +++ b/node_modules/@node-redis/search/dist/test-utils.d.ts @@ -0,0 +1,70 @@ +import TestUtils from '@node-redis/test-utils'; +declare const _default: TestUtils; +export default _default; +export declare const GLOBAL: { + SERVERS: { + OPEN: { + serverArguments: string[]; + clientOptions: { + modules: { + ft: { + _LIST: typeof import("./commands/_LIST"); + _list: typeof import("./commands/_LIST"); + AGGREGATE: typeof import("./commands/AGGREGATE"); + aggregate: typeof import("./commands/AGGREGATE"); + ALIASADD: typeof import("./commands/ALIASADD"); + aliasAdd: typeof import("./commands/ALIASADD"); + ALIASDEL: typeof import("./commands/ALIASDEL"); + aliasDel: typeof import("./commands/ALIASDEL"); + ALIASUPDATE: typeof import("./commands/ALIASUPDATE"); + aliasUpdate: typeof import("./commands/ALIASUPDATE"); + CONFIG_GET: typeof import("./commands/CONFIG_GET"); + configGet: typeof import("./commands/CONFIG_GET"); + CONFIG_SET: typeof import("./commands/CONFIG_SET"); + configSet: typeof import("./commands/CONFIG_SET"); + CREATE: typeof import("./commands/CREATE"); + create: typeof import("./commands/CREATE"); + DICTADD: typeof import("./commands/DICTADD"); + dictAdd: typeof import("./commands/DICTADD"); + DICTDEL: typeof import("./commands/DICTDEL"); + dictDel: typeof import("./commands/DICTDEL"); + DICTDUMP: typeof import("./commands/DICTDUMP"); + dictDump: typeof import("./commands/DICTDUMP"); + DROPINDEX: typeof import("./commands/DROPINDEX"); + dropIndex: typeof import("./commands/DROPINDEX"); + EXPLAIN: typeof import("./commands/EXPLAIN"); + explain: typeof import("./commands/EXPLAIN"); + EXPLAINCLI: typeof import("./commands/EXPLAINCLI"); + explainCli: typeof import("./commands/EXPLAINCLI"); + INFO: typeof import("./commands/INFO"); + info: typeof import("./commands/INFO"); + SEARCH: typeof import("./commands/SEARCH"); + search: typeof import("./commands/SEARCH"); + SPELLCHECK: typeof import("./commands/SPELLCHECK"); + spellCheck: typeof import("./commands/SPELLCHECK"); + SUGADD: typeof import("./commands/SUGADD"); + sugAdd: typeof import("./commands/SUGADD"); + SUGDEL: typeof import("./commands/SUGDEL"); + sugDel: typeof import("./commands/SUGDEL"); + SUGGET_WITHPAYLOADS: typeof import("./commands/SUGGET_WITHPAYLOADS"); + sugGetWithPayloads: typeof import("./commands/SUGGET_WITHPAYLOADS"); + SUGGET_WITHSCORES_WITHPAYLOADS: typeof import("./commands/SUGGET_WITHSCORES_WITHPAYLOADS"); + sugGetWithScoresWithPayloads: typeof import("./commands/SUGGET_WITHSCORES_WITHPAYLOADS"); + SUGGET_WITHSCORES: typeof import("./commands/SUGGET_WITHSCORES"); + sugGetWithScores: typeof import("./commands/SUGGET_WITHSCORES"); + SUGGET: typeof import("./commands/SUGGET"); + sugGet: typeof import("./commands/SUGGET"); + SUGLEN: typeof import("./commands/SUGLEN"); + sugLen: typeof import("./commands/SUGLEN"); + SYNDUMP: typeof import("./commands/SYNDUMP"); + synDump: typeof import("./commands/SYNDUMP"); + SYNUPDATE: typeof import("./commands/SYNUPDATE"); + synUpdate: typeof import("./commands/SYNUPDATE"); + TAGVALS: typeof import("./commands/TAGVALS"); + tagVals: typeof import("./commands/TAGVALS"); + }; + }; + }; + }; + }; +}; diff --git a/node_modules/@node-redis/search/dist/test-utils.js b/node_modules/@node-redis/search/dist/test-utils.js new file mode 100644 index 0000000000..e053d0ba32 --- /dev/null +++ b/node_modules/@node-redis/search/dist/test-utils.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GLOBAL = void 0; +const test_utils_1 = require("@node-redis/test-utils"); +const _1 = require("."); +exports.default = new test_utils_1.default({ + dockerImageName: 'redislabs/redisearch', + dockerImageVersionArgument: 'redisearch-version', + defaultDockerVersion: '2.2.1' +}); +exports.GLOBAL = { + SERVERS: { + OPEN: { + serverArguments: ['--loadmodule /usr/lib/redis/modules/redisearch.so'], + clientOptions: { + modules: { + ft: _1.default + } + } + } + } +}; diff --git a/node_modules/@node-redis/search/package.json b/node_modules/@node-redis/search/package.json new file mode 100644 index 0000000000..e5730ab886 --- /dev/null +++ b/node_modules/@node-redis/search/package.json @@ -0,0 +1,24 @@ +{ + "name": "@node-redis/search", + "version": "1.0.0", + "license": "MIT", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "test": "nyc -r text-summary -r lcov mocha -r source-map-support/register -r ts-node/register './lib/**/*.spec.ts'", + "build": "tsc" + }, + "peerDependencies": { + "@node-redis/client": "^1.0.0" + }, + "devDependencies": { + "@istanbuljs/nyc-config-typescript": "^1.0.1", + "@node-redis/test-utils": "*", + "@types/node": "^16.11.10", + "nyc": "^15.1.0", + "release-it": "^14.11.8", + "source-map-support": "^0.5.21", + "ts-node": "^10.4.0", + "typescript": "^4.5.2" + } +} diff --git a/node_modules/ansi-styles/index.d.ts b/node_modules/ansi-styles/index.d.ts new file mode 100644 index 0000000000..44a907e580 --- /dev/null +++ b/node_modules/ansi-styles/index.d.ts @@ -0,0 +1,345 @@ +declare type CSSColor = + | 'aliceblue' + | 'antiquewhite' + | 'aqua' + | 'aquamarine' + | 'azure' + | 'beige' + | 'bisque' + | 'black' + | 'blanchedalmond' + | 'blue' + | 'blueviolet' + | 'brown' + | 'burlywood' + | 'cadetblue' + | 'chartreuse' + | 'chocolate' + | 'coral' + | 'cornflowerblue' + | 'cornsilk' + | 'crimson' + | 'cyan' + | 'darkblue' + | 'darkcyan' + | 'darkgoldenrod' + | 'darkgray' + | 'darkgreen' + | 'darkgrey' + | 'darkkhaki' + | 'darkmagenta' + | 'darkolivegreen' + | 'darkorange' + | 'darkorchid' + | 'darkred' + | 'darksalmon' + | 'darkseagreen' + | 'darkslateblue' + | 'darkslategray' + | 'darkslategrey' + | 'darkturquoise' + | 'darkviolet' + | 'deeppink' + | 'deepskyblue' + | 'dimgray' + | 'dimgrey' + | 'dodgerblue' + | 'firebrick' + | 'floralwhite' + | 'forestgreen' + | 'fuchsia' + | 'gainsboro' + | 'ghostwhite' + | 'gold' + | 'goldenrod' + | 'gray' + | 'green' + | 'greenyellow' + | 'grey' + | 'honeydew' + | 'hotpink' + | 'indianred' + | 'indigo' + | 'ivory' + | 'khaki' + | 'lavender' + | 'lavenderblush' + | 'lawngreen' + | 'lemonchiffon' + | 'lightblue' + | 'lightcoral' + | 'lightcyan' + | 'lightgoldenrodyellow' + | 'lightgray' + | 'lightgreen' + | 'lightgrey' + | 'lightpink' + | 'lightsalmon' + | 'lightseagreen' + | 'lightskyblue' + | 'lightslategray' + | 'lightslategrey' + | 'lightsteelblue' + | 'lightyellow' + | 'lime' + | 'limegreen' + | 'linen' + | 'magenta' + | 'maroon' + | 'mediumaquamarine' + | 'mediumblue' + | 'mediumorchid' + | 'mediumpurple' + | 'mediumseagreen' + | 'mediumslateblue' + | 'mediumspringgreen' + | 'mediumturquoise' + | 'mediumvioletred' + | 'midnightblue' + | 'mintcream' + | 'mistyrose' + | 'moccasin' + | 'navajowhite' + | 'navy' + | 'oldlace' + | 'olive' + | 'olivedrab' + | 'orange' + | 'orangered' + | 'orchid' + | 'palegoldenrod' + | 'palegreen' + | 'paleturquoise' + | 'palevioletred' + | 'papayawhip' + | 'peachpuff' + | 'peru' + | 'pink' + | 'plum' + | 'powderblue' + | 'purple' + | 'rebeccapurple' + | 'red' + | 'rosybrown' + | 'royalblue' + | 'saddlebrown' + | 'salmon' + | 'sandybrown' + | 'seagreen' + | 'seashell' + | 'sienna' + | 'silver' + | 'skyblue' + | 'slateblue' + | 'slategray' + | 'slategrey' + | 'snow' + | 'springgreen' + | 'steelblue' + | 'tan' + | 'teal' + | 'thistle' + | 'tomato' + | 'turquoise' + | 'violet' + | 'wheat' + | 'white' + | 'whitesmoke' + | 'yellow' + | 'yellowgreen'; + +declare namespace ansiStyles { + interface ColorConvert { + /** + The RGB color space. + + @param red - (`0`-`255`) + @param green - (`0`-`255`) + @param blue - (`0`-`255`) + */ + rgb(red: number, green: number, blue: number): string; + + /** + The RGB HEX color space. + + @param hex - A hexadecimal string containing RGB data. + */ + hex(hex: string): string; + + /** + @param keyword - A CSS color name. + */ + keyword(keyword: CSSColor): string; + + /** + The HSL color space. + + @param hue - (`0`-`360`) + @param saturation - (`0`-`100`) + @param lightness - (`0`-`100`) + */ + hsl(hue: number, saturation: number, lightness: number): string; + + /** + The HSV color space. + + @param hue - (`0`-`360`) + @param saturation - (`0`-`100`) + @param value - (`0`-`100`) + */ + hsv(hue: number, saturation: number, value: number): string; + + /** + The HSV color space. + + @param hue - (`0`-`360`) + @param whiteness - (`0`-`100`) + @param blackness - (`0`-`100`) + */ + hwb(hue: number, whiteness: number, blackness: number): string; + + /** + Use a [4-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4-bit) to set text color. + */ + ansi(ansi: number): string; + + /** + Use an [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color. + */ + ansi256(ansi: number): string; + } + + interface CSPair { + /** + The ANSI terminal control sequence for starting this style. + */ + readonly open: string; + + /** + The ANSI terminal control sequence for ending this style. + */ + readonly close: string; + } + + interface ColorBase { + readonly ansi: ColorConvert; + readonly ansi256: ColorConvert; + readonly ansi16m: ColorConvert; + + /** + The ANSI terminal control sequence for ending this color. + */ + readonly close: string; + } + + interface Modifier { + /** + Resets the current color chain. + */ + readonly reset: CSPair; + + /** + Make text bold. + */ + readonly bold: CSPair; + + /** + Emitting only a small amount of light. + */ + readonly dim: CSPair; + + /** + Make text italic. (Not widely supported) + */ + readonly italic: CSPair; + + /** + Make text underline. (Not widely supported) + */ + readonly underline: CSPair; + + /** + Inverse background and foreground colors. + */ + readonly inverse: CSPair; + + /** + Prints the text, but makes it invisible. + */ + readonly hidden: CSPair; + + /** + Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: CSPair; + } + + interface ForegroundColor { + readonly black: CSPair; + readonly red: CSPair; + readonly green: CSPair; + readonly yellow: CSPair; + readonly blue: CSPair; + readonly cyan: CSPair; + readonly magenta: CSPair; + readonly white: CSPair; + + /** + Alias for `blackBright`. + */ + readonly gray: CSPair; + + /** + Alias for `blackBright`. + */ + readonly grey: CSPair; + + readonly blackBright: CSPair; + readonly redBright: CSPair; + readonly greenBright: CSPair; + readonly yellowBright: CSPair; + readonly blueBright: CSPair; + readonly cyanBright: CSPair; + readonly magentaBright: CSPair; + readonly whiteBright: CSPair; + } + + interface BackgroundColor { + readonly bgBlack: CSPair; + readonly bgRed: CSPair; + readonly bgGreen: CSPair; + readonly bgYellow: CSPair; + readonly bgBlue: CSPair; + readonly bgCyan: CSPair; + readonly bgMagenta: CSPair; + readonly bgWhite: CSPair; + + /** + Alias for `bgBlackBright`. + */ + readonly bgGray: CSPair; + + /** + Alias for `bgBlackBright`. + */ + readonly bgGrey: CSPair; + + readonly bgBlackBright: CSPair; + readonly bgRedBright: CSPair; + readonly bgGreenBright: CSPair; + readonly bgYellowBright: CSPair; + readonly bgBlueBright: CSPair; + readonly bgCyanBright: CSPair; + readonly bgMagentaBright: CSPair; + readonly bgWhiteBright: CSPair; + } +} + +declare const ansiStyles: { + readonly modifier: ansiStyles.Modifier; + readonly color: ansiStyles.ForegroundColor & ansiStyles.ColorBase; + readonly bgColor: ansiStyles.BackgroundColor & ansiStyles.ColorBase; + readonly codes: ReadonlyMap; +} & ansiStyles.BackgroundColor & ansiStyles.ForegroundColor & ansiStyles.Modifier; + +export = ansiStyles; diff --git a/node_modules/ansi-styles/index.js b/node_modules/ansi-styles/index.js new file mode 100644 index 0000000000..5d82581a13 --- /dev/null +++ b/node_modules/ansi-styles/index.js @@ -0,0 +1,163 @@ +'use strict'; + +const wrapAnsi16 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => (...args) => { + const rgb = fn(...args); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +const ansi2ansi = n => n; +const rgb2rgb = (r, g, b) => [r, g, b]; + +const setLazyProperty = (object, property, get) => { + Object.defineProperty(object, property, { + get: () => { + const value = get(); + + Object.defineProperty(object, property, { + value, + enumerable: true, + configurable: true + }); + + return value; + }, + enumerable: true, + configurable: true + }); +}; + +/** @type {typeof import('color-convert')} */ +let colorConvert; +const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { + if (colorConvert === undefined) { + colorConvert = require('color-convert'); + } + + const offset = isBackground ? 10 : 0; + const styles = {}; + + for (const [sourceSpace, suite] of Object.entries(colorConvert)) { + const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace; + if (sourceSpace === targetSpace) { + styles[name] = wrap(identity, offset); + } else if (typeof suite === 'object') { + styles[name] = wrap(suite[targetSpace], offset); + } + } + + return styles; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + + // Bright color + blackBright: [90, 39], + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Alias bright black as gray (and grey) + styles.color.gray = styles.color.blackBright; + styles.bgColor.bgGray = styles.bgColor.bgBlackBright; + styles.color.grey = styles.color.blackBright; + styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; + + for (const [groupName, group] of Object.entries(styles)) { + for (const [styleName, style] of Object.entries(group)) { + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + } + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false)); + setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false)); + setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false)); + setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true)); + setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true)); + setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true)); + + return styles; +} + +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); diff --git a/node_modules/ansi-styles/license b/node_modules/ansi-styles/license new file mode 100644 index 0000000000..e7af2f7710 --- /dev/null +++ b/node_modules/ansi-styles/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/ansi-styles/package.json b/node_modules/ansi-styles/package.json new file mode 100644 index 0000000000..75393284d7 --- /dev/null +++ b/node_modules/ansi-styles/package.json @@ -0,0 +1,56 @@ +{ + "name": "ansi-styles", + "version": "4.3.0", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": "chalk/ansi-styles", + "funding": "https://github.com/chalk/ansi-styles?sponsor=1", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd", + "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "color-convert": "^2.0.1" + }, + "devDependencies": { + "@types/color-convert": "^1.9.0", + "ava": "^2.3.0", + "svg-term-cli": "^2.1.1", + "tsd": "^0.11.0", + "xo": "^0.25.3" + } +} diff --git a/node_modules/ansi-styles/readme.md b/node_modules/ansi-styles/readme.md new file mode 100644 index 0000000000..24883de808 --- /dev/null +++ b/node_modules/ansi-styles/readme.md @@ -0,0 +1,152 @@ +# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) + +> [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. + + + +## Install + +``` +$ npm install ansi-styles +``` + +## Usage + +```js +const style = require('ansi-styles'); + +console.log(`${style.green.open}Hello world!${style.green.close}`); + + +// Color conversion between 16/256/truecolor +// NOTE: If conversion goes to 16 colors or 256 colors, the original color +// may be degraded to fit that color palette. This means terminals +// that do not support 16 million colors will best-match the +// original color. +console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); +console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); +console.log(style.color.ansi16m.hex('#abcdef') + 'Hello world!' + style.color.close); +``` + +## API + +Each style has an `open` and `close` property. + +## Styles + +### Modifiers + +- `reset` +- `bold` +- `dim` +- `italic` *(Not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(Not widely supported)* + +### Colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `blackBright` (alias: `gray`, `grey`) +- `redBright` +- `greenBright` +- `yellowBright` +- `blueBright` +- `magentaBright` +- `cyanBright` +- `whiteBright` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` +- `bgBlackBright` (alias: `bgGray`, `bgGrey`) +- `bgRedBright` +- `bgGreenBright` +- `bgYellowBright` +- `bgBlueBright` +- `bgMagentaBright` +- `bgCyanBright` +- `bgWhiteBright` + +## Advanced usage + +By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. + +- `style.modifier` +- `style.color` +- `style.bgColor` + +###### Example + +```js +console.log(style.color.green.open); +``` + +Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. + +###### Example + +```js +console.log(style.codes.get(36)); +//=> 39 +``` + +## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) + +`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. + +The following color spaces from `color-convert` are supported: + +- `rgb` +- `hex` +- `keyword` +- `hsl` +- `hsv` +- `hwb` +- `ansi` +- `ansi256` + +To use these, call the associated conversion function with the intended output, for example: + +```js +style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code +style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code + +style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code +style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code + +style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code +style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code +``` + +## Related + +- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + +## For enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of `ansi-styles` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-ansi-styles?utm_source=npm-ansi-styles&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/at-least-node/LICENSE b/node_modules/at-least-node/LICENSE new file mode 100644 index 0000000000..5e29ccc5ee --- /dev/null +++ b/node_modules/at-least-node/LICENSE @@ -0,0 +1,6 @@ +The ISC License +Copyright (c) 2020 Ryan Zimmerman + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/at-least-node/README.md b/node_modules/at-least-node/README.md new file mode 100644 index 0000000000..fd6e514682 --- /dev/null +++ b/node_modules/at-least-node/README.md @@ -0,0 +1,25 @@ +# at-least-node + +![npm](https://img.shields.io/npm/v/at-least-node) +![node](https://img.shields.io/node/v/at-least-node) +![NPM](https://img.shields.io/npm/l/at-least-node) + +Sometimes you need to check if you're on _at least_ a given Node.js version, but you don't want to pull in the whole [`semver`](https://www.npmjs.com/package/semver) kitchen sink. That's what `at-least-node` is for. + +| Package | Size | +| --------------- | ------- | +| `at-least-node` | 2.6 kB | +| `semver` | 75.5 kB | + +```js +const atLeastNode = require('at-least-node') +atLeastNode('10.12.0') +// -> true on Node 10.12.0+, false on anything below that +``` + +When passing in a version string: + +- You cannot include a leading `v` (i.e. `v10.12.0`) +- You cannot omit sections (i.e. `10.12`) +- You cannot use pre-releases (i.e. `1.0.0-beta`) +- There is no input validation, if you make a mistake, the resulting behavior is undefined diff --git a/node_modules/at-least-node/index.js b/node_modules/at-least-node/index.js new file mode 100644 index 0000000000..974a2fa854 --- /dev/null +++ b/node_modules/at-least-node/index.js @@ -0,0 +1,5 @@ +module.exports = r => { + const n = process.versions.node.split('.').map(x => parseInt(x, 10)) + r = r.split('.').map(x => parseInt(x, 10)) + return n[0] > r[0] || (n[0] === r[0] && (n[1] > r[1] || (n[1] === r[1] && n[2] >= r[2]))) +} diff --git a/node_modules/at-least-node/package.json b/node_modules/at-least-node/package.json new file mode 100644 index 0000000000..2c13641f9c --- /dev/null +++ b/node_modules/at-least-node/package.json @@ -0,0 +1,32 @@ +{ + "name": "at-least-node", + "version": "1.0.0", + "description": "Lightweight Node.js version sniffing/comparison", + "keywords": [ + "semver", + "feature" + ], + "homepage": "https://github.com/RyanZim/at-least-node#readme", + "bugs": { + "url": "https://github.com/RyanZim/at-least-node/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/RyanZim/at-least-node.git" + }, + "license": "ISC", + "author": "Ryan Zimmerman ", + "main": "index.js", + "files": [], + "scripts": { + "test": "ava" + }, + "devDependencies": { + "ava": "^3.1.0", + "rewire": "^4.0.1", + "semver": "^7.1.2" + }, + "engines": { + "node": ">= 4.0.0" + } +} diff --git a/node_modules/balanced-match/.github/FUNDING.yml b/node_modules/balanced-match/.github/FUNDING.yml new file mode 100644 index 0000000000..cea8b16e9e --- /dev/null +++ b/node_modules/balanced-match/.github/FUNDING.yml @@ -0,0 +1,2 @@ +tidelift: "npm/balanced-match" +patreon: juliangruber diff --git a/node_modules/balanced-match/LICENSE.md b/node_modules/balanced-match/LICENSE.md new file mode 100644 index 0000000000..2cdc8e4148 --- /dev/null +++ b/node_modules/balanced-match/LICENSE.md @@ -0,0 +1,21 @@ +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/balanced-match/README.md b/node_modules/balanced-match/README.md new file mode 100644 index 0000000000..d2a48b6b49 --- /dev/null +++ b/node_modules/balanced-match/README.md @@ -0,0 +1,97 @@ +# balanced-match + +Match balanced string pairs, like `{` and `}` or `` and ``. Supports regular expressions as well! + +[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match) +[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match) + +[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match) + +## Example + +Get the first matching pair of braces: + +```js +var balanced = require('balanced-match'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); +console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre { in{nest} } post')); +``` + +The matches are: + +```bash +$ node example.js +{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } +{ start: 3, + end: 9, + pre: 'pre', + body: 'first', + post: 'between{second}post' } +{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' } +``` + +## API + +### var m = balanced(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +object with those keys: + +* **start** the index of the first match of `a` +* **end** the index of the matching `b` +* **pre** the preamble, `a` and `b` not included +* **body** the match, `a` and `b` not included +* **post** the postscript, `a` and `b` not included + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`. + +### var r = balanced.range(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +array with indexes: `[ , ]`. + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install balanced-match +``` + +## Security contact information + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/balanced-match/index.js b/node_modules/balanced-match/index.js new file mode 100644 index 0000000000..c67a64608d --- /dev/null +++ b/node_modules/balanced-match/index.js @@ -0,0 +1,62 @@ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json new file mode 100644 index 0000000000..ce6073e040 --- /dev/null +++ b/node_modules/balanced-match/package.json @@ -0,0 +1,48 @@ +{ + "name": "balanced-match", + "description": "Match balanced character pairs, like \"{\" and \"}\"", + "version": "1.0.2", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/balanced-match.git" + }, + "homepage": "https://github.com/juliangruber/balanced-match", + "main": "index.js", + "scripts": { + "test": "tape test/test.js", + "bench": "matcha test/bench.js" + }, + "devDependencies": { + "matcha": "^0.7.0", + "tape": "^4.6.0" + }, + "keywords": [ + "match", + "regexp", + "test", + "balanced", + "parse" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/block-stream/LICENCE b/node_modules/block-stream/LICENCE new file mode 100644 index 0000000000..74489e2e26 --- /dev/null +++ b/node_modules/block-stream/LICENCE @@ -0,0 +1,25 @@ +Copyright (c) Isaac Z. Schlueter +All rights reserved. + +The BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/block-stream/LICENSE b/node_modules/block-stream/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/node_modules/block-stream/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/block-stream/README.md b/node_modules/block-stream/README.md new file mode 100644 index 0000000000..c16e9c4688 --- /dev/null +++ b/node_modules/block-stream/README.md @@ -0,0 +1,14 @@ +# block-stream + +A stream of blocks. + +Write data into it, and it'll output data in buffer blocks the size you +specify, padding with zeroes if necessary. + +```javascript +var block = new BlockStream(512) +fs.createReadStream("some-file").pipe(block) +block.pipe(fs.createWriteStream("block-file")) +``` + +When `.end()` or `.flush()` is called, it'll pad the block with zeroes. diff --git a/node_modules/block-stream/block-stream.js b/node_modules/block-stream/block-stream.js new file mode 100644 index 0000000000..008de035c2 --- /dev/null +++ b/node_modules/block-stream/block-stream.js @@ -0,0 +1,209 @@ +// write data to it, and it'll emit data in 512 byte blocks. +// if you .end() or .flush(), it'll emit whatever it's got, +// padded with nulls to 512 bytes. + +module.exports = BlockStream + +var Stream = require("stream").Stream + , inherits = require("inherits") + , assert = require("assert").ok + , debug = process.env.DEBUG ? console.error : function () {} + +function BlockStream (size, opt) { + this.writable = this.readable = true + this._opt = opt || {} + this._chunkSize = size || 512 + this._offset = 0 + this._buffer = [] + this._bufferLength = 0 + if (this._opt.nopad) this._zeroes = false + else { + this._zeroes = new Buffer(this._chunkSize) + for (var i = 0; i < this._chunkSize; i ++) { + this._zeroes[i] = 0 + } + } +} + +inherits(BlockStream, Stream) + +BlockStream.prototype.write = function (c) { + // debug(" BS write", c) + if (this._ended) throw new Error("BlockStream: write after end") + if (c && !Buffer.isBuffer(c)) c = new Buffer(c + "") + if (c.length) { + this._buffer.push(c) + this._bufferLength += c.length + } + // debug("pushed onto buffer", this._bufferLength) + if (this._bufferLength >= this._chunkSize) { + if (this._paused) { + // debug(" BS paused, return false, need drain") + this._needDrain = true + return false + } + this._emitChunk() + } + return true +} + +BlockStream.prototype.pause = function () { + // debug(" BS pausing") + this._paused = true +} + +BlockStream.prototype.resume = function () { + // debug(" BS resume") + this._paused = false + return this._emitChunk() +} + +BlockStream.prototype.end = function (chunk) { + // debug("end", chunk) + if (typeof chunk === "function") cb = chunk, chunk = null + if (chunk) this.write(chunk) + this._ended = true + this.flush() +} + +BlockStream.prototype.flush = function () { + this._emitChunk(true) +} + +BlockStream.prototype._emitChunk = function (flush) { + // debug("emitChunk flush=%j emitting=%j paused=%j", flush, this._emitting, this._paused) + + // emit a chunk + if (flush && this._zeroes) { + // debug(" BS push zeroes", this._bufferLength) + // push a chunk of zeroes + var padBytes = (this._bufferLength % this._chunkSize) + if (padBytes !== 0) padBytes = this._chunkSize - padBytes + if (padBytes > 0) { + // debug("padBytes", padBytes, this._zeroes.slice(0, padBytes)) + this._buffer.push(this._zeroes.slice(0, padBytes)) + this._bufferLength += padBytes + // debug(this._buffer[this._buffer.length - 1].length, this._bufferLength) + } + } + + if (this._emitting || this._paused) return + this._emitting = true + + // debug(" BS entering loops") + var bufferIndex = 0 + while (this._bufferLength >= this._chunkSize && + (flush || !this._paused)) { + // debug(" BS data emission loop", this._bufferLength) + + var out + , outOffset = 0 + , outHas = this._chunkSize + + while (outHas > 0 && (flush || !this._paused) ) { + // debug(" BS data inner emit loop", this._bufferLength) + var cur = this._buffer[bufferIndex] + , curHas = cur.length - this._offset + // debug("cur=", cur) + // debug("curHas=%j", curHas) + // If it's not big enough to fill the whole thing, then we'll need + // to copy multiple buffers into one. However, if it is big enough, + // then just slice out the part we want, to save unnecessary copying. + // Also, need to copy if we've already done some copying, since buffers + // can't be joined like cons strings. + if (out || curHas < outHas) { + out = out || new Buffer(this._chunkSize) + cur.copy(out, outOffset, + this._offset, this._offset + Math.min(curHas, outHas)) + } else if (cur.length === outHas && this._offset === 0) { + // shortcut -- cur is exactly long enough, and no offset. + out = cur + } else { + // slice out the piece of cur that we need. + out = cur.slice(this._offset, this._offset + outHas) + } + + if (curHas > outHas) { + // means that the current buffer couldn't be completely output + // update this._offset to reflect how much WAS written + this._offset += outHas + outHas = 0 + } else { + // output the entire current chunk. + // toss it away + outHas -= curHas + outOffset += curHas + bufferIndex ++ + this._offset = 0 + } + } + + this._bufferLength -= this._chunkSize + assert(out.length === this._chunkSize) + // debug("emitting data", out) + // debug(" BS emitting, paused=%j", this._paused, this._bufferLength) + this.emit("data", out) + out = null + } + // debug(" BS out of loops", this._bufferLength) + + // whatever is left, it's not enough to fill up a block, or we're paused + this._buffer = this._buffer.slice(bufferIndex) + if (this._paused) { + // debug(" BS paused, leaving", this._bufferLength) + this._needsDrain = true + this._emitting = false + return + } + + // if flushing, and not using null-padding, then need to emit the last + // chunk(s) sitting in the queue. We know that it's not enough to + // fill up a whole block, because otherwise it would have been emitted + // above, but there may be some offset. + var l = this._buffer.length + if (flush && !this._zeroes && l) { + if (l === 1) { + if (this._offset) { + this.emit("data", this._buffer[0].slice(this._offset)) + } else { + this.emit("data", this._buffer[0]) + } + } else { + var outHas = this._bufferLength + , out = new Buffer(outHas) + , outOffset = 0 + for (var i = 0; i < l; i ++) { + var cur = this._buffer[i] + , curHas = cur.length - this._offset + cur.copy(out, outOffset, this._offset) + this._offset = 0 + outOffset += curHas + this._bufferLength -= curHas + } + this.emit("data", out) + } + // truncate + this._buffer.length = 0 + this._bufferLength = 0 + this._offset = 0 + } + + // now either drained or ended + // debug("either draining, or ended", this._bufferLength, this._ended) + // means that we've flushed out all that we can so far. + if (this._needDrain) { + // debug("emitting drain", this._bufferLength) + this._needDrain = false + this.emit("drain") + } + + if ((this._bufferLength === 0) && this._ended && !this._endEmitted) { + // debug("emitting end", this._bufferLength) + this._endEmitted = true + this.emit("end") + } + + this._emitting = false + + // debug(" BS no longer emitting", flush, this._paused, this._emitting, this._bufferLength, this._chunkSize) +} diff --git a/node_modules/block-stream/package.json b/node_modules/block-stream/package.json new file mode 100644 index 0000000000..1971213de9 --- /dev/null +++ b/node_modules/block-stream/package.json @@ -0,0 +1,27 @@ +{ + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "name": "block-stream", + "description": "a stream of blocks", + "version": "0.0.9", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/block-stream.git" + }, + "engines": { + "node": "0.4 || >=0.5.8" + }, + "main": "block-stream.js", + "dependencies": { + "inherits": "~2.0.0" + }, + "devDependencies": { + "tap": "^5.7.1" + }, + "scripts": { + "test": "tap test/*.js --cov" + }, + "license": "ISC", + "files": [ + "block-stream.js" + ] +} diff --git a/node_modules/brace-expansion/LICENSE b/node_modules/brace-expansion/LICENSE new file mode 100644 index 0000000000..de3226673c --- /dev/null +++ b/node_modules/brace-expansion/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/brace-expansion/README.md b/node_modules/brace-expansion/README.md new file mode 100644 index 0000000000..6b4e0e1640 --- /dev/null +++ b/node_modules/brace-expansion/README.md @@ -0,0 +1,129 @@ +# brace-expansion + +[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), +as known from sh/bash, in JavaScript. + +[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion) +[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion) +[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/) + +[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion) + +## Example + +```js +var expand = require('brace-expansion'); + +expand('file-{a,b,c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('-v{,,}') +// => ['-v', '-v', '-v'] + +expand('file{0..2}.jpg') +// => ['file0.jpg', 'file1.jpg', 'file2.jpg'] + +expand('file-{a..c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('file{2..0}.jpg') +// => ['file2.jpg', 'file1.jpg', 'file0.jpg'] + +expand('file{0..4..2}.jpg') +// => ['file0.jpg', 'file2.jpg', 'file4.jpg'] + +expand('file-{a..e..2}.jpg') +// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg'] + +expand('file{00..10..5}.jpg') +// => ['file00.jpg', 'file05.jpg', 'file10.jpg'] + +expand('{{A..C},{a..c}}') +// => ['A', 'B', 'C', 'a', 'b', 'c'] + +expand('ppp{,config,oe{,conf}}') +// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf'] +``` + +## API + +```js +var expand = require('brace-expansion'); +``` + +### var expanded = expand(str) + +Return an array of all possible and valid expansions of `str`. If none are +found, `[str]` is returned. + +Valid expansions are: + +```js +/^(.*,)+(.+)?$/ +// {a,b,...} +``` + +A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +A numeric sequence from `x` to `y` inclusive, with optional increment. +If `x` or `y` start with a leading `0`, all the numbers will be padded +to have equal length. Negative numbers and backwards iteration work too. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +An alphabetic sequence from `x` to `y` inclusive, with optional increment. +`x` and `y` must be exactly one character, and if given, `incr` must be a +number. + +For compatibility reasons, the string `${` is not eligible for brace expansion. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install brace-expansion +``` + +## Contributors + +- [Julian Gruber](https://github.com/juliangruber) +- [Isaac Z. Schlueter](https://github.com/isaacs) + +## Sponsors + +This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)! + +Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)! + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/brace-expansion/index.js b/node_modules/brace-expansion/index.js new file mode 100644 index 0000000000..0478be81ea --- /dev/null +++ b/node_modules/brace-expansion/index.js @@ -0,0 +1,201 @@ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json new file mode 100644 index 0000000000..a18faa8fd6 --- /dev/null +++ b/node_modules/brace-expansion/package.json @@ -0,0 +1,47 @@ +{ + "name": "brace-expansion", + "description": "Brace expansion as known from sh/bash", + "version": "1.1.11", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/brace-expansion.git" + }, + "homepage": "https://github.com/juliangruber/brace-expansion", + "main": "index.js", + "scripts": { + "test": "tape test/*.js", + "gentest": "bash test/generate.sh", + "bench": "matcha test/perf/bench.js" + }, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + }, + "devDependencies": { + "matcha": "^0.7.0", + "tape": "^4.6.0" + }, + "keywords": [], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/buffer-from/index.js b/node_modules/buffer-from/index.js new file mode 100644 index 0000000000..d92a83d01f --- /dev/null +++ b/node_modules/buffer-from/index.js @@ -0,0 +1,69 @@ +var toString = Object.prototype.toString + +var isModern = ( + typeof Buffer.alloc === 'function' && + typeof Buffer.allocUnsafe === 'function' && + typeof Buffer.from === 'function' +) + +function isArrayBuffer (input) { + return toString.call(input).slice(8, -1) === 'ArrayBuffer' +} + +function fromArrayBuffer (obj, byteOffset, length) { + byteOffset >>>= 0 + + var maxLength = obj.byteLength - byteOffset + + if (maxLength < 0) { + throw new RangeError("'offset' is out of bounds") + } + + if (length === undefined) { + length = maxLength + } else { + length >>>= 0 + + if (length > maxLength) { + throw new RangeError("'length' is out of bounds") + } + } + + return isModern + ? Buffer.from(obj.slice(byteOffset, byteOffset + length)) + : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + return isModern + ? Buffer.from(string, encoding) + : new Buffer(string, encoding) +} + +function bufferFrom (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (isArrayBuffer(value)) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + return isModern + ? Buffer.from(value) + : new Buffer(value) +} + +module.exports = bufferFrom diff --git a/node_modules/buffer-from/package.json b/node_modules/buffer-from/package.json new file mode 100644 index 0000000000..99c3b1e84f --- /dev/null +++ b/node_modules/buffer-from/package.json @@ -0,0 +1,16 @@ +{ + "name": "buffer-from", + "version": "0.1.2", + "license": "MIT", + "repository": "LinusU/buffer-from", + "scripts": { + "test": "standard && node test" + }, + "devDependencies": { + "standard": "^7.1.2" + }, + "keywords": [ + "buffer", + "buffer from" + ] +} diff --git a/node_modules/buffer-from/readme.md b/node_modules/buffer-from/readme.md new file mode 100644 index 0000000000..9880a558a7 --- /dev/null +++ b/node_modules/buffer-from/readme.md @@ -0,0 +1,69 @@ +# Buffer From + +A [ponyfill](https://ponyfill.com) for `Buffer.from`, uses native implementation if available. + +## Installation + +```sh +npm install --save buffer-from +``` + +## Usage + +```js +const bufferFrom = require('buffer-from') + +console.log(bufferFrom([1, 2, 3, 4])) +//=> + +const arr = new Uint8Array([1, 2, 3, 4]) +console.log(bufferFrom(arr.buffer, 1, 2)) +//=> + +console.log(bufferFrom('test', 'utf8')) +//=> + +const buf = bufferFrom('test') +console.log(bufferFrom(buf)) +//=> +``` + +## API + +### bufferFrom(array) + +- `array` <Array> + +Allocates a new `Buffer` using an `array` of octets. + +### bufferFrom(arrayBuffer[, byteOffset[, length]]) + +- `arrayBuffer` <ArrayBuffer> The `.buffer` property of a TypedArray or ArrayBuffer +- `byteOffset` <Integer> Where to start copying from `arrayBuffer`. **Default:** `0` +- `length` <Integer> How many bytes to copy from `arrayBuffer`. **Default:** `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a TypedArray instance, the +newly created `Buffer` will share the same allocated memory as the TypedArray. + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +### bufferFrom(buffer) + +- `buffer` <Buffer> An existing `Buffer` to copy data from + +Copies the passed `buffer` data onto a new `Buffer` instance. + +### bufferFrom(string[, encoding]) + +- `string` <String> A string to encode. +- `encoding` <String> The encoding of `string`. **Default:** `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `string`. If +provided, the `encoding` parameter identifies the character encoding of +`string`. + +## See also + +- [buffer-alloc](https://github.com/LinusU/buffer-alloc) A ponyfill for `Buffer.alloc` +- [buffer-alloc-unsafe](https://github.com/LinusU/buffer-alloc-unsafe) A ponyfill for `Buffer.allocUnsafe` diff --git a/node_modules/buffer-from/test.js b/node_modules/buffer-from/test.js new file mode 100644 index 0000000000..527620b6cc --- /dev/null +++ b/node_modules/buffer-from/test.js @@ -0,0 +1,12 @@ +var bufferFrom = require('./') +var assert = require('assert') + +assert.equal(bufferFrom([1, 2, 3, 4]).toString('hex'), '01020304') + +var arr = new Uint8Array([1, 2, 3, 4]) +assert.equal(bufferFrom(arr.buffer, 1, 2).toString('hex'), '0203') + +assert.equal(bufferFrom('test', 'utf8').toString('hex'), '74657374') + +var buf = bufferFrom('test') +assert.equal(bufferFrom(buf).toString('hex'), '74657374') diff --git a/node_modules/builtins/.travis.yml b/node_modules/builtins/.travis.yml new file mode 100644 index 0000000000..cc4dba29d9 --- /dev/null +++ b/node_modules/builtins/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/node_modules/builtins/History.md b/node_modules/builtins/History.md new file mode 100644 index 0000000000..0eb45c4207 --- /dev/null +++ b/node_modules/builtins/History.md @@ -0,0 +1,39 @@ + +0.0.7 / 2014-09-01 +================== + + * update .repository + +0.0.6 / 2014-09-01 +================== + + * add travis + * add test script + * add constants + +0.0.5 / 2014-06-27 +================== + + * add module + * publish to public npm + +0.0.4 / 2014-04-25 +================== + + * add timers + +0.0.3 / 2014-02-22 +================== + + * add buffer + +0.0.2 / 2014-02-11 +================== + + * add assert + +0.0.1 / 2014-02-11 +================== + + * add main + * initial commit diff --git a/node_modules/builtins/License b/node_modules/builtins/License new file mode 100644 index 0000000000..b142e5dc08 --- /dev/null +++ b/node_modules/builtins/License @@ -0,0 +1,20 @@ +Copyright (c) 2015 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/builtins/Readme.md b/node_modules/builtins/Readme.md new file mode 100644 index 0000000000..96f4b1f6c4 --- /dev/null +++ b/node_modules/builtins/Readme.md @@ -0,0 +1,18 @@ + +# builtins + + List of node.js [builtin modules](http://nodejs.org/api/). + + [![build status](https://secure.travis-ci.org/juliangruber/builtins.svg)](http://travis-ci.org/juliangruber/builtins) + +## Example + +```js +var builtins = require('builtins'); + +assert(builtins.indexOf('http') > -1); +``` + +## License + + MIT diff --git a/node_modules/builtins/builtins.json b/node_modules/builtins/builtins.json new file mode 100644 index 0000000000..45c0522564 --- /dev/null +++ b/node_modules/builtins/builtins.json @@ -0,0 +1,35 @@ +[ + "assert", + "buffer", + "child_process", + "cluster", + "console", + "constants", + "crypto", + "dgram", + "dns", + "domain", + "events", + "fs", + "http", + "https", + "module", + "net", + "os", + "path", + "process", + "punycode", + "querystring", + "readline", + "repl", + "stream", + "string_decoder", + "timers", + "tls", + "tty", + "url", + "util", + "v8", + "vm", + "zlib" +] diff --git a/node_modules/builtins/package.json b/node_modules/builtins/package.json new file mode 100644 index 0000000000..819996532d --- /dev/null +++ b/node_modules/builtins/package.json @@ -0,0 +1,14 @@ +{ + "name": "builtins", + "version": "1.0.3", + "description": "List of node.js builtin modules", + "repository": "juliangruber/builtins", + "license": "MIT", + "main": "builtins.json", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "scripts": { + "test": "node test.js" + } +} diff --git a/node_modules/builtins/test.js b/node_modules/builtins/test.js new file mode 100644 index 0000000000..ffbe8389c1 --- /dev/null +++ b/node_modules/builtins/test.js @@ -0,0 +1,5 @@ +var builtins = require('./builtins'); + +builtins.forEach(function(name){ + require(name); +}); diff --git a/node_modules/chalk/index.d.ts b/node_modules/chalk/index.d.ts new file mode 100644 index 0000000000..9cd88f38be --- /dev/null +++ b/node_modules/chalk/index.d.ts @@ -0,0 +1,415 @@ +/** +Basic foreground colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type ForegroundColor = + | 'black' + | 'red' + | 'green' + | 'yellow' + | 'blue' + | 'magenta' + | 'cyan' + | 'white' + | 'gray' + | 'grey' + | 'blackBright' + | 'redBright' + | 'greenBright' + | 'yellowBright' + | 'blueBright' + | 'magentaBright' + | 'cyanBright' + | 'whiteBright'; + +/** +Basic background colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type BackgroundColor = + | 'bgBlack' + | 'bgRed' + | 'bgGreen' + | 'bgYellow' + | 'bgBlue' + | 'bgMagenta' + | 'bgCyan' + | 'bgWhite' + | 'bgGray' + | 'bgGrey' + | 'bgBlackBright' + | 'bgRedBright' + | 'bgGreenBright' + | 'bgYellowBright' + | 'bgBlueBright' + | 'bgMagentaBright' + | 'bgCyanBright' + | 'bgWhiteBright'; + +/** +Basic colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type Color = ForegroundColor | BackgroundColor; + +declare type Modifiers = + | 'reset' + | 'bold' + | 'dim' + | 'italic' + | 'underline' + | 'inverse' + | 'hidden' + | 'strikethrough' + | 'visible'; + +declare namespace chalk { + /** + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + type Level = 0 | 1 | 2 | 3; + + interface Options { + /** + Specify the color support for Chalk. + + By default, color support is automatically detected based on the environment. + + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + level?: Level; + } + + /** + Return a new Chalk instance. + */ + type Instance = new (options?: Options) => Chalk; + + /** + Detect whether the terminal supports color. + */ + interface ColorSupport { + /** + The color level used by Chalk. + */ + level: Level; + + /** + Return whether Chalk supports basic 16 colors. + */ + hasBasic: boolean; + + /** + Return whether Chalk supports ANSI 256 colors. + */ + has256: boolean; + + /** + Return whether Chalk supports Truecolor 16 million colors. + */ + has16m: boolean; + } + + interface ChalkFunction { + /** + Use a template string. + + @remarks Template literals are unsupported for nested calls (see [issue #341](https://github.com/chalk/chalk/issues/341)) + + @example + ``` + import chalk = require('chalk'); + + log(chalk` + CPU: {red ${cpu.totalPercent}%} + RAM: {green ${ram.used / ram.total * 100}%} + DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} + `); + ``` + + @example + ``` + import chalk = require('chalk'); + + log(chalk.red.bgBlack`2 + 3 = {bold ${2 + 3}}`) + ``` + */ + (text: TemplateStringsArray, ...placeholders: unknown[]): string; + + (...text: unknown[]): string; + } + + interface Chalk extends ChalkFunction { + /** + Return a new Chalk instance. + */ + Instance: Instance; + + /** + The color support for Chalk. + + By default, color support is automatically detected based on the environment. + + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + level: Level; + + /** + Use HEX value to set text color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.hex('#DEADED'); + ``` + */ + hex(color: string): Chalk; + + /** + Use keyword color value to set text color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.keyword('orange'); + ``` + */ + keyword(color: string): Chalk; + + /** + Use RGB values to set text color. + */ + rgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set text color. + */ + hsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set text color. + */ + hsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set text color. + */ + hwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set text color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + */ + ansi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color. + */ + ansi256(index: number): Chalk; + + /** + Use HEX value to set background color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgHex('#DEADED'); + ``` + */ + bgHex(color: string): Chalk; + + /** + Use keyword color value to set background color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgKeyword('orange'); + ``` + */ + bgKeyword(color: string): Chalk; + + /** + Use RGB values to set background color. + */ + bgRgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set background color. + */ + bgHsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set background color. + */ + bgHsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set background color. + */ + bgHwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set background color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + Use the foreground code, not the background code (for example, not 41, nor 101). + */ + bgAnsi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set background color. + */ + bgAnsi256(index: number): Chalk; + + /** + Modifier: Resets the current color chain. + */ + readonly reset: Chalk; + + /** + Modifier: Make text bold. + */ + readonly bold: Chalk; + + /** + Modifier: Emitting only a small amount of light. + */ + readonly dim: Chalk; + + /** + Modifier: Make text italic. (Not widely supported) + */ + readonly italic: Chalk; + + /** + Modifier: Make text underline. (Not widely supported) + */ + readonly underline: Chalk; + + /** + Modifier: Inverse background and foreground colors. + */ + readonly inverse: Chalk; + + /** + Modifier: Prints the text, but makes it invisible. + */ + readonly hidden: Chalk; + + /** + Modifier: Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: Chalk; + + /** + Modifier: Prints the text only when Chalk has a color support level > 0. + Can be useful for things that are purely cosmetic. + */ + readonly visible: Chalk; + + readonly black: Chalk; + readonly red: Chalk; + readonly green: Chalk; + readonly yellow: Chalk; + readonly blue: Chalk; + readonly magenta: Chalk; + readonly cyan: Chalk; + readonly white: Chalk; + + /* + Alias for `blackBright`. + */ + readonly gray: Chalk; + + /* + Alias for `blackBright`. + */ + readonly grey: Chalk; + + readonly blackBright: Chalk; + readonly redBright: Chalk; + readonly greenBright: Chalk; + readonly yellowBright: Chalk; + readonly blueBright: Chalk; + readonly magentaBright: Chalk; + readonly cyanBright: Chalk; + readonly whiteBright: Chalk; + + readonly bgBlack: Chalk; + readonly bgRed: Chalk; + readonly bgGreen: Chalk; + readonly bgYellow: Chalk; + readonly bgBlue: Chalk; + readonly bgMagenta: Chalk; + readonly bgCyan: Chalk; + readonly bgWhite: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGray: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGrey: Chalk; + + readonly bgBlackBright: Chalk; + readonly bgRedBright: Chalk; + readonly bgGreenBright: Chalk; + readonly bgYellowBright: Chalk; + readonly bgBlueBright: Chalk; + readonly bgMagentaBright: Chalk; + readonly bgCyanBright: Chalk; + readonly bgWhiteBright: Chalk; + } +} + +/** +Main Chalk object that allows to chain styles together. +Call the last one as a method with a string argument. +Order doesn't matter, and later styles take precedent in case of a conflict. +This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`. +*/ +declare const chalk: chalk.Chalk & chalk.ChalkFunction & { + supportsColor: chalk.ColorSupport | false; + Level: chalk.Level; + Color: Color; + ForegroundColor: ForegroundColor; + BackgroundColor: BackgroundColor; + Modifiers: Modifiers; + stderr: chalk.Chalk & {supportsColor: chalk.ColorSupport | false}; +}; + +export = chalk; diff --git a/node_modules/chalk/license b/node_modules/chalk/license new file mode 100644 index 0000000000..e7af2f7710 --- /dev/null +++ b/node_modules/chalk/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/chalk/package.json b/node_modules/chalk/package.json new file mode 100644 index 0000000000..0d99f0f286 --- /dev/null +++ b/node_modules/chalk/package.json @@ -0,0 +1,68 @@ +{ + "name": "chalk", + "version": "4.1.0", + "description": "Terminal string styling done right", + "license": "MIT", + "repository": "chalk/chalk", + "funding": "https://github.com/chalk/chalk?sponsor=1", + "main": "source", + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && nyc ava && tsd", + "bench": "matcha benchmark.js" + }, + "files": [ + "source", + "index.d.ts" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "devDependencies": { + "ava": "^2.4.0", + "coveralls": "^3.0.7", + "execa": "^4.0.0", + "import-fresh": "^3.1.0", + "matcha": "^0.7.0", + "nyc": "^15.0.0", + "resolve-from": "^5.0.0", + "tsd": "^0.7.4", + "xo": "^0.28.2" + }, + "xo": { + "rules": { + "unicorn/prefer-string-slice": "off", + "unicorn/prefer-includes": "off", + "@typescript-eslint/member-ordering": "off", + "no-redeclare": "off", + "unicorn/string-content": "off", + "unicorn/better-regex": "off" + } + } +} diff --git a/node_modules/chalk/readme.md b/node_modules/chalk/readme.md new file mode 100644 index 0000000000..338f42cb8b --- /dev/null +++ b/node_modules/chalk/readme.md @@ -0,0 +1,293 @@ +

+
+
+ Chalk +
+
+
+

+ +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![npm dependents](https://badgen.net/npm/dependents/chalk)](https://www.npmjs.com/package/chalk?activeTab=dependents) [![Downloads](https://badgen.net/npm/dt/chalk)](https://www.npmjs.com/package/chalk) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) ![TypeScript-ready](https://img.shields.io/npm/types/chalk.svg) [![run on repl.it](https://repl.it/badge/github/chalk/chalk)](https://repl.it/github/chalk/chalk) + + + +## Highlights + +- Expressive API +- Highly performant +- Ability to nest styles +- [256/Truecolor color support](#256-and-truecolor-color-support) +- Auto-detects color support +- Doesn't extend `String.prototype` +- Clean and focused +- Actively maintained +- [Used by ~50,000 packages](https://www.npmjs.com/browse/depended/chalk) as of January 1, 2020 + +## Install + +```console +$ npm install chalk +``` + +## Usage + +```js +const chalk = require('chalk'); + +console.log(chalk.blue('Hello world!')); +``` + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +const chalk = require('chalk'); +const log = console.log; + +// Combine styled and normal strings +log(chalk.blue('Hello') + ' World' + chalk.red('!')); + +// Compose multiple styles using the chainable API +log(chalk.blue.bgRed.bold('Hello world!')); + +// Pass in multiple arguments +log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz')); + +// Nest styles +log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!')); + +// Nest styles of the same type even (color, underline, background) +log(chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +)); + +// ES2015 template literal +log(` +CPU: ${chalk.red('90%')} +RAM: ${chalk.green('40%')} +DISK: ${chalk.yellow('70%')} +`); + +// ES2015 tagged template literal +log(chalk` +CPU: {red ${cpu.totalPercent}%} +RAM: {green ${ram.used / ram.total * 100}%} +DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} +`); + +// Use RGB colors in terminal emulators that support it. +log(chalk.keyword('orange')('Yay for orange colored text!')); +log(chalk.rgb(123, 45, 67).underline('Underlined reddish color')); +log(chalk.hex('#DEADED').bold('Bold gray!')); +``` + +Easily define your own themes: + +```js +const chalk = require('chalk'); + +const error = chalk.bold.red; +const warning = chalk.keyword('orange'); + +console.log(error('Error!')); +console.log(warning('Warning!')); +``` + +Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args): + +```js +const name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> 'Hello Sindre' +``` + +## API + +### chalk.` + + +
+
+

+ All files +

+
+
+ 99.94% + Statements + 1795/1796 +
+
+ 99.67% + Branches + 1224/1228 +
+
+ 100% + Functions + 271/271 +
+
+ 99.94% + Lines + 1748/1749 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
tar
100%13/13100%0/0100%0/0100%13/13
tar/lib
99.94%1782/178399.67%1224/1228100%271/27199.94%1735/1736
+
+
+
+ + + + + + diff --git a/node_modules/tar/coverage/lcov-report/prettify.css b/node_modules/tar/coverage/lcov-report/prettify.css new file mode 100644 index 0000000000..b317a7cda3 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/node_modules/tar/coverage/lcov-report/prettify.js b/node_modules/tar/coverage/lcov-report/prettify.js new file mode 100644 index 0000000000..ef51e03866 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/prettify.js @@ -0,0 +1 @@ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/node_modules/tar/coverage/lcov-report/sort-arrow-sprite.png b/node_modules/tar/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..03f704a609c6fd0dbfdac63466a7d7c958b5cbf3 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function (a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function (a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function () { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i =0 ; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function () { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(cols); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/node_modules/tar/coverage/lcov-report/tar/index.html b/node_modules/tar/coverage/lcov-report/tar/index.html new file mode 100644 index 0000000000..9c917bdeb1 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/index.html @@ -0,0 +1,93 @@ + + + + Code coverage report for tar + + + + + + + +
+
+

+ All files tar +

+
+
+ 100% + Statements + 13/13 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 13/13 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.js
100%13/13100%0/0100%0/0100%13/13
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/index.js.html b/node_modules/tar/coverage/lcov-report/tar/index.js.html new file mode 100644 index 0000000000..f04c992346 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/index.js.html @@ -0,0 +1,119 @@ + + + + Code coverage report for tar/index.js + + + + + + + +
+
+

+ All files / tar index.js +

+
+
+ 100% + Statements + 13/13 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 13/13 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19  +  +  +1x +1x +1x +1x +1x +  +  +1x +1x +1x +1x +1x +1x +1x +1x + 
'use strict'
+ 
+// high-level commands
+exports.c = exports.create = require('./lib/create.js')
+exports.r = exports.replace = require('./lib/replace.js')
+exports.t = exports.list = require('./lib/list.js')
+exports.u = exports.update = require('./lib/update.js')
+exports.x = exports.extract = require('./lib/extract.js')
+ 
+// classes
+exports.Pack = require('./lib/pack.js')
+exports.Unpack = require('./lib/unpack.js')
+exports.Parse = require('./lib/parse.js')
+exports.ReadEntry = require('./lib/read-entry.js')
+exports.WriteEntry = require('./lib/write-entry.js')
+exports.Header = require('./lib/header.js')
+exports.Pax = require('./lib/pax.js')
+exports.types = require('./lib/types.js')
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/create.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/create.js.html new file mode 100644 index 0000000000..2f01c7e302 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/create.js.html @@ -0,0 +1,380 @@ + + + + Code coverage report for tar/lib/create.js + + + + + + + +
+
+

+ All files / tar/lib create.js +

+
+
+ 100% + Statements + 59/59 +
+
+ 100% + Branches + 35/35 +
+
+ 100% + Functions + 12/12 +
+
+ 100% + Lines + 59/59 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106  +  +  +2x +  +2x +2x +2x +2x +2x +  +2x +15x +1x +  +15x +1x +  +15x +2x +  +13x +  +13x +  +13x +1x +  +12x +1x +  +11x +  +  +  +  +  +2x +4x +4x +  +  +4x +4x +  +  +2x +4x +4x +  +  +4x +  +4x +4x +4x +4x +  +  +4x +  +4x +  +  +2x +5x +7x +3x +  +  +  +7x +  +  +4x +  +4x +  +  +2x +9x +8x +8x +3x +  +  +7x +3x +  +5x +  +6x +  +  +2x +1x +1x +1x +  +  +2x +2x +2x +2x +  + 
'use strict'
+ 
+// tar -c
+const hlo = require('./high-level-opt.js')
+ 
+const Pack = require('./pack.js')
+const fs = require('fs')
+const fsm = require('fs-minipass')
+const t = require('./list.js')
+const path = require('path')
+ 
+const c = module.exports = (opt_, files, cb) => {
+  if (typeof files === 'function')
+    cb = files
+ 
+  if (Array.isArray(opt_))
+    files = opt_, opt_ = {}
+ 
+  if (!files || !Array.isArray(files) || !files.length)
+    throw new TypeError('no files or directories specified')
+ 
+  files = Array.from(files)
+ 
+  const opt = hlo(opt_)
+ 
+  if (opt.sync && typeof cb === 'function')
+    throw new TypeError('callback not supported for sync tar functions')
+ 
+  if (!opt.file && typeof cb === 'function')
+    throw new TypeError('callback only supported with file option')
+ 
+  return opt.file && opt.sync ? createFileSync(opt, files)
+    : opt.file ? createFile(opt, files, cb)
+    : opt.sync ? createSync(opt, files)
+    : create(opt, files)
+}
+ 
+const createFileSync = (opt, files) => {
+  const p = new Pack.Sync(opt)
+  const stream = new fsm.WriteStreamSync(opt.file, {
+    mode: opt.mode || 0o666
+  })
+  p.pipe(stream)
+  addFilesSync(p, files)
+}
+ 
+const createFile = (opt, files, cb) => {
+  const p = new Pack(opt)
+  const stream = new fsm.WriteStream(opt.file, {
+    mode: opt.mode || 0o666
+  })
+  p.pipe(stream)
+ 
+  const promise = new Promise((res, rej) => {
+    stream.on('error', rej)
+    stream.on('close', res)
+    p.on('error', rej)
+  })
+ 
+  addFilesAsync(p, files)
+ 
+  return cb ? promise.then(cb, cb) : promise
+}
+ 
+const addFilesSync = (p, files) => {
+  files.forEach(file => {
+    if (file.charAt(0) === '@')
+      t({
+        file: path.resolve(p.cwd, file.substr(1)),
+        sync: true,
+        noResume: true,
+        onentry: entry => p.add(entry)
+      })
+    else
+      p.add(file)
+  })
+  p.end()
+}
+ 
+const addFilesAsync = (p, files) => {
+  while (files.length) {
+    const file = files.shift()
+    if (file.charAt(0) === '@')
+      return t({
+        file: path.resolve(p.cwd, file.substr(1)),
+        noResume: true,
+        onentry: entry => p.add(entry)
+      }).then(_ => addFilesAsync(p, files))
+    else
+      p.add(file)
+  }
+  p.end()
+}
+ 
+const createSync = (opt, files) => {
+  const p = new Pack.Sync(opt)
+  addFilesSync(p, files)
+  return p
+}
+ 
+const create = (opt, files) => {
+  const p = new Pack(opt)
+  addFilesAsync(p, files)
+  return p
+}
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/extract.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/extract.js.html new file mode 100644 index 0000000000..96245c73d9 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/extract.js.html @@ -0,0 +1,401 @@ + + + + Code coverage report for tar/lib/extract.js + + + + + + + +
+
+

+ All files / tar/lib extract.js +

+
+
+ 100% + Statements + 61/61 +
+
+ 100% + Branches + 45/45 +
+
+ 100% + Functions + 12/12 +
+
+ 100% + Lines + 60/60 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113  +  +  +2x +2x +2x +2x +2x +  +2x +21x +1x +20x +1x +  +21x +3x +  +21x +13x +  +8x +  +21x +  +21x +2x +  +19x +1x +  +18x +7x +  +18x +  +  +  +  +  +  +  +2x +13x +7x +  +7x +87x +87x +  +  +  +87x +87x +  +  +7x +9x +9x +  +  +2x +6x +  +6x +6x +  +6x +  +  +5x +5x +  +  +  +4x +  +  +2x +9x +9x +  +9x +9x +9x +9x +  +  +  +9x +9x +1x +  +8x +  +  +  +8x +8x +  +  +  +9x +  +  +2x +1x +  +  +2x +2x +  + 
'use strict'
+ 
+// tar -x
+const hlo = require('./high-level-opt.js')
+const Unpack = require('./unpack.js')
+const fs = require('fs')
+const fsm = require('fs-minipass')
+const path = require('path')
+ 
+const x = module.exports = (opt_, files, cb) => {
+  if (typeof opt_ === 'function')
+    cb = opt_, files = null, opt_ = {}
+  else if (Array.isArray(opt_))
+    files = opt_, opt_ = {}
+ 
+  if (typeof files === 'function')
+    cb = files, files = null
+ 
+  if (!files)
+    files = []
+  else
+    files = Array.from(files)
+ 
+  const opt = hlo(opt_)
+ 
+  if (opt.sync && typeof cb === 'function')
+    throw new TypeError('callback not supported for sync tar functions')
+ 
+  if (!opt.file && typeof cb === 'function')
+    throw new TypeError('callback only supported with file option')
+ 
+  if (files.length)
+    filesFilter(opt, files)
+ 
+  return opt.file && opt.sync ? extractFileSync(opt)
+    : opt.file ? extractFile(opt, cb)
+    : opt.sync ? extractSync(opt)
+    : extract(opt)
+}
+ 
+// construct a filter that limits the file entries listed
+// include child entries if a dir is included
+const filesFilter = (opt, files) => {
+  const map = new Map(files.map(f => [f.replace(/\/+$/, ''), true]))
+  const filter = opt.filter
+ 
+  const mapHas = (file, r) => {
+    const root = r || path.parse(file).root || '.'
+    const ret = file === root ? false
+      : map.has(file) ? map.get(file)
+      : mapHas(path.dirname(file), root)
+ 
+    map.set(file, ret)
+    return ret
+  }
+ 
+  opt.filter = filter
+    ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\/+$/, ''))
+    : file => mapHas(file.replace(/\/+$/, ''))
+}
+ 
+const extractFileSync = opt => {
+  const u = new Unpack.Sync(opt)
+ 
+  const file = opt.file
+  let threw = true
+  let fd
+  const stat = fs.statSync(file)
+  // This trades a zero-byte read() syscall for a stat
+  // However, it will usually result in less memory allocation
+  const readSize = opt.maxReadSize || 16*1024*1024
+  const stream = new fsm.ReadStreamSync(file, {
+    readSize: readSize,
+    size: stat.size
+  })
+  stream.pipe(u)
+}
+ 
+const extractFile = (opt, cb) => {
+  const u = new Unpack(opt)
+  const readSize = opt.maxReadSize || 16*1024*1024
+ 
+  const file = opt.file
+  const p = new Promise((resolve, reject) => {
+    u.on('error', reject)
+    u.on('close', resolve)
+ 
+    // This trades a zero-byte read() syscall for a stat
+    // However, it will usually result in less memory allocation
+    fs.stat(file, (er, stat) => {
+      if (er)
+        reject(er)
+      else {
+        const stream = new fsm.ReadStream(file, {
+          readSize: readSize,
+          size: stat.size
+        })
+        stream.on('error', reject)
+        stream.pipe(u)
+      }
+    })
+  })
+  return cb ? p.then(cb, cb) : p
+}
+ 
+const extractSync = opt => {
+  return new Unpack.Sync(opt)
+}
+ 
+const extract = opt => {
+  return new Unpack(opt)
+}
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/header.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/header.js.html new file mode 100644 index 0000000000..69770d0986 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/header.js.html @@ -0,0 +1,881 @@ + + + + Code coverage report for tar/lib/header.js + + + + + + + +
+
+

+ All files / tar/lib header.js +

+
+
+ 100% + Statements + 161/161 +
+
+ 100% + Branches + 120/120 +
+
+ 100% + Functions + 20/20 +
+
+ 100% + Lines + 159/159 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273  +  +  +  +  +  +13x +13x +13x +  +13x +  +  +  +13121x +13121x +13121x +  +13121x +13121x +13121x +13121x +13121x +13121x +13121x +13121x +13121x +13121x +13121x +13121x +13121x +13121x +13121x +13121x +  +13121x +6393x +6728x +6726x +  +  +  +6393x +2795x +  +6393x +1x +  +6392x +6392x +6392x +6392x +6392x +6392x +6392x +  +  +6392x +6392x +1990x +6392x +2x +  +  +  +  +  +  +6392x +1594x +  +6392x +6392x +4275x +4275x +4275x +4275x +4275x +  +2x +2x +  +4273x +4273x +295x +4273x +4273x +  +  +  +6392x +6392x +946016x +  +6392x +2275552x +  +6392x +6392x +1860x +  +  +  +6719x +6600x +6600x +  +  +6719x +6717x +  +6719x +1x +  +6718x +6718x +6718x +6718x +6718x +  +6718x +6718x +6718x +6718x +6718x +6718x +6718x +6718x +6718x +6718x +6718x +6718x +6718x +6718x +6718x +2x +  +6716x +6716x +6716x +  +  +6718x +6718x +994264x +  +6718x +2391608x +  +6718x +6718x +6718x +  +6718x +  +  +  +6728x +73451x +66740x +  +  +  +  +8178x +  +  +  +4x +  +  +  +6723x +6719x +  +4x +  +  +  +13x +6718x +6718x +6718x +  +6718x +  +6718x +6683x +  +  +35x +35x +  +35x +  +49x +  +21x +  +  +28x +  +13x +  +  +  +15x +15x +  +  +  +  +35x +1x +  +6718x +  +  +13x +32001x +  +13x +14938x +  +14938x +  +13x +55448x +  +  +55411x +  +13x +55411x +  +  +  +  +13x +  +  +  +  +13x +66910x +  +  +  +  +13x +66615x +  +13x +66615x +  +13x +66615x +  +  +13x +20150x +  +  +  +13x +  +13x +40308x +  +  +  +13x + 
'use strict'
+// parse a 512-byte header block to a data object, or vice-versa
+// encode returns `true` if a pax extended header is needed, because
+// the data could not be faithfully encoded in a simple header.
+// (Also, check header.needPax to see if it needs a pax header.)
+ 
+const types = require('./types.js')
+const pathModule = require('path')
+const large = require('./large-numbers.js')
+ 
+const TYPE = Symbol('type')
+ 
+class Header {
+  constructor (data, off) {
+    this.cksumValid = false
+    this.needPax = false
+    this.nullBlock = false
+ 
+    this.block = null
+    this.path = null
+    this.mode = null
+    this.uid = null
+    this.gid = null
+    this.size = null
+    this.mtime = null
+    this.cksum = null
+    this[TYPE] = '0'
+    this.linkpath = null
+    this.uname = null
+    this.gname = null
+    this.devmaj = 0
+    this.devmin = 0
+    this.atime = null
+    this.ctime = null
+ 
+    if (Buffer.isBuffer(data)) {
+      this.decode(data, off || 0)
+    } else if (data)
+      this.set(data)
+  }
+ 
+  decode (buf, off) {
+    if (!off)
+      off = 0
+ 
+    if (!buf || !(buf.length >= off + 512))
+      throw new Error('need 512 bytes for header')
+ 
+    this.path = decString(buf, off, 100)
+    this.mode = decNumber(buf, off + 100, 8)
+    this.uid = decNumber(buf, off + 108, 8)
+    this.gid = decNumber(buf, off + 116, 8)
+    this.size = decNumber(buf, off + 124, 12)
+    this.mtime = decDate(buf, off + 136, 12)
+    this.cksum = decNumber(buf, off + 148, 12)
+ 
+    // old tar versions marked dirs as a file with a trailing /
+    this[TYPE] = decString(buf, off + 156, 1)
+    if (this[TYPE] === '')
+      this[TYPE] = '0'
+    if (this[TYPE] === '0' && this.path.substr(-1) === '/')
+      this[TYPE] = '5'
+ 
+    // tar implementations sometimes incorrectly put the stat(dir).size
+    // as the size in the tarball, even though Directory entries are
+    // not able to have any body at all.  In the very rare chance that
+    // it actually DOES have a body, we weren't going to do anything with
+    // it anyway, and it'll just be a warning about an invalid header.
+    if (this[TYPE] === '5')
+      this.size = 0
+ 
+    this.linkpath = decString(buf, off + 157, 100)
+    if (buf.slice(off + 257, off + 265).toString() === 'ustar\u000000') {
+      this.uname = decString(buf, off + 265, 32)
+      this.gname = decString(buf, off + 297, 32)
+      this.devmaj = decNumber(buf, off + 329, 8)
+      this.devmin = decNumber(buf, off + 337, 8)
+      if (buf[off + 475] !== 0) {
+        // definitely a prefix, definitely >130 chars.
+        const prefix = decString(buf, off + 345, 155)
+        this.path = prefix + '/' + this.path
+      } else {
+        const prefix = decString(buf, off + 345, 130)
+        if (prefix)
+          this.path = prefix + '/' + this.path
+        this.atime = decDate(buf, off + 476, 12)
+        this.ctime = decDate(buf, off + 488, 12)
+      }
+    }
+ 
+    let sum = 8 * 0x20
+    for (let i = off; i < off + 148; i++) {
+      sum += buf[i]
+    }
+    for (let i = off + 156; i < off + 512; i++) {
+      sum += buf[i]
+    }
+    this.cksumValid = sum === this.cksum
+    if (this.cksum === null && sum === 8 * 0x20)
+      this.nullBlock = true
+  }
+ 
+  encode (buf, off) {
+    if (!buf) {
+      buf = this.block = Buffer.alloc(512)
+      off = 0
+    }
+ 
+    if (!off)
+      off = 0
+ 
+    if (!(buf.length >= off + 512))
+      throw new Error('need 512 bytes for header')
+ 
+    const prefixSize = this.ctime || this.atime ? 130 : 155
+    const split = splitPrefix(this.path || '', prefixSize)
+    const path = split[0]
+    const prefix = split[1]
+    this.needPax = split[2]
+ 
+    this.needPax = encString(buf, off, 100, path) || this.needPax
+    this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax
+    this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax
+    this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax
+    this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax
+    this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax
+    buf[off + 156] = this[TYPE].charCodeAt(0)
+    this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax
+    buf.write('ustar\u000000', off + 257, 8)
+    this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax
+    this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax
+    this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax
+    this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax
+    this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax
+    if (buf[off + 475] !== 0)
+      this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax
+    else {
+      this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax
+      this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax
+      this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax
+    }
+ 
+    let sum = 8 * 0x20
+    for (let i = off; i < off + 148; i++) {
+      sum += buf[i]
+    }
+    for (let i = off + 156; i < off + 512; i++) {
+      sum += buf[i]
+    }
+    this.cksum = sum
+    encNumber(buf, off + 148, 8, this.cksum)
+    this.cksumValid = true
+ 
+    return this.needPax
+  }
+ 
+  set (data) {
+    for (let i in data) {
+      if (data[i] !== null && data[i] !== undefined)
+        this[i] = data[i]
+    }
+  }
+ 
+  get type () {
+    return types.name.get(this[TYPE]) || this[TYPE]
+  }
+ 
+  get typeKey () {
+    return this[TYPE]
+  }
+ 
+  set type (type) {
+    if (types.code.has(type))
+      this[TYPE] = types.code.get(type)
+    else
+      this[TYPE] = type
+  }
+}
+ 
+const splitPrefix = (p, prefixSize) => {
+  const pathSize = 100
+  let pp = p
+  let prefix = ''
+  let ret
+  const root = pathModule.parse(p).root || '.'
+ 
+  if (Buffer.byteLength(pp) < pathSize)
+    ret = [pp, prefix, false]
+  else {
+    // first set prefix to the dir, and path to the base
+    prefix = pathModule.dirname(pp)
+    pp = pathModule.basename(pp)
+ 
+    do {
+      // both fit!
+      if (Buffer.byteLength(pp) <= pathSize &&
+          Buffer.byteLength(prefix) <= prefixSize)
+        ret = [pp, prefix, false]
+ 
+      // prefix fits in prefix, but path doesn't fit in path
+      else if (Buffer.byteLength(pp) > pathSize &&
+          Buffer.byteLength(prefix) <= prefixSize)
+        ret = [pp.substr(0, pathSize - 1), prefix, true]
+ 
+      else {
+        // make path take a bit from prefix
+        pp = pathModule.join(pathModule.basename(prefix), pp)
+        prefix = pathModule.dirname(prefix)
+      }
+    } while (prefix !== root && !ret)
+ 
+    // at this point, found no resolution, just truncate
+    if (!ret)
+      ret = [p.substr(0, pathSize - 1), '', true]
+  }
+  return ret
+}
+ 
+const decString = (buf, off, size) =>
+  buf.slice(off, off + size).toString('utf8').replace(/\0.*/, '')
+ 
+const decDate = (buf, off, size) =>
+  numToDate(decNumber(buf, off, size))
+ 
+const numToDate = num => num === null ? null : new Date(num * 1000)
+ 
+const decNumber = (buf, off, size) =>
+  buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))
+    : decSmallNumber(buf, off, size)
+ 
+const nanNull = value => isNaN(value) ? null : value
+ 
+const decSmallNumber = (buf, off, size) =>
+  nanNull(parseInt(
+    buf.slice(off, off + size)
+      .toString('utf8').replace(/\0.*$/, '').trim(), 8))
+ 
+// the maximum encodable as a null-terminated octal, by field size
+const MAXNUM = {
+  12: 0o77777777777,
+  8 : 0o7777777
+}
+ 
+const encNumber = (buf, off, size, number) =>
+  number === null ? false :
+  number > MAXNUM[size] || number < 0
+    ? (large.encode(number, buf.slice(off, off + size)), true)
+    : (encSmallNumber(buf, off, size, number), false)
+ 
+const encSmallNumber = (buf, off, size, number) =>
+  buf.write(octalString(number, size), off, size, 'ascii')
+ 
+const octalString = (number, size) =>
+  padOctal(Math.floor(number).toString(8), size)
+ 
+const padOctal = (string, size) =>
+  (string.length === size - 1 ? string
+  : new Array(size - string.length - 1).join('0') + string + ' ') + '\0'
+ 
+const encDate = (buf, off, size, date) =>
+  date === null ? false :
+  encNumber(buf, off, size, date.getTime() / 1000)
+ 
+// enough to fill the longest string we've got
+const NULLS = new Array(156).join('\0')
+// pad with nulls, return true if it's longer or non-ascii
+const encString = (buf, off, size, string) =>
+  string === null ? false :
+  (buf.write(string + NULLS, off, size, 'utf8'),
+   string.length !== Buffer.byteLength(string) || string.length > size)
+ 
+module.exports = Header
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/high-level-opt.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/high-level-opt.js.html new file mode 100644 index 0000000000..0a59596f75 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/high-level-opt.js.html @@ -0,0 +1,152 @@ + + + + Code coverage report for tar/lib/high-level-opt.js + + + + + + + +
+
+

+ All files / tar/lib high-level-opt.js +

+
+
+ 100% + Statements + 5/5 +
+
+ 100% + Branches + 4/4 +
+
+ 100% + Functions + 3/3 +
+
+ 100% + Lines + 3/3 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30  +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +469x +  +469x + 
'use strict'
+ 
+// turn tar(1) style args like `C` into the more verbose things like `cwd`
+ 
+const argmap = new Map([
+  ['C', 'cwd'],
+  ['f', 'file'],
+  ['z', 'gzip'],
+  ['P', 'preservePaths'],
+  ['U', 'unlink'],
+  ['strip-components', 'strip'],
+  ['stripComponents', 'strip'],
+  ['keep-newer', 'newer'],
+  ['keepNewer', 'newer'],
+  ['keep-newer-files', 'newer'],
+  ['keepNewerFiles', 'newer'],
+  ['k', 'keep'],
+  ['keep-existing', 'keep'],
+  ['keepExisting', 'keep'],
+  ['m', 'noMtime'],
+  ['no-mtime', 'noMtime'],
+  ['p', 'preserveOwner'],
+  ['L', 'follow'],
+  ['h', 'follow']
+])
+ 
+const parse = module.exports = opt => opt ? Object.keys(opt).map(k => [
+  argmap.has(k) ? argmap.get(k) : k, opt[k]
+]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/index.html b/node_modules/tar/coverage/lcov-report/tar/lib/index.html new file mode 100644 index 0000000000..1f908d1e77 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/index.html @@ -0,0 +1,314 @@ + + + + Code coverage report for tar/lib + + + + + + + +
+
+

+ All files tar/lib +

+
+
+ 99.94% + Statements + 1782/1783 +
+
+ 99.67% + Branches + 1224/1228 +
+
+ 100% + Functions + 271/271 +
+
+ 99.94% + Lines + 1735/1736 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
create.js
100%59/59100%35/35100%12/12100%59/59
extract.js
100%61/61100%45/45100%12/12100%60/60
header.js
100%161/161100%120/120100%20/20100%159/159
high-level-opt.js
100%5/5100%4/4100%3/3100%3/3
large-numbers.js
100%59/59100%20/20100%8/8100%57/57
list.js
100%80/80100%53/53100%14/14100%77/77
mkdir.js
100%130/130100%91/91100%15/15100%128/128
pack.js
100%228/228100%123/123100%44/44100%222/222
parse.js
100%242/242100%155/155100%24/24100%236/236
pax.js
100%62/62100%75/75100%9/9100%60/60
read-entry.js
100%53/53100%36/36100%3/3100%51/51
replace.js
100%131/131100%70/70100%18/18100%128/128
types.js
100%3/3100%0/0100%1/1100%2/2
unpack.js
100%254/254100%194/194100%44/44100%247/247
update.js
100%20/20100%15/15100%4/4100%20/20
warn-mixin.js
100%9/9100%4/4100%2/2100%8/8
winchars.js
100%12/12100%0/0100%7/7100%8/8
write-entry.js
99.53%213/21497.87%184/188100%31/3199.53%210/211
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/large-numbers.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/large-numbers.js.html new file mode 100644 index 0000000000..5b8610f9b5 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/large-numbers.js.html @@ -0,0 +1,341 @@ + + + + Code coverage report for tar/lib/large-numbers.js + + + + + + + +
+
+

+ All files / tar/lib large-numbers.js +

+
+
+ 100% + Statements + 59/59 +
+
+ 100% + Branches + 20/20 +
+
+ 100% + Functions + 8/8 +
+
+ 100% + Lines + 57/57 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93  +  +  +  +  +  +14x +17x +17x +6x +  +11x +17x +  +  +14x +11x +11x +86x +31x +  +55x +55x +  +  +  +  +14x +6x +6x +6x +6x +  +60x +42x +  +18x +18x +  +60x +48x +12x +6x +  +6x +6x +  +  +  +  +14x +47x +47x +47x +  +  +  +14x +6x +6x +6x +6x +60x +  +60x +48x +12x +6x +  +6x +6x +  +60x +12x +  +6x +  +  +14x +41x +41x +41x +266x +266x +161x +  +41x +  +  +96x +  +14x + 
'use strict'
+// Tar can encode large and negative numbers using a leading byte of
+// 0xff for negative, and 0x80 for positive.  The trailing byte in the
+// section will always be 0x20, or in some implementations 0x00.
+// this module encodes and decodes these things.
+ 
+const encode = exports.encode = (num, buf) => {
+  buf[buf.length - 1] = 0x20
+  if (num < 0)
+    encodeNegative(num, buf)
+  else
+    encodePositive(num, buf)
+  return buf
+}
+ 
+const encodePositive = (num, buf) => {
+  buf[0] = 0x80
+  for (var i = buf.length - 2; i > 0; i--) {
+    if (num === 0)
+      buf[i] = 0
+    else {
+      buf[i] = num % 0x100
+      num = Math.floor(num / 0x100)
+    }
+  }
+}
+ 
+const encodeNegative = (num, buf) => {
+  buf[0] = 0xff
+  var flipped = false
+  num = num * -1
+  for (var i = buf.length - 2; i > 0; i--) {
+    var byte
+    if (num === 0)
+      byte = 0
+    else {
+      byte = num % 0x100
+      num = Math.floor(num / 0x100)
+    }
+    if (flipped)
+      buf[i] = onesComp(byte)
+    else if (byte === 0)
+      buf[i] = 0
+    else {
+      flipped = true
+      buf[i] = twosComp(byte)
+    }
+  }
+}
+ 
+const parse = exports.parse = (buf) => {
+  var post = buf[buf.length - 1]
+  var pre = buf[0]
+  return pre === 0x80 ? pos(buf.slice(1, buf.length - 1))
+   : twos(buf.slice(1, buf.length - 1))
+}
+ 
+const twos = (buf) => {
+  var len = buf.length
+  var sum = 0
+  var flipped = false
+  for (var i = len - 1; i > -1; i--) {
+    var byte = buf[i]
+    var f
+    if (flipped)
+      f = onesComp(byte)
+    else if (byte === 0)
+      f = byte
+    else {
+      flipped = true
+      f = twosComp(byte)
+    }
+    if (f !== 0)
+      sum += f * Math.pow(256, len - i - 1)
+  }
+  return sum * -1
+}
+ 
+const pos = (buf) => {
+  var len = buf.length
+  var sum = 0
+  for (var i = len - 1; i > -1; i--) {
+    var byte = buf[i]
+    if (byte !== 0)
+      sum += byte * Math.pow(256, len - i - 1)
+  }
+  return sum
+}
+ 
+const onesComp = byte => (0xff ^ byte) & 0xff
+ 
+const twosComp = byte => ((0xff ^ byte) + 1) & 0xff
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/list.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/list.js.html new file mode 100644 index 0000000000..4e6e34e654 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/list.js.html @@ -0,0 +1,449 @@ + + + + Code coverage report for tar/lib/list.js + + + + + + + +
+
+

+ All files / tar/lib list.js +

+
+
+ 100% + Statements + 80/80 +
+
+ 100% + Branches + 53/53 +
+
+ 100% + Functions + 14/14 +
+
+ 100% + Lines + 77/77 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129  +  +  +  +  +  +5x +5x +5x +5x +5x +  +5x +34x +1x +33x +1x +  +34x +5x +  +34x +31x +  +3x +  +34x +  +34x +1x +  +33x +1x +  +32x +3x +  +32x +22x +  +32x +  +  +  +  +5x +22x +22x +255x +255x +72x +  +  +  +  +5x +6x +3x +  +3x +125x +125x +  +  +  +125x +125x +  +  +3x +32x +64x +  +  +5x +13x +13x +13x +  +13x +13x +12x +12x +10x +  +2x +2x +2x +2x +28x +27x +27x +  +1x +  +11x +  +13x +1x +  +  +  +5x +16x +16x +  +16x +16x +16x +16x +  +16x +16x +2x +  +14x +  +  +  +14x +14x +  +  +  +16x +  +  +16x + 
'use strict'
+ 
+// XXX: This shares a lot in common with extract.js
+// maybe some DRY opportunity here?
+ 
+// tar -t
+const hlo = require('./high-level-opt.js')
+const Parser = require('./parse.js')
+const fs = require('fs')
+const fsm = require('fs-minipass')
+const path = require('path')
+ 
+const t = module.exports = (opt_, files, cb) => {
+  if (typeof opt_ === 'function')
+    cb = opt_, files = null, opt_ = {}
+  else if (Array.isArray(opt_))
+    files = opt_, opt_ = {}
+ 
+  if (typeof files === 'function')
+    cb = files, files = null
+ 
+  if (!files)
+    files = []
+  else
+    files = Array.from(files)
+ 
+  const opt = hlo(opt_)
+ 
+  if (opt.sync && typeof cb === 'function')
+    throw new TypeError('callback not supported for sync tar functions')
+ 
+  if (!opt.file && typeof cb === 'function')
+    throw new TypeError('callback only supported with file option')
+ 
+  if (files.length)
+    filesFilter(opt, files)
+ 
+  if (!opt.noResume)
+    onentryFunction(opt)
+ 
+  return opt.file && opt.sync ? listFileSync(opt)
+    : opt.file ? listFile(opt, cb)
+    : list(opt)
+}
+ 
+const onentryFunction = opt => {
+  const onentry = opt.onentry
+  opt.onentry = onentry ? e => {
+    onentry(e)
+    e.resume()
+  } : e => e.resume()
+}
+ 
+// construct a filter that limits the file entries listed
+// include child entries if a dir is included
+const filesFilter = (opt, files) => {
+  const map = new Map(files.map(f => [f.replace(/\/+$/, ''), true]))
+  const filter = opt.filter
+ 
+  const mapHas = (file, r) => {
+    const root = r || path.parse(file).root || '.'
+    const ret = file === root ? false
+      : map.has(file) ? map.get(file)
+      : mapHas(path.dirname(file), root)
+ 
+    map.set(file, ret)
+    return ret
+  }
+ 
+  opt.filter = filter
+    ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\/+$/, ''))
+    : file => mapHas(file.replace(/\/+$/, ''))
+}
+ 
+const listFileSync = opt => {
+  const p = list(opt)
+  const file = opt.file
+  let threw = true
+  let fd
+  try {
+    const stat = fs.statSync(file)
+    const readSize = opt.maxReadSize || 16*1024*1024
+    if (stat.size < readSize) {
+      p.end(fs.readFileSync(file))
+    } else {
+      let pos = 0
+      const buf = Buffer.allocUnsafe(readSize)
+      fd = fs.openSync(file, 'r')
+      while (pos < stat.size) {
+        let bytesRead = fs.readSync(fd, buf, 0, readSize, pos)
+        pos += bytesRead
+        p.write(buf.slice(0, bytesRead))
+      }
+      p.end()
+    }
+    threw = false
+  } finally {
+    if (threw && fd)
+      try { fs.closeSync(fd) } catch (er) {}
+  }
+}
+ 
+const listFile = (opt, cb) => {
+  const parse = new Parser(opt)
+  const readSize = opt.maxReadSize || 16*1024*1024
+ 
+  const file = opt.file
+  const p = new Promise((resolve, reject) => {
+    parse.on('error', reject)
+    parse.on('end', resolve)
+ 
+    fs.stat(file, (er, stat) => {
+      if (er)
+        reject(er)
+      else {
+        const stream = new fsm.ReadStream(file, {
+          readSize: readSize,
+          size: stat.size
+        })
+        stream.on('error', reject)
+        stream.pipe(parse)
+      }
+    })
+  })
+  return cb ? p.then(cb, cb) : p
+}
+ 
+const list = opt => new Parser(opt)
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/mkdir.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/mkdir.js.html new file mode 100644 index 0000000000..afeb931676 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/mkdir.js.html @@ -0,0 +1,686 @@ + + + + Code coverage report for tar/lib/mkdir.js + + + + + + + +
+
+

+ All files / tar/lib mkdir.js +

+
+
+ 100% + Statements + 130/130 +
+
+ 100% + Branches + 91/91 +
+
+ 100% + Functions + 15/15 +
+
+ 100% + Lines + 128/128 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208  +  +  +  +  +  +3x +3x +3x +3x +  +  +  +4x +4x +4x +  +  +  +8x +  +  +  +  +  +12x +12x +12x +  +  +  +36x +  +  +  +3x +  +  +451x +451x +451x +  +451x +451x +451x +  +  +  +451x +451x +451x +451x +  +451x +457x +15x +  +442x +442x +6x +436x +1x +  +435x +  +  +  +451x +272x +  +179x +40x +40x +2x +40x +  +  +139x +8x +  +131x +131x +131x +  +  +3x +1062x +119x +943x +943x +943x +723x +220x +  +  +222x +222x +36x +  +4x +  +32x +32x +4x +28x +22x +6x +3x +3x +1x +2x +  +3x +2x +  +1x +  +  +186x +186x +  +  +  +3x +  +  +276x +276x +276x +  +276x +276x +276x +  +  +  +276x +276x +276x +276x +  +276x +266x +266x +6x +266x +1x +266x +  +  +276x +128x +  +148x +34x +34x +34x +34x +  +1x +  +34x +2x +  +32x +32x +  +  +114x +7x +  +107x +107x +107x +107x +  +  +  +792x +608x +  +184x +184x +169x +169x +  +15x +  +4x +  +11x +9x +4x +4x +5x +2x +2x +2x +2x +2x +3x +2x +  +  +  +99x +  + 
'use strict'
+// wrapper around mkdirp for tar's needs.
+ 
+// TODO: This should probably be a class, not functionally
+// passing around state in a gazillion args.
+ 
+const mkdirp = require('mkdirp')
+const fs = require('fs')
+const path = require('path')
+const chownr = require('chownr')
+ 
+class SymlinkError extends Error {
+  constructor (symlink, path) {
+    super('Cannot extract through symbolic link')
+    this.path = path
+    this.symlink = symlink
+  }
+ 
+  get name () {
+    return 'SylinkError'
+  }
+}
+ 
+class CwdError extends Error {
+  constructor (path, code) {
+    super(code + ': Cannot cd into \'' + path + '\'')
+    this.path = path
+    this.code = code
+  }
+ 
+  get name () {
+    return 'CwdError'
+  }
+}
+ 
+const mkdir = module.exports = (dir, opt, cb) => {
+  // if there's any overlap between mask and mode,
+  // then we'll need an explicit chmod
+  const umask = opt.umask
+  const mode = opt.mode | 0o0700
+  const needChmod = (mode & umask) !== 0
+ 
+  const uid = opt.uid
+  const gid = opt.gid
+  const doChown = typeof uid === 'number' &&
+    typeof gid === 'number' &&
+    ( uid !== opt.processUid || gid !== opt.processGid )
+ 
+  const preserve = opt.preserve
+  const unlink = opt.unlink
+  const cache = opt.cache
+  const cwd = opt.cwd
+ 
+  const done = (er, created) => {
+    if (er)
+      cb(er)
+    else {
+      cache.set(dir, true)
+      if (created && doChown)
+        chownr(created, uid, gid, er => done(er))
+      else if (needChmod)
+        fs.chmod(dir, mode, cb)
+      else
+        cb()
+    }
+  }
+ 
+  if (cache && cache.get(dir) === true)
+    return done()
+ 
+  if (dir === cwd)
+    return fs.lstat(dir, (er, st) => {
+      if (er || !st.isDirectory())
+        er = new CwdError(dir, er && er.code || 'ENOTDIR')
+      done(er)
+    })
+ 
+  if (preserve)
+    return mkdirp(dir, mode, done)
+ 
+  const sub = path.relative(cwd, dir)
+  const parts = sub.split(/\/|\\/)
+  mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)
+}
+ 
+const mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {
+  if (!parts.length)
+    return cb(null, created)
+  const p = parts.shift()
+  const part = base + '/' + p
+  if (cache.get(part))
+    return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)
+  fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))
+}
+ 
+const onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {
+  if (er) {
+    if (er.path && path.dirname(er.path) === cwd &&
+        (er.code === 'ENOTDIR' || er.code === 'ENOENT'))
+      return cb(new CwdError(cwd, er.code))
+ 
+    fs.lstat(part, (statEr, st) => {
+      if (statEr)
+        cb(statEr)
+      else if (st.isDirectory())
+        mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)
+      else if (unlink)
+        fs.unlink(part, er => {
+          if (er)
+            return cb(er)
+          fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))
+        })
+      else if (st.isSymbolicLink())
+        return cb(new SymlinkError(part, part + '/' + parts.join('/')))
+      else
+        cb(er)
+    })
+  } else {
+    created = created || part
+    mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)
+  }
+}
+ 
+const mkdirSync = module.exports.sync = (dir, opt) => {
+  // if there's any overlap between mask and mode,
+  // then we'll need an explicit chmod
+  const umask = opt.umask
+  const mode = opt.mode | 0o0700
+  const needChmod = (mode & umask) !== 0
+ 
+  const uid = opt.uid
+  const gid = opt.gid
+  const doChown = typeof uid === 'number' &&
+    typeof gid === 'number' &&
+    ( uid !== opt.processUid || gid !== opt.processGid )
+ 
+  const preserve = opt.preserve
+  const unlink = opt.unlink
+  const cache = opt.cache
+  const cwd = opt.cwd
+ 
+  const done = (created) => {
+    cache.set(dir, true)
+    if (created && doChown)
+      chownr.sync(created, uid, gid)
+    if (needChmod)
+      fs.chmodSync(dir, mode)
+    cache.set(dir, true)
+  }
+ 
+  if (cache && cache.get(dir) === true)
+    return done()
+ 
+  if (dir === cwd) {
+    let ok = false
+    let code = 'ENOTDIR'
+    try {
+      ok = fs.lstatSync(dir).isDirectory()
+    } catch (er) {
+      code = er.code
+    } finally {
+      if (!ok)
+        throw new CwdError(dir, code)
+    }
+    done()
+    return
+  }
+ 
+  if (preserve)
+    return done(mkdirp.sync(dir, mode))
+ 
+  const sub = path.relative(cwd, dir)
+  const parts = sub.split(/\/|\\/)
+  let created = null
+  for (let p = parts.shift(), part = cwd;
+       p && (part += '/' + p);
+       p = parts.shift()) {
+ 
+    if (cache.get(part))
+      continue
+ 
+    try {
+      fs.mkdirSync(part, mode)
+      created = created || part
+      cache.set(part, true)
+    } catch (er) {
+      if (er.path && path.dirname(er.path) === cwd &&
+          (er.code === 'ENOTDIR' || er.code === 'ENOENT'))
+        return new CwdError(cwd, er.code)
+ 
+      const st = fs.lstatSync(part)
+      if (st.isDirectory()) {
+        cache.set(part, true)
+        continue
+      } else if (unlink) {
+        fs.unlinkSync(part)
+        fs.mkdirSync(part, mode)
+        created = created || part
+        cache.set(part, true)
+        continue
+      } else if (st.isSymbolicLink())
+        return new SymlinkError(part, part + '/' + parts.join('/'))
+    }
+  }
+ 
+  return done(created)
+}
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/pack.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/pack.js.html new file mode 100644 index 0000000000..d46f96d8fc --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/pack.js.html @@ -0,0 +1,1268 @@ + + + + Code coverage report for tar/lib/pack.js + + + + + + + +
+
+

+ All files / tar/lib pack.js +

+
+
+ 100% + Statements + 228/228 +
+
+ 100% + Branches + 123/123 +
+
+ 100% + Functions + 44/44 +
+
+ 100% + Lines + 222/222 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402  +  +  +  +  +  +  +  +  +  +  +  +  +6566x +6566x +6566x +6566x +6566x +6566x +6566x +6566x +  +  +  +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +  +5x +5x +5x +  +5x +  +122x +122x +122x +122x +122x +122x +122x +122x +122x +122x +122x +122x +122x +122x +3x +  +122x +122x +5x +4x +5x +503x +5x +146x +219x +  +117x +  +122x +122x +122x +122x +  +  +6507x +  +122x +122x +122x +122x +122x +  +  +  +106x +  +  +  +107x +103x +  +  +  +100x +21x +99x +99x +99x +  +  +  +128x +1x +  +127x +27x +  +100x +123x +  +  +  +27x +27x +1x +  +  +27x +2x +  +25x +25x +25x +25x +25x +  +  +27x +  +  +  +6541x +6541x +34x +  +6541x +6541x +  +  +  +6453x +6453x +6453x +6453x +6453x +6453x +6453x +1x +  +6452x +  +  +  +  +6538x +6538x +  +  +6538x +24x +  +6538x +  +  +  +821x +821x +821x +821x +821x +821x +1x +820x +  +  +  +  +858x +858x +858x +  +  +  +20596x +9093x +  +11503x +11503x +  +  +38739x +38735x +25x +25x +25x +  +  +  +11499x +  +11499x +96x +4x +  +92x +92x +  +  +  +  +  +25863x +  +  +  +6533x +6533x +6533x +  +  +  +38739x +6156x +  +32583x +18770x +4954x +18770x +  +  +13813x +6541x +4x +  +6537x +  +13811x +6453x +  +  +7358x +24x +  +7334x +860x +2x +  +858x +859x +821x +  +  +  +6512x +6511x +1x +1x +  +  +6510x +1581x +  +  +  +6537x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6512x +6512x +6512x +6508x +1x +  +2x +  +  +  +  +248x +158x +  +  +  +  +6448x +  +6448x +820x +6393x +  +  +  +6393x +6393x +  +  +6448x +6448x +  +6448x +6336x +11830x +156x +  +  +112x +199x +53x +  +  +  +  +265x +214x +265x +  +  +  +  +  +47x +47x +  +  +  +  +  +  +  +84x +84x +  +  +  +37x +  +  +  +  +87x +87x +  +87x +38x +48x +  +  +  +  +48x +48x +  +  +87x +31x +39x +  +  +56x +106x +  +  +  +  +5x +  +5x + 
'use strict'
+ 
+// A readable tar stream creator
+// Technically, this is a transform stream that you write paths into,
+// and tar format comes out of.
+// The `add()` method is like `write()` but returns this,
+// and end() return `this` as well, so you can
+// do `new Pack(opt).add('files').add('dir').end().pipe(output)
+// You could also do something like:
+// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))
+ 
+class PackJob {
+  constructor (path, absolute) {
+    this.path = path || './'
+    this.absolute = absolute
+    this.entry = null
+    this.stat = null
+    this.readdir = null
+    this.pending = false
+    this.ignore = false
+    this.piped = false
+  }
+}
+ 
+const MiniPass = require('minipass')
+const zlib = require('minizlib')
+const ReadEntry = require('./read-entry.js')
+const WriteEntry = require('./write-entry.js')
+const WriteEntrySync = WriteEntry.Sync
+const WriteEntryTar = WriteEntry.Tar
+const Yallist = require('yallist')
+const EOF = Buffer.alloc(1024)
+const ONSTAT = Symbol('onStat')
+const ENDED = Symbol('ended')
+const QUEUE = Symbol('queue')
+const CURRENT = Symbol('current')
+const PROCESS = Symbol('process')
+const PROCESSING = Symbol('processing')
+const PROCESSJOB = Symbol('processJob')
+const JOBS = Symbol('jobs')
+const JOBDONE = Symbol('jobDone')
+const ADDFSENTRY = Symbol('addFSEntry')
+const ADDTARENTRY = Symbol('addTarEntry')
+const STAT = Symbol('stat')
+const READDIR = Symbol('readdir')
+const ONREADDIR = Symbol('onreaddir')
+const PIPE = Symbol('pipe')
+const ENTRY = Symbol('entry')
+const ENTRYOPT = Symbol('entryOpt')
+const WRITEENTRYCLASS = Symbol('writeEntryClass')
+const WRITE = Symbol('write')
+const ONDRAIN = Symbol('ondrain')
+ 
+const fs = require('fs')
+const path = require('path')
+const warner = require('./warn-mixin.js')
+ 
+const Pack = warner(class Pack extends MiniPass {
+  constructor (opt) {
+    super(opt)
+    opt = opt || Object.create(null)
+    this.opt = opt
+    this.cwd = opt.cwd || process.cwd()
+    this.maxReadSize = opt.maxReadSize
+    this.preservePaths = !!opt.preservePaths
+    this.strict = !!opt.strict
+    this.noPax = !!opt.noPax
+    this.prefix = (opt.prefix || '').replace(/(\\|\/)+$/, '')
+    this.linkCache = opt.linkCache || new Map()
+    this.statCache = opt.statCache || new Map()
+    this.readdirCache = opt.readdirCache || new Map()
+    this[WRITEENTRYCLASS] = WriteEntry
+    if (typeof opt.onwarn === 'function')
+      this.on('warn', opt.onwarn)
+ 
+    this.zip = null
+    if (opt.gzip) {
+      if (typeof opt.gzip !== 'object')
+        opt.gzip = {}
+      this.zip = new zlib.Gzip(opt.gzip)
+      this.zip.on('data', chunk => super.write(chunk))
+      this.zip.on('end', _ => super.end())
+      this.zip.on('drain', _ => this[ONDRAIN]())
+      this.on('resume', _ => this.zip.resume())
+    } else
+      this.on('drain', this[ONDRAIN])
+ 
+    this.portable = !!opt.portable
+    this.noDirRecurse = !!opt.noDirRecurse
+    this.follow = !!opt.follow
+    this.noMtime = !!opt.noMtime
+ 
+ 
+    this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true
+ 
+    this[QUEUE] = new Yallist
+    this[JOBS] = 0
+    this.jobs = +opt.jobs || 4
+    this[PROCESSING] = false
+    this[ENDED] = false
+  }
+ 
+  [WRITE] (chunk) {
+    return super.write(chunk)
+  }
+ 
+  add (path) {
+    this.write(path)
+    return this
+  }
+ 
+  end (path) {
+    if (path)
+      this.write(path)
+    this[ENDED] = true
+    this[PROCESS]()
+    return this
+  }
+ 
+  write (path) {
+    if (this[ENDED])
+      throw new Error('write after end')
+ 
+    if (path instanceof ReadEntry)
+      this[ADDTARENTRY](path)
+    else
+      this[ADDFSENTRY](path)
+    return this.flowing
+  }
+ 
+  [ADDTARENTRY] (p) {
+    const absolute = path.resolve(this.cwd, p.path)
+    if (this.prefix)
+      p.path = this.prefix + '/' + p.path.replace(/^\.(\/+|$)/, '')
+ 
+    // in this case, we don't have to wait for the stat
+    if (!this.filter(p.path, p))
+      p.resume()
+    else {
+      const job = new PackJob(p.path, absolute, false)
+      job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))
+      job.entry.on('end', _ => this[JOBDONE](job))
+      this[JOBS] += 1
+      this[QUEUE].push(job)
+    }
+ 
+    this[PROCESS]()
+  }
+ 
+  [ADDFSENTRY] (p) {
+    const absolute = path.resolve(this.cwd, p)
+    if (this.prefix)
+      p = this.prefix + '/' + p.replace(/^\.(\/+|$)/, '')
+ 
+    this[QUEUE].push(new PackJob(p, absolute))
+    this[PROCESS]()
+  }
+ 
+  [STAT] (job) {
+    job.pending = true
+    this[JOBS] += 1
+    const stat = this.follow ? 'stat' : 'lstat'
+    fs[stat](job.absolute, (er, stat) => {
+      job.pending = false
+      this[JOBS] -= 1
+      if (er)
+        this.emit('error', er)
+      else
+        this[ONSTAT](job, stat)
+    })
+  }
+ 
+  [ONSTAT] (job, stat) {
+    this.statCache.set(job.absolute, stat)
+    job.stat = stat
+ 
+    // now we have the stat, we can filter it.
+    if (!this.filter(job.path, stat))
+      job.ignore = true
+ 
+    this[PROCESS]()
+  }
+ 
+  [READDIR] (job) {
+    job.pending = true
+    this[JOBS] += 1
+    fs.readdir(job.absolute, (er, entries) => {
+      job.pending = false
+      this[JOBS] -= 1
+      if (er)
+        return this.emit('error', er)
+      this[ONREADDIR](job, entries)
+    })
+  }
+ 
+  [ONREADDIR] (job, entries) {
+    this.readdirCache.set(job.absolute, entries)
+    job.readdir = entries
+    this[PROCESS]()
+  }
+ 
+  [PROCESS] () {
+    if (this[PROCESSING])
+      return
+ 
+    this[PROCESSING] = true
+    for (let w = this[QUEUE].head;
+         w !== null && this[JOBS] < this.jobs;
+         w = w.next) {
+      this[PROCESSJOB](w.value)
+      if (w.value.ignore) {
+        const p = w.next
+        this[QUEUE].removeNode(w)
+        w.next = p
+      }
+    }
+ 
+    this[PROCESSING] = false
+ 
+    if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {
+      if (this.zip)
+        this.zip.end(EOF)
+      else {
+        super.write(EOF)
+        super.end()
+      }
+    }
+  }
+ 
+  get [CURRENT] () {
+    return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value
+  }
+ 
+  [JOBDONE] (job) {
+    this[QUEUE].shift()
+    this[JOBS] -= 1
+    this[PROCESS]()
+  }
+ 
+  [PROCESSJOB] (job) {
+    if (job.pending)
+      return
+ 
+    if (job.entry) {
+      if (job === this[CURRENT] && !job.piped)
+        this[PIPE](job)
+      return
+    }
+ 
+    if (!job.stat) {
+      if (this.statCache.has(job.absolute))
+        this[ONSTAT](job, this.statCache.get(job.absolute))
+      else
+        this[STAT](job)
+    }
+    if (!job.stat)
+      return
+ 
+    // filtered out!
+    if (job.ignore)
+      return
+ 
+    if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {
+      if (this.readdirCache.has(job.absolute))
+        this[ONREADDIR](job, this.readdirCache.get(job.absolute))
+      else
+        this[READDIR](job)
+      if (!job.readdir)
+        return
+    }
+ 
+    // we know it doesn't have an entry, because that got checked above
+    job.entry = this[ENTRY](job)
+    if (!job.entry) {
+      job.ignore = true
+      return
+    }
+ 
+    if (job === this[CURRENT] && !job.piped)
+      this[PIPE](job)
+  }
+ 
+  [ENTRYOPT] (job) {
+    return {
+      onwarn: (msg, data) => {
+        this.warn(msg, data)
+      },
+      noPax: this.noPax,
+      cwd: this.cwd,
+      absolute: job.absolute,
+      preservePaths: this.preservePaths,
+      maxReadSize: this.maxReadSize,
+      strict: this.strict,
+      portable: this.portable,
+      linkCache: this.linkCache,
+      statCache: this.statCache,
+      noMtime: this.noMtime
+    }
+  }
+ 
+  [ENTRY] (job) {
+    this[JOBS] += 1
+    try {
+      return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))
+        .on('end', () => this[JOBDONE](job))
+        .on('error', er => this.emit('error', er))
+    } catch (er) {
+      this.emit('error', er)
+    }
+  }
+ 
+  [ONDRAIN] () {
+    if (this[CURRENT] && this[CURRENT].entry)
+      this[CURRENT].entry.resume()
+  }
+ 
+  // like .pipe() but using super, because our write() is special
+  [PIPE] (job) {
+    job.piped = true
+ 
+    if (job.readdir)
+      job.readdir.forEach(entry => {
+        const p = this.prefix ?
+          job.path.slice(this.prefix.length + 1) || './'
+          : job.path
+ 
+        const base = p === './' ? '' : p.replace(/\/*$/, '/')
+        this[ADDFSENTRY](base + entry)
+      })
+ 
+    const source = job.entry
+    const zip = this.zip
+ 
+    if (zip)
+      source.on('data', chunk => {
+        if (!zip.write(chunk))
+          source.pause()
+      })
+    else
+      source.on('data', chunk => {
+        if (!super.write(chunk))
+          source.pause()
+      })
+  }
+ 
+  pause () {
+    if (this.zip)
+      this.zip.pause()
+    return super.pause()
+  }
+})
+ 
+class PackSync extends Pack {
+  constructor (opt) {
+    super(opt)
+    this[WRITEENTRYCLASS] = WriteEntrySync
+  }
+ 
+  // pause/resume are no-ops in sync streams.
+  pause () {}
+  resume () {}
+ 
+  [STAT] (job) {
+    const stat = this.follow ? 'statSync' : 'lstatSync'
+    this[ONSTAT](job, fs[stat](job.absolute))
+  }
+ 
+  [READDIR] (job, stat) {
+    this[ONREADDIR](job, fs.readdirSync(job.absolute))
+  }
+ 
+  // gotta get it all in this tick
+  [PIPE] (job) {
+    const source = job.entry
+    const zip = this.zip
+ 
+    if (job.readdir)
+      job.readdir.forEach(entry => {
+        const p = this.prefix ?
+          job.path.slice(this.prefix.length + 1) || './'
+          : job.path
+ 
+ 
+        const base = p === './' ? '' : p.replace(/\/*$/, '/')
+        this[ADDFSENTRY](base + entry)
+      })
+ 
+    if (zip)
+      source.on('data', chunk => {
+        zip.write(chunk)
+      })
+    else
+      source.on('data', chunk => {
+        super[WRITE](chunk)
+      })
+  }
+}
+ 
+Pack.Sync = PackSync
+ 
+module.exports = Pack
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/parse.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/parse.js.html new file mode 100644 index 0000000000..1d505abe68 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/parse.js.html @@ -0,0 +1,1310 @@ + + + + Code coverage report for tar/lib/parse.js + + + + + + + +
+
+

+ All files / tar/lib parse.js +

+
+
+ 100% + Statements + 242/242 +
+
+ 100% + Branches + 155/155 +
+
+ 100% + Functions + 24/24 +
+
+ 100% + Lines + 236/236 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +9x +9x +9x +9x +9x +9x +9x +9x +  +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +  +2032x +  +9x +  +742x +742x +  +742x +134x +  +608x +589x +589x +589x +589x +  +  +742x +742x +742x +  +  +742x +742x +  +742x +742x +742x +742x +742x +742x +742x +742x +742x +742x +742x +742x +36x +742x +34x +  +  +  +6101x +  +6101x +1834x +4267x +160x +4107x +40x +  +4067x +4067x +40x +4027x +40x +  +3987x +  +3987x +759x +260x +260x +260x +499x +455x +475x +455x +  +  +  +3228x +3228x +3228x +1070x +1070x +  +2158x +1028x +  +1130x +1130x +  +  +2158x +1675x +1675x +  +483x +  +  +  +  +  +  +  +4299x +  +4299x +1653x +1653x +2646x +490x +  +2156x +2156x +2150x +1288x +1288x +  +  +  +4293x +  +  +  +2947x +  +2941x +  +  +  +  +  +  +  +2478x +2478x +2478x +2468x +516x +  +10x +  +  +  +  +  +2194x +2194x +2194x +  +  +2194x +  +2194x +2121x +2121x +2121x +  +  +2194x +  +  +  +475x +475x +  +  +475x +455x +  +475x +  +  +  +4328x +3815x +  +513x +  +  +  +455x +455x +  +  +351x +351x +  +  +44x +44x +  +  +  +40x +40x +40x +  +  +20x +20x +20x +  +  +  +  +  +  +  +2x +2x +2x +  +  +  +669590x +1x +  +  +669589x +944x +224x +224x +  +944x +224x +224x +  +720x +947x +493x +  +720x +227x +227x +227x +20164x +227x +2x +227x +226x +226x +  +227x +  +  +  +669138x +669138x +33586x +  +635552x +669132x +  +  +  +669132x +  +  +  +  +669132x +63x +  +669132x +  +  +  +652869x +652866x +  +  +  +3449x +709x +709x +709x +2x +2x +  +2x +1x +2x +  +709x +  +  +  +  +655942x +10x +655932x +381x +  +655551x +655551x +652859x +652859x +652859x +652859x +  +2692x +  +  +655545x +2x +2x +2x +  +655545x +  +  +655936x +3068x +  +  +  +  +  +655553x +655553x +655553x +8295x +  +6101x +6095x +6095x +  +  +  +1719x +1719x +  +  +475x +475x +  +  +  +  +  +  +  +655547x +652863x +1x +  +652862x +  +  +  +  +718x +717x +113x +  +604x +604x +  +  +  +  + 
'use strict'
+ 
+// this[BUFFER] is the remainder of a chunk if we're waiting for
+// the full 512 bytes of a header to come in.  We will Buffer.concat()
+// it to the next write(), which is a mem copy, but a small one.
+//
+// this[QUEUE] is a Yallist of entries that haven't been emitted
+// yet this can only get filled up if the user keeps write()ing after
+// a write() returns false, or does a write() with more than one entry
+//
+// We don't buffer chunks, we always parse them and either create an
+// entry, or push it into the active entry.  The ReadEntry class knows
+// to throw data away if .ignore=true
+//
+// Shift entry off the buffer when it emits 'end', and emit 'entry' for
+// the next one in the list.
+//
+// At any time, we're pushing body chunks into the entry at WRITEENTRY,
+// and waiting for 'end' on the entry at READENTRY
+//
+// ignored entries get .resume() called on them straight away
+ 
+const warner = require('./warn-mixin.js')
+const path = require('path')
+const Header = require('./header.js')
+const EE = require('events')
+const Yallist = require('yallist')
+const maxMetaEntrySize = 1024 * 1024
+const Entry = require('./read-entry.js')
+const Pax = require('./pax.js')
+const zlib = require('minizlib')
+ 
+const gzipHeader = new Buffer([0x1f, 0x8b])
+const STATE = Symbol('state')
+const WRITEENTRY = Symbol('writeEntry')
+const READENTRY = Symbol('readEntry')
+const NEXTENTRY = Symbol('nextEntry')
+const PROCESSENTRY = Symbol('processEntry')
+const EX = Symbol('extendedHeader')
+const GEX = Symbol('globalExtendedHeader')
+const META = Symbol('meta')
+const EMITMETA = Symbol('emitMeta')
+const BUFFER = Symbol('buffer')
+const QUEUE = Symbol('queue')
+const ENDED = Symbol('ended')
+const EMITTEDEND = Symbol('emittedEnd')
+const EMIT = Symbol('emit')
+const UNZIP = Symbol('unzip')
+const CONSUMECHUNK = Symbol('consumeChunk')
+const CONSUMECHUNKSUB = Symbol('consumeChunkSub')
+const CONSUMEBODY = Symbol('consumeBody')
+const CONSUMEMETA = Symbol('consumeMeta')
+const CONSUMEHEADER = Symbol('consumeHeader')
+const CONSUMING = Symbol('consuming')
+const BUFFERCONCAT = Symbol('bufferConcat')
+const MAYBEEND = Symbol('maybeEnd')
+const WRITING = Symbol('writing')
+const ABORTED = Symbol('aborted')
+const DONE = Symbol('onDone')
+ 
+const noop = _ => true
+ 
+module.exports = warner(class Parser extends EE {
+  constructor (opt) {
+    opt = opt || {}
+    super(opt)
+ 
+    if (opt.ondone)
+      this.on(DONE, opt.ondone)
+    else
+      this.on(DONE, _ => {
+        this.emit('prefinish')
+        this.emit('finish')
+        this.emit('end')
+        this.emit('close')
+      })
+ 
+    this.strict = !!opt.strict
+    this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize
+    this.filter = typeof opt.filter === 'function' ? opt.filter : noop
+ 
+    // have to set this so that streams are ok piping into it
+    this.writable = true
+    this.readable = false
+ 
+    this[QUEUE] = new Yallist()
+    this[BUFFER] = null
+    this[READENTRY] = null
+    this[WRITEENTRY] = null
+    this[STATE] = 'begin'
+    this[META] = ''
+    this[EX] = null
+    this[GEX] = null
+    this[ENDED] = false
+    this[UNZIP] = null
+    this[ABORTED] = false
+    if (typeof opt.onwarn === 'function')
+      this.on('warn', opt.onwarn)
+    if (typeof opt.onentry === 'function')
+      this.on('entry', opt.onentry)
+  }
+ 
+  [CONSUMEHEADER] (chunk, position) {
+    const header = new Header(chunk, position)
+ 
+    if (header.nullBlock)
+      this[EMIT]('nullBlock')
+    else if (!header.cksumValid)
+      this.warn('invalid entry', header)
+    else if (!header.path)
+      this.warn('invalid: path is required', header)
+    else {
+      const type = header.type
+      if (/^(Symbolic)?Link$/.test(type) && !header.linkpath)
+        this.warn('invalid: linkpath required', header)
+      else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath)
+        this.warn('invalid: linkpath forbidden', header)
+      else {
+        const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])
+ 
+        if (entry.meta) {
+          if (entry.size > this.maxMetaEntrySize) {
+            entry.ignore = true
+            this[EMIT]('ignoredEntry', entry)
+            this[STATE] = 'ignore'
+          } else if (entry.size > 0) {
+            this[META] = ''
+            entry.on('data', c => this[META] += c)
+            this[STATE] = 'meta'
+          }
+        } else {
+ 
+          this[EX] = null
+          entry.ignore = entry.ignore || !this.filter(entry.path, entry)
+          if (entry.ignore) {
+            this[EMIT]('ignoredEntry', entry)
+            this[STATE] = entry.remain ? 'ignore' : 'begin'
+          } else {
+            if (entry.remain)
+              this[STATE] = 'body'
+            else {
+              this[STATE] = 'begin'
+              entry.end()
+            }
+ 
+            if (!this[READENTRY]) {
+              this[QUEUE].push(entry)
+              this[NEXTENTRY]()
+            } else
+              this[QUEUE].push(entry)
+          }
+        }
+      }
+    }
+  }
+ 
+  [PROCESSENTRY] (entry) {
+    let go = true
+ 
+    if (!entry) {
+      this[READENTRY] = null
+      go = false
+    } else if (Array.isArray(entry))
+      this.emit.apply(this, entry)
+    else {
+      this[READENTRY] = entry
+      this.emit('entry', entry)
+      if (!entry.emittedEnd) {
+        entry.on('end', _ => this[NEXTENTRY]())
+        go = false
+      }
+    }
+ 
+    return go
+  }
+ 
+  [NEXTENTRY] () {
+    do {} while (this[PROCESSENTRY](this[QUEUE].shift()))
+ 
+    if (!this[QUEUE].length) {
+      // At this point, there's nothing in the queue, but we may have an
+      // entry which is being consumed (readEntry).
+      // If we don't, then we definitely can handle more data.
+      // If we do, and either it's flowing, or it has never had any data
+      // written to it, then it needs more.
+      // The only other possibility is that it has returned false from a
+      // write() call, so we wait for the next drain to continue.
+      const re = this[READENTRY]
+      const drainNow = !re || re.flowing || re.size === re.remain
+      if (drainNow) {
+        if (!this[WRITING])
+          this.emit('drain')
+      } else
+        re.once('drain', _ => this.emit('drain'))
+     }
+  }
+ 
+  [CONSUMEBODY] (chunk, position) {
+    // write up to but no  more than writeEntry.blockRemain
+    const entry = this[WRITEENTRY]
+    const br = entry.blockRemain
+    const c = (br >= chunk.length && position === 0) ? chunk
+      : chunk.slice(position, position + br)
+ 
+    entry.write(c)
+ 
+    if (!entry.blockRemain) {
+      this[STATE] = 'begin'
+      this[WRITEENTRY] = null
+      entry.end()
+    }
+ 
+    return c.length
+  }
+ 
+  [CONSUMEMETA] (chunk, position) {
+    const entry = this[WRITEENTRY]
+    const ret = this[CONSUMEBODY](chunk, position)
+ 
+    // if we finished, then the entry is reset
+    if (!this[WRITEENTRY])
+      this[EMITMETA](entry)
+ 
+    return ret
+  }
+ 
+  [EMIT] (ev, data, extra) {
+    if (!this[QUEUE].length && !this[READENTRY])
+      this.emit(ev, data, extra)
+    else
+      this[QUEUE].push([ev, data, extra])
+  }
+ 
+  [EMITMETA] (entry) {
+    this[EMIT]('meta', this[META])
+    switch (entry.type) {
+      case 'ExtendedHeader':
+      case 'OldExtendedHeader':
+        this[EX] = Pax.parse(this[META], this[EX], false)
+        break
+ 
+      case 'GlobalExtendedHeader':
+        this[GEX] = Pax.parse(this[META], this[GEX], true)
+        break
+ 
+      case 'NextFileHasLongPath':
+      case 'OldGnuLongPath':
+        this[EX] = this[EX] || Object.create(null)
+        this[EX].path = this[META].replace(/\0.*/, '')
+        break
+ 
+      case 'NextFileHasLongLinkpath':
+        this[EX] = this[EX] || Object.create(null)
+        this[EX].linkpath = this[META].replace(/\0.*/, '')
+        break
+ 
+      /* istanbul ignore next */
+      default: throw new Error('unknown meta: ' + entry.type)
+    }
+  }
+ 
+  abort (msg, error) {
+    this[ABORTED] = true
+    this.warn(msg, error)
+    this.emit('abort')
+  }
+ 
+  write (chunk) {
+    if (this[ABORTED])
+      return
+ 
+    // first write, might be gzipped
+    if (this[UNZIP] === null && chunk) {
+      if (this[BUFFER]) {
+        chunk = Buffer.concat([this[BUFFER], chunk])
+        this[BUFFER] = null
+      }
+      if (chunk.length < gzipHeader.length) {
+        this[BUFFER] = chunk
+        return true
+      }
+      for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {
+        if (chunk[i] !== gzipHeader[i])
+          this[UNZIP] = false
+      }
+      if (this[UNZIP] === null) {
+        const ended = this[ENDED]
+        this[ENDED] = false
+        this[UNZIP] = new zlib.Unzip()
+        this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))
+        this[UNZIP].on('error', er =>
+          this.abort('zlib error: ' + er.message, er))
+        this[UNZIP].on('end', _ => {
+          this[ENDED] = true
+          this[CONSUMECHUNK]()
+        })
+        return ended ? this[UNZIP].end(chunk) : this[UNZIP].write(chunk)
+      }
+    }
+ 
+    this[WRITING] = true
+    if (this[UNZIP])
+      this[UNZIP].write(chunk)
+    else
+      this[CONSUMECHUNK](chunk)
+    this[WRITING] = false
+ 
+    // return false if there's a queue, or if the current entry isn't flowing
+    const ret =
+      this[QUEUE].length ? false :
+      this[READENTRY] ? this[READENTRY].flowing :
+      true
+ 
+    // if we have no queue, then that means a clogged READENTRY
+    if (!ret && !this[QUEUE].length)
+      this[READENTRY].once('drain', _ => this.emit('drain'))
+ 
+    return ret
+  }
+ 
+  [BUFFERCONCAT] (c) {
+    if (c && !this[ABORTED])
+      this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c
+  }
+ 
+  [MAYBEEND] () {
+    if (this[ENDED] && !this[EMITTEDEND] && !this[ABORTED]) {
+      this[EMITTEDEND] = true
+      const entry = this[WRITEENTRY]
+      if (entry && entry.blockRemain) {
+        const have = this[BUFFER] ? this[BUFFER].length : 0
+        this.warn('Truncated input (needed ' + entry.blockRemain +
+                  ' more bytes, only ' + have + ' available)', entry)
+        if (this[BUFFER])
+          entry.write(this[BUFFER])
+        entry.end()
+      }
+      this[EMIT](DONE)
+    }
+  }
+ 
+  [CONSUMECHUNK] (chunk) {
+    if (this[CONSUMING]) {
+      this[BUFFERCONCAT](chunk)
+    } else if (!chunk && !this[BUFFER]) {
+      this[MAYBEEND]()
+    } else {
+      this[CONSUMING] = true
+      if (this[BUFFER]) {
+        this[BUFFERCONCAT](chunk)
+        const c = this[BUFFER]
+        this[BUFFER] = null
+        this[CONSUMECHUNKSUB](c)
+      } else {
+        this[CONSUMECHUNKSUB](chunk)
+      }
+ 
+      while (this[BUFFER] && this[BUFFER].length >= 512 && !this[ABORTED]) {
+        const c = this[BUFFER]
+        this[BUFFER] = null
+        this[CONSUMECHUNKSUB](c)
+      }
+      this[CONSUMING] = false
+    }
+ 
+    if (!this[BUFFER] || this[ENDED])
+      this[MAYBEEND]()
+  }
+ 
+  [CONSUMECHUNKSUB] (chunk) {
+    // we know that we are in CONSUMING mode, so anything written goes into
+    // the buffer.  Advance the position and put any remainder in the buffer.
+    let position = 0
+    let length = chunk.length
+    while (position + 512 <= length && !this[ABORTED]) {
+      switch (this[STATE]) {
+        case 'begin':
+          this[CONSUMEHEADER](chunk, position)
+          position += 512
+          break
+ 
+        case 'ignore':
+        case 'body':
+          position += this[CONSUMEBODY](chunk, position)
+          break
+ 
+        case 'meta':
+          position += this[CONSUMEMETA](chunk, position)
+          break
+ 
+        /* istanbul ignore next */
+        default:
+          throw new Error('invalid state: ' + this[STATE])
+      }
+    }
+ 
+    if (position < length) {
+      if (this[BUFFER])
+        this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])
+      else
+        this[BUFFER] = chunk.slice(position)
+    }
+  }
+ 
+  end (chunk) {
+    if (!this[ABORTED]) {
+      if (this[UNZIP])
+        this[UNZIP].end(chunk)
+      else {
+        this[ENDED] = true
+        this.write(chunk)
+      }
+    }
+  }
+})
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/pax.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/pax.js.html new file mode 100644 index 0000000000..ed0e937a12 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/pax.js.html @@ -0,0 +1,500 @@ + + + + Code coverage report for tar/lib/pax.js + + + + + + + +
+
+

+ All files / tar/lib pax.js +

+
+
+ 100% + Statements + 62/62 +
+
+ 100% + Branches + 75/75 +
+
+ 100% + Functions + 9/9 +
+
+ 100% + Lines + 60/60 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146  +11x +11x +  +  +  +435x +435x +435x +435x +435x +435x +435x +435x +435x +435x +435x +435x +435x +435x +435x +435x +  +  +  +34x +34x +1x +  +33x +  +  +33x +33x +  +  +33x +16896x +  +  +33x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +33x +  +  +33x +8949x +  +  +33x +  +  +  +34x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +510x +204x +306x +  +306x +  +  +  +306x +  +  +  +306x +306x +30x +306x +306x +  +  +  +401x +  +11x +401x +  +11x +401x +  +  +  +  +11x +2259x +  +  +  +2259x +5x +  +2254x +2254x +2254x +2254x +1x +  +2253x +2253x +  +  +  +2253x +  +  +11x + 
'use strict'
+const Header = require('./header.js')
+const path = require('path')
+ 
+class Pax {
+  constructor (obj, global) {
+    this.atime = obj.atime || null
+    this.charset = obj.charset || null
+    this.comment = obj.comment || null
+    this.ctime = obj.ctime || null
+    this.gid = obj.gid || null
+    this.gname = obj.gname || null
+    this.linkpath = obj.linkpath || null
+    this.mtime = obj.mtime || null
+    this.path = obj.path || null
+    this.size = obj.size || null
+    this.uid = obj.uid || null
+    this.uname = obj.uname || null
+    this.dev = obj.dev || null
+    this.ino = obj.ino || null
+    this.nlink = obj.nlink || null
+    this.global = global || false
+  }
+ 
+  encode () {
+    const body = this.encodeBody()
+    if (body === '')
+      return null
+ 
+    const bodyLen = Buffer.byteLength(body)
+    // round up to 512 bytes
+    // add 512 for header
+    const bufLen = 512 * Math.ceil(1 + bodyLen / 512)
+    const buf = Buffer.allocUnsafe(bufLen)
+ 
+    // 0-fill the header section, it might not hit every field
+    for (let i = 0; i < 512; i++) {
+      buf[i] = 0
+    }
+ 
+    new Header({
+      // XXX split the path
+      // then the path should be PaxHeader + basename, but less than 99,
+      // prepend with the dirname
+      path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),
+      mode: this.mode || 0o644,
+      uid: this.uid || null,
+      gid: this.gid || null,
+      size: bodyLen,
+      mtime: this.mtime || null,
+      type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',
+      linkpath: '',
+      uname: this.uname || '',
+      gname: this.gname || '',
+      devmaj: 0,
+      devmin: 0,
+      atime: this.atime || null,
+      ctime: this.ctime || null
+    }).encode(buf)
+ 
+    buf.write(body, 512, bodyLen, 'utf8')
+ 
+    // null pad after the body
+    for (let i = bodyLen + 512; i < buf.length; i++) {
+      buf[i] = 0
+    }
+ 
+    return buf
+  }
+ 
+  encodeBody () {
+    return (
+      this.encodeField('path') +
+      this.encodeField('ctime') +
+      this.encodeField('atime') +
+      this.encodeField('dev') +
+      this.encodeField('ino') +
+      this.encodeField('nlink') +
+      this.encodeField('charset') +
+      this.encodeField('comment') +
+      this.encodeField('gid') +
+      this.encodeField('gname') +
+      this.encodeField('linkpath') +
+      this.encodeField('mtime') +
+      this.encodeField('size') +
+      this.encodeField('uid') +
+      this.encodeField('uname')
+    )
+  }
+ 
+  encodeField (field) {
+    if (this[field] === null || this[field] === undefined)
+      return ''
+    const v = this[field] instanceof Date ? this[field].getTime() / 1000
+      : this[field]
+    const s = ' ' +
+      (field === 'dev' || field === 'ino' || field === 'nlink'
+       ? 'SCHILY.' : '') +
+      field + '=' + v + '\n'
+    const byteLen = Buffer.byteLength(s)
+    // the digits includes the length of the digits in ascii base-10
+    // so if it's 9 characters, then adding 1 for the 9 makes it 10
+    // which makes it 11 chars.
+    let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1
+    if (byteLen + digits >= Math.pow(10, digits))
+      digits += 1
+    const len = digits + byteLen
+    return len + s
+  }
+}
+ 
+Pax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)
+ 
+const merge = (a, b) =>
+  b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a
+ 
+const parseKV = string =>
+  string
+    .replace(/\n$/, '')
+    .split('\n')
+    .reduce(parseKVLine, Object.create(null))
+ 
+const parseKVLine = (set, line) => {
+  const n = parseInt(line, 10)
+ 
+  // XXX Values with \n in them will fail this.
+  // Refactor to not be a naive line-by-line parse.
+  if (n !== Buffer.byteLength(line) + 1)
+    return set
+ 
+  line = line.substr((n + ' ').length)
+  const kv = line.split('=')
+  const k = kv.shift().replace(/^SCHILY\.(dev|ino|nlink)/, '$1')
+  if (!k)
+    return set
+ 
+  const v = kv.join('=')
+  set[k] = /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k)
+    ?  new Date(v * 1000)
+    : /^[0-9]+$/.test(v) ? +v
+    : v
+  return set
+}
+ 
+module.exports = Pax
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/read-entry.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/read-entry.js.html new file mode 100644 index 0000000000..9fca327a29 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/read-entry.js.html @@ -0,0 +1,347 @@ + + + + Code coverage report for tar/lib/read-entry.js + + + + + + + +
+
+

+ All files / tar/lib read-entry.js +

+
+
+ 100% + Statements + 53/53 +
+
+ 100% + Branches + 36/36 +
+
+ 100% + Functions + 3/3 +
+
+ 100% + Lines + 51/51 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95  +11x +11x +  +11x +11x +  +4004x +4004x +4004x +4004x +4004x +4004x +4004x +4004x +4004x +4004x +4004x +  +  +  +  +  +  +  +  +  +  +3241x +  +  +  +  +  +  +  +760x +760x +  +  +  +  +3x +  +  +4004x +4004x +4004x +3720x +4004x +4004x +4004x +4004x +4004x +4004x +4004x +4004x +4004x +4004x +4004x +  +4004x +4004x +  +  +  +2222x +2222x +2x +  +2220x +2220x +2220x +2220x +2220x +673x +  +1547x +132x +  +  +1415x +  +  +  +457x +  +  +6384x +  +2657x +  +  +  + 
'use strict'
+const types = require('./types.js')
+const MiniPass = require('minipass')
+ 
+const SLURP = Symbol('slurp')
+module.exports = class ReadEntry extends MiniPass {
+  constructor (header, ex, gex) {
+    super()
+    this.extended = ex
+    this.globalExtended = gex
+    this.header = header
+    this.startBlockSize = 512 * Math.ceil(header.size / 512)
+    this.blockRemain = this.startBlockSize
+    this.remain = header.size
+    this.type = header.type
+    this.meta = false
+    this.ignore = false
+    switch (this.type) {
+      case 'File':
+      case 'OldFile':
+      case 'Link':
+      case 'SymbolicLink':
+      case 'CharacterDevice':
+      case 'BlockDevice':
+      case 'Directory':
+      case 'FIFO':
+      case 'ContiguousFile':
+      case 'GNUDumpDir':
+        break
+ 
+      case 'NextFileHasLongLinkpath':
+      case 'NextFileHasLongPath':
+      case 'OldGnuLongPath':
+      case 'GlobalExtendedHeader':
+      case 'ExtendedHeader':
+      case 'OldExtendedHeader':
+        this.meta = true
+        break
+ 
+      // NOTE: gnutar and bsdtar treat unrecognized types as 'File'
+      // it may be worth doing the same, but with a warning.
+      default:
+        this.ignore = true
+    }
+ 
+    this.path = header.path
+    this.mode = header.mode
+    if (this.mode)
+      this.mode = this.mode & 0o7777
+    this.uid = header.uid
+    this.gid = header.gid
+    this.uname = header.uname
+    this.gname = header.gname
+    this.size = header.size
+    this.mtime = header.mtime
+    this.atime = header.atime
+    this.ctime = header.ctime
+    this.linkpath = header.linkpath
+    this.uname = header.uname
+    this.gname = header.gname
+ 
+    if (ex) this[SLURP](ex)
+    if (gex) this[SLURP](gex, true)
+  }
+ 
+  write (data) {
+    const writeLen = data.length
+    if (writeLen > this.blockRemain)
+      throw new Error('writing more to entry than is appropriate')
+ 
+    const r = this.remain
+    const br = this.blockRemain
+    this.remain = Math.max(0, r - writeLen)
+    this.blockRemain = Math.max(0, br - writeLen)
+    if (this.ignore)
+      return true
+ 
+    if (r >= writeLen)
+      return super.write(data)
+ 
+    // r < writeLen
+    return super.write(data.slice(0, r))
+  }
+ 
+  [SLURP] (ex, global) {
+    for (let k in ex) {
+      // we slurp in everything except for the path attribute in
+      // a global extended header, because that's weird.
+      if (ex[k] !== null && ex[k] !== undefined &&
+          !(global && k === 'path'))
+        this[k] = ex[k]
+    }
+  }
+}
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/replace.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/replace.js.html new file mode 100644 index 0000000000..e764c04fbf --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/replace.js.html @@ -0,0 +1,722 @@ + + + + Code coverage report for tar/lib/replace.js + + + + + + + +
+
+

+ All files / tar/lib replace.js +

+
+
+ 100% + Statements + 131/131 +
+
+ 100% + Branches + 70/70 +
+
+ 100% + Functions + 18/18 +
+
+ 100% + Lines + 128/128 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220  +  +  +3x +3x +3x +3x +3x +3x +3x +  +  +  +  +  +  +  +3x +  +3x +70x +  +70x +1x +  +69x +1x +  +68x +1x +  +67x +  +67x +  +  +  +3x +26x +  +26x +  +  +  +26x +26x +26x +  +4x +2x +  +2x +  +  +24x +22x +  +22x +61x +63x +  +  +  +61x +2x +  +59x +2x +  +  +55x +55x +8x +47x +47x +2x +  +  +45x +45x +28x +  +18x +  +18x +  +26x +8x +  +  +  +3x +18x +  +  +  +18x +18x +  +  +3x +41x +41x +  +41x +37x +37x +4x +  +33x +  +  +37x +37x +8x +  +29x +29x +29x +112x +2x +110x +110x +6x +  +  +  +  +104x +2x +  +  +102x +4x +  +98x +98x +13x +  +85x +85x +4x +  +81x +81x +4x +  +77x +46x +77x +77x +  +29x +  +  +41x +41x +41x +41x +45x +4x +4x +  +  +41x +2x +  +39x +39x +2x +37x +37x +4x +33x +  +  +  +33x +33x +33x +33x +  +  +  +41x +  +  +41x +  +  +3x +18x +19x +1x +  +  +  +3x +  +  +18x +  +18x +  +  +3x +34x +33x +33x +1x +  +  +3x +1x +  +32x +  +33x +  + 
'use strict'
+ 
+// tar -r
+const hlo = require('./high-level-opt.js')
+const Pack = require('./pack.js')
+const Parse = require('./parse.js')
+const fs = require('fs')
+const fsm = require('fs-minipass')
+const t = require('./list.js')
+const path = require('path')
+ 
+// starting at the head of the file, read a Header
+// If the checksum is invalid, that's our position to start writing
+// If it is, jump forward by the specified size (round up to 512)
+// and try again.
+// Write the new Pack stream starting there.
+ 
+const Header = require('./header.js')
+ 
+const r = module.exports = (opt_, files, cb) => {
+  const opt = hlo(opt_)
+ 
+  if (!opt.file)
+    throw new TypeError('file is required')
+ 
+  if (opt.gzip)
+    throw new TypeError('cannot append to compressed archives')
+ 
+  if (!files || !Array.isArray(files) || !files.length)
+    throw new TypeError('no files or directories specified')
+ 
+  files = Array.from(files)
+ 
+  return opt.sync ? replaceSync(opt, files)
+    : replace(opt, files, cb)
+}
+ 
+const replaceSync = (opt, files) => {
+  const p = new Pack.Sync(opt)
+ 
+  let threw = true
+  let fd
+  let position
+ 
+  try {
+    try {
+      fd = fs.openSync(opt.file, 'r+')
+    } catch (er) {
+      if (er.code === 'ENOENT')
+        fd = fs.openSync(opt.file, 'w+')
+      else
+        throw er
+    }
+ 
+    const st = fs.fstatSync(fd)
+    const headBuf = Buffer.alloc(512)
+ 
+    POSITION: for (position = 0; position < st.size; position += 512) {
+      for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {
+        bytes = fs.readSync(
+          fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos
+        )
+ 
+        if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)
+          throw new Error('cannot append to compressed archives')
+ 
+        if (!bytes)
+          break POSITION
+      }
+ 
+      let h = new Header(headBuf)
+      if (!h.cksumValid)
+        break
+      let entryBlockSize = 512 * Math.ceil(h.size / 512)
+      if (position + entryBlockSize + 512 > st.size)
+        break
+      // the 512 for the header we just parsed will be added as well
+      // also jump ahead all the blocks for the body
+      position += entryBlockSize
+      if (opt.mtimeCache)
+        opt.mtimeCache.set(h.path, h.mtime)
+    }
+    threw = false
+ 
+    streamSync(opt, p, position, fd, files)
+  } finally {
+    if (threw)
+      try { fs.closeSync(fd) } catch (er) {}
+  }
+}
+ 
+const streamSync = (opt, p, position, fd, files) => {
+  const stream = new fsm.WriteStreamSync(opt.file, {
+    fd: fd,
+    start: position
+  })
+  p.pipe(stream)
+  addFilesSync(p, files)
+}
+ 
+const replace = (opt, files, cb) => {
+  files = Array.from(files)
+  const p = new Pack(opt)
+ 
+  const getPos = (fd, size, cb_) => {
+    const cb = (er, pos) => {
+      if (er)
+        fs.close(fd, _ => cb_(er))
+      else
+        cb_(null, pos)
+    }
+ 
+    let position = 0
+    if (size === 0)
+      return cb(null, 0)
+ 
+    let bufPos = 0
+    const headBuf = Buffer.alloc(512)
+    const onread = (er, bytes) => {
+      if (er)
+        return cb(er)
+      bufPos += bytes
+      if (bufPos < 512 && bytes)
+        return fs.read(
+          fd, headBuf, bufPos, headBuf.length - bufPos,
+          position + bufPos, onread
+        )
+ 
+      if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)
+        return cb(new Error('cannot append to compressed archives'))
+ 
+      // truncated header
+      if (bufPos < 512)
+        return cb(null, position)
+ 
+      const h = new Header(headBuf)
+      if (!h.cksumValid)
+        return cb(null, position)
+ 
+      const entryBlockSize = 512 * Math.ceil(h.size / 512)
+      if (position + entryBlockSize + 512 > size)
+        return cb(null, position)
+ 
+      position += entryBlockSize + 512
+      if (position >= size)
+        return cb(null, position)
+ 
+      if (opt.mtimeCache)
+        opt.mtimeCache.set(h.path, h.mtime)
+      bufPos = 0
+      fs.read(fd, headBuf, 0, 512, position, onread)
+    }
+    fs.read(fd, headBuf, 0, 512, position, onread)
+  }
+ 
+  const promise = new Promise((resolve, reject) => {
+    p.on('error', reject)
+    let flag = 'r+'
+    const onopen = (er, fd) => {
+      if (er && er.code === 'ENOENT' && flag === 'r+') {
+        flag = 'w+'
+        return fs.open(opt.file, flag, onopen)
+      }
+ 
+      if (er)
+        return reject(er)
+ 
+      fs.fstat(fd, (er, st) => {
+        if (er)
+          return reject(er)
+        getPos(fd, st.size, (er, position) => {
+          if (er)
+            return reject(er)
+          const stream = new fsm.WriteStream(opt.file, {
+            fd: fd,
+            start: position
+          })
+          p.pipe(stream)
+          stream.on('error', reject)
+          stream.on('close', resolve)
+          addFilesAsync(p, files)
+        })
+      })
+    }
+    fs.open(opt.file, flag, onopen)
+  })
+ 
+  return cb ? promise.then(cb, cb) : promise
+}
+ 
+const addFilesSync = (p, files) => {
+  files.forEach(file => {
+    if (file.charAt(0) === '@')
+      t({
+        file: path.resolve(p.cwd, file.substr(1)),
+        sync: true,
+        noResume: true,
+        onentry: entry => p.add(entry)
+      })
+    else
+      p.add(file)
+  })
+  p.end()
+}
+ 
+const addFilesAsync = (p, files) => {
+  while (files.length) {
+    const file = files.shift()
+    if (file.charAt(0) === '@')
+      return t({
+        file: path.resolve(p.cwd, file.substr(1)),
+        noResume: true,
+        onentry: entry => p.add(entry)
+      }).then(_ => addFilesAsync(p, files))
+    else
+      p.add(file)
+  }
+  p.end()
+}
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/types.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/types.js.html new file mode 100644 index 0000000000..ad8de07618 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/types.js.html @@ -0,0 +1,197 @@ + + + + Code coverage report for tar/lib/types.js + + + + + + + +
+
+

+ All files / tar/lib types.js +

+
+
+ 100% + Statements + 3/3 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 1/1 +
+
+ 100% + Lines + 2/2 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45  +  +14x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +294x + 
'use strict'
+// map types from key to human-friendly name
+exports.name = new Map([
+  ['0', 'File'],
+  // same as File
+  ['', 'OldFile'],
+  ['1', 'Link'],
+  ['2', 'SymbolicLink'],
+  // Devices and FIFOs aren't fully supported
+  // they are parsed, but skipped when unpacking
+  ['3', 'CharacterDevice'],
+  ['4', 'BlockDevice'],
+  ['5', 'Directory'],
+  ['6', 'FIFO'],
+  // same as File
+  ['7', 'ContiguousFile'],
+  // pax headers
+  ['g', 'GlobalExtendedHeader'],
+  ['x', 'ExtendedHeader'],
+  // vendor-specific stuff
+  // skip
+  ['A', 'SolarisACL'],
+  // like 5, but with data, which should be skipped
+  ['D', 'GNUDumpDir'],
+  // metadata only, skip
+  ['I', 'Inode'],
+  // data = link path of next file
+  ['K', 'NextFileHasLongLinkpath'],
+  // data = path of next file
+  ['L', 'NextFileHasLongPath'],
+  // skip
+  ['M', 'ContinuationFile'],
+  // like L
+  ['N', 'OldGnuLongPath'],
+  // skip
+  ['S', 'SparseFile'],
+  // skip
+  ['V', 'TapeVolumeHeader'],
+  // like x
+  ['X', 'OldExtendedHeader']
+])
+ 
+// map the other direction
+exports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/unpack.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/unpack.js.html new file mode 100644 index 0000000000..240a6fa310 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/unpack.js.html @@ -0,0 +1,1604 @@ + + + + Code coverage report for tar/lib/unpack.js + + + + + + + +
+
+

+ All files / tar/lib unpack.js +

+
+
+ 100% + Statements + 254/254 +
+
+ 100% + Branches + 194/194 +
+
+ 100% + Functions + 44/44 +
+
+ 100% + Lines + 247/247 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514  +  +3x +3x +3x +3x +3x +3x +3x +3x +3x +  +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +  +  +3x +60x +  +  +  +  +  +134x +4x +  +134x +109x +109x +  +  +134x +  +134x +134x +  +134x +134x +  +134x +  +134x +  +9x +2x +7x +1x +  +6x +6x +6x +  +125x +125x +125x +  +  +  +131x +119x +  +12x +  +131x +  +131x +  +  +  +131x +  +  +131x +  +  +131x +  +  +131x +  +  +  +  +131x +  +  +  +131x +  +131x +131x +131x +131x +  +131x +131x +571x +  +  +  +473x +98x +98x +98x +98x +  +  +  +  +571x +144x +144x +9x +135x +  +  +562x +545x +545x +2x +2x +  +  +  +  +543x +2x +2x +2x +  +  +  +  +560x +3x +3x +  +  +  +560x +2x +  +558x +  +560x +  +  +  +571x +11x +  +560x +  +560x +  +  +179x +140x +  +  +  +  +  +  +554x +  +  +  +  +6x +  +  +  +  +  +  +  +39x +12x +  +27x +27x +27x +  +  +  +  +451x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +473x +  +  +  +  +  +  +  +  +30x +  +  +  +30x +  +  +  +221x +221x +  +  +  +221x +  +221x +221x +421x +1x +1x +  +  +421x +219x +  +  +221x +219x +192x +192x +  +  +219x +10x +10x +  +  +219x +  +  +221x +  +  +  +97x +97x +97x +3x +  +94x +94x +171x +94x +94x +  +  +  +94x +73x +73x +  +  +94x +4x +4x +  +  +94x +  +  +  +  +6x +6x +  +  +  +21x +  +  +  +19x +  +  +  +354x +  +  +  +364x +364x +  +  +  +4x +4x +  +  +  +  +354x +354x +354x +12x +342x +342x +2x +340x +318x +22x +16x +11x +9x +  +2x +  +5x +  +6x +  +  +  +  +  +528x +1x +  +527x +  +  +  +314x +  +  +19x +  +  +21x +  +  +  +173x +  +  +  +  +  +21x +21x +1x +20x +20x +  +  +  +  +  +  +59x +  +  +  +200x +200x +9x +191x +191x +17x +2x +15x +2x +  +13x +13x +6x +3x +2x +  +3x +  +7x +12x +  +1x +  +  +  +174x +  +  +  +  +93x +  +93x +6x +6x +  +  +  +  +93x +93x +  +1x +  +  +92x +86x +86x +  +1x +  +  +  +92x +86x +86x +58x +  +85x +12x +  +82x +  +4x +  +  +  +  +  +  +76x +76x +76x +1x +75x +56x +56x +  +  +75x +4x +4x +  +  +75x +  +  +  +276x +276x +  +  +  +  +  +  +  +  +  +  +  +  +4x +  +  +  +  +19x +19x +17x +  +2x +  +  +  +  +3x +3x + 
'use strict'
+ 
+const assert = require('assert')
+const EE = require('events').EventEmitter
+const Parser = require('./parse.js')
+const fs = require('fs')
+const fsm = require('fs-minipass')
+const path = require('path')
+const mkdir = require('./mkdir.js')
+const mkdirSync = mkdir.sync
+const wc = require('./winchars.js')
+ 
+const ONENTRY = Symbol('onEntry')
+const CHECKFS = Symbol('checkFs')
+const MAKEFS = Symbol('makeFs')
+const FILE = Symbol('file')
+const DIRECTORY = Symbol('directory')
+const LINK = Symbol('link')
+const SYMLINK = Symbol('symlink')
+const HARDLINK = Symbol('hardlink')
+const UNSUPPORTED = Symbol('unsupported')
+const UNKNOWN = Symbol('unknown')
+const CHECKPATH = Symbol('checkPath')
+const MKDIR = Symbol('mkdir')
+const ONERROR = Symbol('onError')
+const PENDING = Symbol('pending')
+const PEND = Symbol('pend')
+const UNPEND = Symbol('unpend')
+const ENDED = Symbol('ended')
+const MAYBECLOSE = Symbol('maybeClose')
+const SKIP = Symbol('skip')
+const DOCHOWN = Symbol('doChown')
+const UID = Symbol('uid')
+const GID = Symbol('gid')
+ 
+// this.gid, entry.gid, this.processUid
+const uint32 = (a, b, c) =>
+  a === a >>> 0 ? a
+  : b === b >>> 0 ? b
+  : c
+ 
+class Unpack extends Parser {
+  constructor (opt) {
+    if (!opt)
+      opt = {}
+ 
+    opt.ondone = _ => {
+      this[ENDED] = true
+      this[MAYBECLOSE]()
+    }
+ 
+    super(opt)
+ 
+    this.writable = true
+    this.readable = false
+ 
+    this[PENDING] = 0
+    this[ENDED] = false
+ 
+    this.dirCache = opt.dirCache || new Map()
+ 
+    if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {
+      // need both or neither
+      if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number')
+        throw new TypeError('cannot set owner without number uid and gid')
+      if (opt.preserveOwner)
+        throw new TypeError(
+          'cannot preserve owner in archive and also set owner explicitly')
+      this.uid = opt.uid
+      this.gid = opt.gid
+      this.setOwner = true
+    } else {
+      this.uid = null
+      this.gid = null
+      this.setOwner = false
+    }
+ 
+    // default true for root
+    if (opt.preserveOwner === undefined && typeof opt.uid !== 'number')
+      this.preserveOwner = process.getuid && process.getuid() === 0
+    else
+      this.preserveOwner = !!opt.preserveOwner
+ 
+    this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?
+      process.getuid() : null
+    this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?
+      process.getgid() : null
+ 
+    // turn ><?| in filenames into 0xf000-higher encoded forms
+    this.win32 = !!opt.win32 || process.platform === 'win32'
+ 
+    // do not unpack over files that are newer than what's in the archive
+    this.newer = !!opt.newer
+ 
+    // do not unpack over ANY files
+    this.keep = !!opt.keep
+ 
+    // do not set mtime/atime of extracted entries
+    this.noMtime = !!opt.noMtime
+ 
+    // allow .., absolute path entries, and unpacking through symlinks
+    // without this, warn and skip .., relativize absolutes, and error
+    // on symlinks in extraction path
+    this.preservePaths = !!opt.preservePaths
+ 
+    // unlink files and links before writing. This breaks existing hard
+    // links, and removes symlink directories rather than erroring
+    this.unlink = !!opt.unlink
+ 
+    this.cwd = path.resolve(opt.cwd || process.cwd())
+    this.strip = +opt.strip || 0
+    this.processUmask = process.umask()
+    this.umask = typeof opt.umask === 'number' ? opt.umask : this.processUmask
+    // default mode for dirs created as parents
+    this.dmode = opt.dmode || (0o0777 & (~this.umask))
+    this.fmode = opt.fmode || (0o0666 & (~this.umask))
+    this.on('entry', entry => this[ONENTRY](entry))
+  }
+ 
+  [MAYBECLOSE] () {
+    if (this[ENDED] && this[PENDING] === 0) {
+      this.emit('prefinish')
+      this.emit('finish')
+      this.emit('end')
+      this.emit('close')
+    }
+  }
+ 
+  [CHECKPATH] (entry) {
+    if (this.strip) {
+      const parts = entry.path.split(/\/|\\/)
+      if (parts.length < this.strip)
+        return false
+      entry.path = parts.slice(this.strip).join('/')
+    }
+ 
+    if (!this.preservePaths) {
+      const p = entry.path
+      if (p.match(/(^|\/|\\)\.\.(\\|\/|$)/)) {
+        this.warn('path contains \'..\'', p)
+        return false
+      }
+ 
+      // absolutes on posix are also absolutes on win32
+      // so we only need to test this one to get both
+      if (path.win32.isAbsolute(p)) {
+        const parsed = path.win32.parse(p)
+        this.warn('stripping ' + parsed.root + ' from absolute path', p)
+        entry.path = p.substr(parsed.root.length)
+      }
+    }
+ 
+    // only encode : chars that aren't drive letter indicators
+    if (this.win32) {
+      const parsed = path.win32.parse(entry.path)
+      entry.path = parsed.root === '' ? wc.encode(entry.path)
+        : parsed.root + wc.encode(entry.path.substr(parsed.root.length))
+    }
+ 
+    if (path.isAbsolute(entry.path))
+      entry.absolute = entry.path
+    else
+      entry.absolute = path.resolve(this.cwd, entry.path)
+ 
+    return true
+  }
+ 
+  [ONENTRY] (entry) {
+    if (!this[CHECKPATH](entry))
+      return entry.resume()
+ 
+    assert.equal(typeof entry.absolute, 'string')
+ 
+    switch (entry.type) {
+      case 'Directory':
+      case 'GNUDumpDir':
+        if (entry.mode)
+          entry.mode = entry.mode | 0o700
+ 
+      case 'File':
+      case 'OldFile':
+      case 'ContiguousFile':
+      case 'Link':
+      case 'SymbolicLink':
+        return this[CHECKFS](entry)
+ 
+      case 'CharacterDevice':
+      case 'BlockDevice':
+      case 'FIFO':
+        return this[UNSUPPORTED](entry)
+    }
+  }
+ 
+  [ONERROR] (er, entry) {
+    // Cwd has to exist, or else nothing works. That's serious.
+    // Other errors are warnings, which raise the error in strict
+    // mode, but otherwise continue on.
+    if (er.name === 'CwdError')
+      this.emit('error', er)
+    else {
+      this.warn(er.message, er)
+      this[UNPEND]()
+      entry.resume()
+    }
+  }
+ 
+  [MKDIR] (dir, mode, cb) {
+    mkdir(dir, {
+      uid: this.uid,
+      gid: this.gid,
+      processUid: this.processUid,
+      processGid: this.processGid,
+      umask: this.processUmask,
+      preserve: this.preservePaths,
+      unlink: this.unlink,
+      cache: this.dirCache,
+      cwd: this.cwd,
+      mode: mode
+    }, cb)
+  }
+ 
+  [DOCHOWN] (entry) {
+    // in preserve owner mode, chown if the entry doesn't match process
+    // in set owner mode, chown if setting doesn't match process
+    return this.preserveOwner &&
+      ( typeof entry.uid === 'number' && entry.uid !== this.processUid ||
+        typeof entry.gid === 'number' && entry.gid !== this.processGid )
+      ||
+      ( typeof this.uid === 'number' && this.uid !== this.processUid ||
+        typeof this.gid === 'number' && this.gid !== this.processGid )
+  }
+ 
+  [UID] (entry) {
+    return uint32(this.uid, entry.uid, this.processUid)
+  }
+ 
+  [GID] (entry) {
+    return uint32(this.gid, entry.gid, this.processGid)
+  }
+ 
+  [FILE] (entry) {
+    const mode = entry.mode & 0o7777 || this.fmode
+    const stream = new fsm.WriteStream(entry.absolute, {
+      mode: mode,
+      autoClose: false
+    })
+    stream.on('error', er => this[ONERROR](er, entry))
+ 
+    let actions = 1
+    const done = er => {
+      if (er) {
+        this[ONERROR](er, entry)
+        actions = 1
+      }
+ 
+      if (--actions === 0)
+        fs.close(stream.fd, _ => this[UNPEND]())
+    }
+ 
+    stream.on('finish', _ => {
+      if (entry.mtime && !this.noMtime) {
+        actions++
+        fs.futimes(stream.fd, entry.atime || new Date(), entry.mtime, done)
+      }
+ 
+      if (this[DOCHOWN](entry)) {
+        actions++
+        fs.fchown(stream.fd, this[UID](entry), this[GID](entry), done)
+      }
+ 
+      done()
+    })
+ 
+    entry.pipe(stream)
+  }
+ 
+  [DIRECTORY] (entry) {
+    const mode = entry.mode & 0o7777 || this.dmode
+    this[MKDIR](entry.absolute, mode, er => {
+      if (er)
+        return this[ONERROR](er, entry)
+ 
+      let actions = 1
+      const done = _ => {
+        if (--actions === 0) {
+          this[UNPEND]()
+          entry.resume()
+        }
+      }
+ 
+      if (entry.mtime && !this.noMtime) {
+        actions++
+        fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)
+      }
+ 
+      if (this[DOCHOWN](entry)) {
+        actions++
+        fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)
+      }
+ 
+      done()
+    })
+  }
+ 
+  [UNSUPPORTED] (entry) {
+    this.warn('unsupported entry type: ' + entry.type, entry)
+    entry.resume()
+  }
+ 
+  [SYMLINK] (entry) {
+    this[LINK](entry, entry.linkpath, 'symlink')
+  }
+ 
+  [HARDLINK] (entry) {
+    this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link')
+  }
+ 
+  [PEND] () {
+    this[PENDING]++
+  }
+ 
+  [UNPEND] () {
+    this[PENDING]--
+    this[MAYBECLOSE]()
+  }
+ 
+  [SKIP] (entry) {
+    this[UNPEND]()
+    entry.resume()
+  }
+ 
+  // check if a thing is there, and if so, try to clobber it
+  [CHECKFS] (entry) {
+    this[PEND]()
+    this[MKDIR](path.dirname(entry.absolute), this.dmode, er => {
+      if (er)
+        return this[ONERROR](er, entry)
+      fs.lstat(entry.absolute, (er, st) => {
+        if (st && (this.keep || this.newer && st.mtime > entry.mtime))
+          this[SKIP](entry)
+        else if (er || (entry.type === 'File' && !this.unlink && st.isFile()))
+          this[MAKEFS](null, entry)
+        else if (st.isDirectory()) {
+          if (entry.type === 'Directory') {
+            if (!entry.mode || (st.mode & 0o7777) === entry.mode)
+              this[MAKEFS](null, entry)
+            else
+              fs.chmod(entry.absolute, entry.mode, er => this[MAKEFS](er, entry))
+          } else
+            fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry))
+        } else
+          fs.unlink(entry.absolute, er => this[MAKEFS](er, entry))
+      })
+    })
+  }
+ 
+  [MAKEFS] (er, entry) {
+    if (er)
+      return this[ONERROR](er, entry)
+ 
+    switch (entry.type) {
+      case 'File':
+      case 'OldFile':
+      case 'ContiguousFile':
+        return this[FILE](entry)
+ 
+      case 'Link':
+        return this[HARDLINK](entry)
+ 
+      case 'SymbolicLink':
+        return this[SYMLINK](entry)
+ 
+      case 'Directory':
+      case 'GNUDumpDir':
+        return this[DIRECTORY](entry)
+    }
+  }
+ 
+  [LINK] (entry, linkpath, link) {
+    // XXX: get the type ('file' or 'dir') for windows
+    fs[link](linkpath, entry.absolute, er => {
+      if (er)
+        return this[ONERROR](er, entry)
+      this[UNPEND]()
+      entry.resume()
+    })
+  }
+}
+ 
+class UnpackSync extends Unpack {
+  constructor (opt) {
+    super(opt)
+  }
+ 
+  [CHECKFS] (entry) {
+    const er = this[MKDIR](path.dirname(entry.absolute), this.dmode)
+    if (er)
+      return this[ONERROR](er, entry)
+    try {
+      const st = fs.lstatSync(entry.absolute)
+      if (this.keep || this.newer && st.mtime > entry.mtime)
+        return this[SKIP](entry)
+      else if (entry.type === 'File' && !this.unlink && st.isFile())
+        return this[MAKEFS](null, entry)
+      else {
+        try {
+          if (st.isDirectory()) {
+            if (entry.type === 'Directory') {
+              if (entry.mode && (st.mode & 0o7777) !== entry.mode)
+                fs.chmodSync(entry.absolute, entry.mode)
+            } else
+              fs.rmdirSync(entry.absolute)
+          } else
+            fs.unlinkSync(entry.absolute)
+          return this[MAKEFS](null, entry)
+        } catch (er) {
+          return this[ONERROR](er, entry)
+        }
+      }
+    } catch (er) {
+      return this[MAKEFS](null, entry)
+    }
+  }
+ 
+  [FILE] (entry) {
+    const mode = entry.mode & 0o7777 || this.fmode
+ 
+    const oner = er => {
+      try { fs.closeSync(fd) } catch (_) {}
+      this[ONERROR](er, entry)
+    }
+ 
+    let stream
+    let fd
+    try {
+      fd = fs.openSync(entry.absolute, 'w', mode)
+    } catch (er) {
+      return oner(er)
+    }
+ 
+    entry.on('data', chunk => {
+      try {
+        fs.writeSync(fd, chunk, 0, chunk.length)
+      } catch (er) {
+        oner(er)
+      }
+    })
+ 
+    entry.on('end', _ => {
+      try {
+        if (entry.mtime && !this.noMtime)
+          fs.futimesSync(fd, entry.atime || new Date(), entry.mtime)
+ 
+        if (this[DOCHOWN](entry))
+          fs.fchownSync(fd, this[UID](entry), this[GID](entry))
+ 
+        fs.closeSync(fd)
+      } catch (er) {
+        return oner(er)
+      }
+    })
+ 
+  }
+ 
+  [DIRECTORY] (entry) {
+    const mode = entry.mode & 0o7777 || this.dmode
+    const er = this[MKDIR](entry.absolute, mode)
+    if (er)
+      return this[ONERROR](er, entry)
+    if (entry.mtime && !this.noMtime) {
+      try {
+        fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)
+      } catch (er) {}
+    }
+    if (this[DOCHOWN](entry)) {
+      try {
+        fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))
+      } catch (er) {}
+    }
+    entry.resume()
+  }
+ 
+  [MKDIR] (dir, mode) {
+    try {
+      return mkdir.sync(dir, {
+        uid: this.uid,
+        gid: this.gid,
+        processUid: this.processUid,
+        processGid: this.processGid,
+        umask: this.processUmask,
+        preserve: this.preservePaths,
+        unlink: this.unlink,
+        cache: this.dirCache,
+        cwd: this.cwd,
+        mode: mode
+      })
+    } catch (er) {
+      return er
+    }
+  }
+ 
+  [LINK] (entry, linkpath, link) {
+    try {
+      fs[link + 'Sync'](linkpath, entry.absolute)
+      entry.resume()
+    } catch (er) {
+      return this[ONERROR](er, entry)
+    }
+  }
+}
+ 
+Unpack.Sync = UnpackSync
+module.exports = Unpack
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/update.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/update.js.html new file mode 100644 index 0000000000..531cddef48 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/update.js.html @@ -0,0 +1,173 @@ + + + + Code coverage report for tar/lib/update.js + + + + + + + +
+
+

+ All files / tar/lib update.js +

+
+
+ 100% + Statements + 20/20 +
+
+ 100% + Branches + 15/15 +
+
+ 100% + Functions + 4/4 +
+
+ 100% + Lines + 20/20 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37  +  +  +  +2x +2x +  +  +2x +36x +  +36x +1x +  +35x +1x +  +34x +1x +  +33x +  +33x +33x +  +  +2x +33x +  +33x +32x +  +33x +2x +24x +  + 
'use strict'
+ 
+// tar -u
+ 
+const hlo = require('./high-level-opt.js')
+const r = require('./replace.js')
+// just call tar.r with the filter and mtimeCache
+ 
+const u = module.exports = (opt_, files, cb) => {
+  const opt = hlo(opt_)
+ 
+  if (!opt.file)
+    throw new TypeError('file is required')
+ 
+  if (opt.gzip)
+    throw new TypeError('cannot append to compressed archives')
+ 
+  if (!files || !Array.isArray(files) || !files.length)
+    throw new TypeError('no files or directories specified')
+ 
+  files = Array.from(files)
+ 
+  mtimeFilter(opt)
+  return r(opt, files, cb)
+}
+ 
+const mtimeFilter = opt => {
+  const filter = opt.filter
+ 
+  if (!opt.mtimeCache)
+    opt.mtimeCache = new Map()
+ 
+  opt.filter = filter ? (path, stat) =>
+    filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)
+    : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)
+}
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/warn-mixin.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/warn-mixin.js.html new file mode 100644 index 0000000000..99aa9f3498 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/warn-mixin.js.html @@ -0,0 +1,107 @@ + + + + Code coverage report for tar/lib/warn-mixin.js + + + + + + + +
+
+

+ All files / tar/lib warn-mixin.js +

+
+
+ 100% + Statements + 9/9 +
+
+ 100% + Branches + 4/4 +
+
+ 100% + Functions + 2/2 +
+
+ 100% + Lines + 8/8 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15  +27x +  +333x +184x +149x +2x +  +147x +147x +147x +  +  +  + 
'use strict'
+module.exports = Base => class extends Base {
+  warn (msg, data) {
+    if (!this.strict)
+      this.emit('warn', msg, data)
+    else if (data instanceof Error)
+      this.emit('error', data)
+    else {
+      const er = new Error(msg)
+      er.data = data
+      this.emit('error', er)
+    }
+  }
+}
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/winchars.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/winchars.js.html new file mode 100644 index 0000000000..8e9fb65904 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/winchars.js.html @@ -0,0 +1,134 @@ + + + + Code coverage report for tar/lib/winchars.js + + + + + + + +
+
+

+ All files / tar/lib winchars.js +

+
+
+ 100% + Statements + 12/12 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 7/7 +
+
+ 100% + Lines + 8/8 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24  +  +  +  +  +9x +  +  +  +  +  +  +  +9x +45x +  +45x +45x +  +9x +30x +20x +  + 
'use strict'
+ 
+// When writing files on Windows, translate the characters to their
+// 0xf000 higher-encoded versions.
+ 
+const raw = [
+  '|',
+  '<',
+  '>',
+  '?',
+  ':'
+]
+ 
+const win = raw.map(char =>
+  String.fromCharCode(0xf000 + char.charCodeAt(0)))
+ 
+const toWin = new Map(raw.map((char, i) => [char, win[i]]))
+const toRaw = new Map(win.map((char, i) => [char, raw[i]]))
+ 
+module.exports = {
+  encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),
+  decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s)
+}
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov-report/tar/lib/write-entry.js.html b/node_modules/tar/coverage/lcov-report/tar/lib/write-entry.js.html new file mode 100644 index 0000000000..ba22b99475 --- /dev/null +++ b/node_modules/tar/coverage/lcov-report/tar/lib/write-entry.js.html @@ -0,0 +1,1268 @@ + + + + Code coverage report for tar/lib/write-entry.js + + + + + + + +
+
+

+ All files / tar/lib write-entry.js +

+
+
+ 99.53% + Statements + 213/214 +
+
+ 97.87% + Branches + 184/188 +
+
+ 100% + Functions + 31/31 +
+
+ 99.53% + Lines + 210/211 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402  +6x +6x +6x +6x +6x +6x +  +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +  +6x +  +6570x +6570x +6570x +1x +6569x +  +6569x +  +6569x +6569x +6569x +6569x +6569x +6569x +6569x +6569x +6569x +6569x +  +6569x +6515x +  +6569x +  +  +4x +4x +2x +  +  +6567x +6567x +2x +2x +  +  +6567x +  +6567x +1x +  +6567x +6513x +  +54x +  +  +  +34x +34x +1x +33x +  +  +  +  +6566x +6566x +6566x +902x +6566x +6566x +6566x +  +  +  +6566x +5664x +867x +34x +  +1x +  +  +  +  +6563x +4x +  +6563x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6563x +17x +  +  +  +  +  +  +  +  +  +  +  +  +  +6563x +  +  +  +867x +859x +867x +867x +867x +  +  +  +32x +32x +1x +31x +  +  +  +  +32x +32x +32x +  +  +  +1x +1x +1x +1x +1x +  +  +  +5664x +7x +7x +2x +2x +1x +  +6x +  +  +5663x +5663x +42x +  +5621x +  +  +  +5568x +5568x +2x +5566x +  +  +  +  +5617x +5617x +5617x +5617x +  +  +  +7336x +7336x +1x +7335x +  +  +  +  +5566x +  +  +  +7393x +2x +2x +2x +2x +2x +  +  +  +7392x +5614x +1700449x +1700449x +1700449x +  +  +  +7392x +  +7392x +7392x +7392x +7392x +  +7392x +  +7392x +5614x +2x +5614x +5614x +5614x +  +  +1778x +1754x +1754x +  +1778x +1778x +  +  +  +  +  +99x +  +  +  +20x +  +  +  +2x +  +  +  +53x +  +  +  +59x +59x +59x +58x +57x +  +59x +2x +  +  +  +  +51x +  +  +  +6x +  +33x +33x +33x +33x +33x +33x +33x +  +33x +33x +33x +  +  +33x +33x +33x +26x +33x +33x +33x +33x +33x +33x +33x +33x +33x +  +33x +27x +  +33x +2x +2x +  +  +  +1x +  +  +32x +32x +  +32x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +32x +14x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +32x +32x +  +  +  +52x +52x +1x +51x +51x +  +  +  +29x +22x +29x +  +  +  +6x +6x +  +6x +6566x +  +  +  +  +6x + 
'use strict'
+const MiniPass = require('minipass')
+const Pax = require('./pax.js')
+const Header = require('./header.js')
+const ReadEntry = require('./read-entry.js')
+const fs = require('fs')
+const path = require('path')
+ 
+const types = require('./types.js')
+const maxReadSize = 16 * 1024 * 1024
+const PROCESS = Symbol('process')
+const FILE = Symbol('file')
+const DIRECTORY = Symbol('directory')
+const SYMLINK = Symbol('symlink')
+const HARDLINK = Symbol('hardlink')
+const HEADER = Symbol('header')
+const READ = Symbol('read')
+const LSTAT = Symbol('lstat')
+const ONLSTAT = Symbol('onlstat')
+const ONREAD = Symbol('onread')
+const ONREADLINK = Symbol('onreadlink')
+const OPENFILE = Symbol('openfile')
+const ONOPENFILE = Symbol('onopenfile')
+const CLOSE = Symbol('close')
+const warner = require('./warn-mixin.js')
+const winchars = require('./winchars.js')
+ 
+const WriteEntry = warner(class WriteEntry extends MiniPass {
+  constructor (p, opt) {
+    opt = opt || {}
+    super(opt)
+    if (typeof p !== 'string')
+      throw new TypeError('path is required')
+    this.path = p
+    // suppress atime, ctime, uid, gid, uname, gname
+    this.portable = !!opt.portable
+    // until node has builtin pwnam functions, this'll have to do
+    this.myuid = process.getuid && process.getuid()
+    this.myuser = process.env.USER || ''
+    this.maxReadSize = opt.maxReadSize || maxReadSize
+    this.linkCache = opt.linkCache || new Map()
+    this.statCache = opt.statCache || new Map()
+    this.preservePaths = !!opt.preservePaths
+    this.cwd = opt.cwd || process.cwd()
+    this.strict = !!opt.strict
+    this.noPax = !!opt.noPax
+    this.noMtime = !!opt.noMtime
+ 
+    if (typeof opt.onwarn === 'function')
+      this.on('warn', opt.onwarn)
+ 
+    if (!this.preservePaths && path.win32.isAbsolute(p)) {
+      // absolutes on posix are also absolutes on win32
+      // so we only need to test this one to get both
+      const parsed = path.win32.parse(p)
+      this.warn('stripping ' + parsed.root + ' from absolute path', p)
+      this.path = p.substr(parsed.root.length)
+    }
+ 
+    this.win32 = !!opt.win32 || process.platform === 'win32'
+    if (this.win32) {
+      this.path = winchars.decode(this.path.replace(/\\/g, '/'))
+      p = p.replace(/\\/g, '/')
+    }
+ 
+    this.absolute = opt.absolute || path.resolve(this.cwd, p)
+ 
+    if (this.path === '')
+      this.path = './'
+ 
+    if (this.statCache.has(this.absolute))
+      this[ONLSTAT](this.statCache.get(this.absolute))
+    else
+      this[LSTAT]()
+  }
+ 
+  [LSTAT] () {
+    fs.lstat(this.absolute, (er, stat) => {
+      if (er)
+        return this.emit('error', er)
+      this[ONLSTAT](stat)
+    })
+  }
+ 
+  [ONLSTAT] (stat) {
+    this.statCache.set(this.absolute, stat)
+    this.stat = stat
+    if (!stat.isFile())
+      stat.size = 0
+    this.type = getType(stat)
+    this.emit('stat', stat)
+    this[PROCESS]()
+  }
+ 
+  [PROCESS] () {
+    switch (this.type) {
+      case 'File': return this[FILE]()
+      case 'Directory': return this[DIRECTORY]()
+      case 'SymbolicLink': return this[SYMLINK]()
+      // unsupported types are ignored.
+      default: return this.end()
+    }
+  }
+ 
+  [HEADER] () {
+    if (this.type === 'Directory' && this.portable)
+      this.noMtime = true
+ 
+    this.header = new Header({
+      path: this.path,
+      linkpath: this.linkpath,
+      // only the permissions and setuid/setgid/sticky bitflags
+      // not the higher-order bits that specify file type
+      mode: this.stat.mode & 0o7777,
+      uid: this.portable ? null : this.stat.uid,
+      gid: this.portable ? null : this.stat.gid,
+      size: this.stat.size,
+      mtime: this.noMtime ? null : this.stat.mtime,
+      type: this.type,
+      uname: this.portable ? null :
+        this.stat.uid === this.myuid ? this.myuser : '',
+      atime: this.portable ? null : this.stat.atime,
+      ctime: this.portable ? null : this.stat.ctime
+    })
+ 
+    if (this.header.encode() && !this.noPax)
+      this.write(new Pax({
+        atime: this.portable ? null : this.header.atime,
+        ctime: this.portable ? null : this.header.ctime,
+        gid: this.portable ? null : this.header.gid,
+        mtime: this.noMtime ? null : this.header.mtime,
+        path: this.path,
+        linkpath: this.linkpath,
+        size: this.header.size,
+        uid: this.portable ? null : this.header.uid,
+        uname: this.portable ? null : this.header.uname,
+        dev: this.portable ? null : this.stat.dev,
+        ino: this.portable ? null : this.stat.ino,
+        nlink: this.portable ? null : this.stat.nlink
+      }).encode())
+    this.write(this.header.block)
+  }
+ 
+  [DIRECTORY] () {
+    if (this.path.substr(-1) !== '/')
+      this.path += '/'
+    this.stat.size = 0
+    this[HEADER]()
+    this.end()
+  }
+ 
+  [SYMLINK] () {
+    fs.readlink(this.absolute, (er, linkpath) => {
+      if (er)
+        return this.emit('error', er)
+      this[ONREADLINK](linkpath)
+    })
+  }
+ 
+  [ONREADLINK] (linkpath) {
+    this.linkpath = linkpath
+    this[HEADER]()
+    this.end()
+  }
+ 
+  [HARDLINK] (linkpath) {
+    this.type = 'Link'
+    this.linkpath = path.relative(this.cwd, linkpath)
+    this.stat.size = 0
+    this[HEADER]()
+    this.end()
+  }
+ 
+  [FILE] () {
+    if (this.stat.nlink > 1) {
+      const linkKey = this.stat.dev + ':' + this.stat.ino
+      if (this.linkCache.has(linkKey)) {
+        const linkpath = this.linkCache.get(linkKey)
+        if (linkpath.indexOf(this.cwd) === 0)
+          return this[HARDLINK](linkpath)
+      }
+      this.linkCache.set(linkKey, this.absolute)
+    }
+ 
+    this[HEADER]()
+    if (this.stat.size === 0)
+      return this.end()
+ 
+    this[OPENFILE]()
+  }
+ 
+  [OPENFILE] () {
+    fs.open(this.absolute, 'r', (er, fd) => {
+      if (er)
+        return this.emit('error', er)
+      this[ONOPENFILE](fd)
+    })
+  }
+ 
+  [ONOPENFILE] (fd) {
+    const blockLen = 512 * Math.ceil(this.stat.size / 512)
+    const bufLen = Math.min(blockLen, this.maxReadSize)
+    const buf = Buffer.allocUnsafe(bufLen)
+    this[READ](fd, buf, 0, buf.length, 0, this.stat.size, blockLen)
+  }
+ 
+  [READ] (fd, buf, offset, length, pos, remain, blockRemain) {
+    fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {
+      if (er)
+        return this[CLOSE](fd, _ => this.emit('error', er))
+      this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)
+    })
+  }
+ 
+  [CLOSE] (fd, cb) {
+    fs.close(fd, cb)
+  }
+ 
+  [ONREAD] (fd, buf, offset, length, pos, remain, blockRemain, bytesRead) {
+    if (bytesRead <= 0 && remain > 0) {
+      const er = new Error('unexpected EOF')
+      er.path = this.absolute
+      er.syscall = 'read'
+      er.code = 'EOF'
+      this.emit('error', er)
+    }
+ 
+    // null out the rest of the buffer, if we could fit the block padding
+    if (bytesRead === remain) {
+      for (let i = bytesRead; i < length && bytesRead < blockRemain; i++) {
+        buf[i + offset] = 0
+        bytesRead ++
+        remain ++
+      }
+    }
+ 
+    const writeBuf = offset === 0 && bytesRead === buf.length ?
+      buf : buf.slice(offset, offset + bytesRead)
+    remain -= bytesRead
+    blockRemain -= bytesRead
+    pos += bytesRead
+    offset += bytesRead
+ 
+    this.write(writeBuf)
+ 
+    if (!remain) {
+      if (blockRemain)
+        this.write(Buffer.alloc(blockRemain))
+      this.end()
+      this[CLOSE](fd, _ => _)
+      return
+    }
+ 
+    if (offset >= length) {
+      buf = Buffer.allocUnsafe(length)
+      offset = 0
+    }
+    length = buf.length - offset
+    this[READ](fd, buf, offset, length, pos, remain, blockRemain)
+  }
+})
+ 
+class WriteEntrySync extends WriteEntry {
+  constructor (path, opt) {
+    super(path, opt)
+  }
+ 
+  [LSTAT] () {
+    this[ONLSTAT](fs.lstatSync(this.absolute))
+  }
+ 
+  [SYMLINK] () {
+    this[ONREADLINK](fs.readlinkSync(this.absolute))
+  }
+ 
+  [OPENFILE] () {
+    this[ONOPENFILE](fs.openSync(this.absolute, 'r'))
+  }
+ 
+  [READ] (fd, buf, offset, length, pos, remain, blockRemain) {
+    let threw = true
+    try {
+      const bytesRead = fs.readSync(fd, buf, offset, length, pos)
+      this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)
+      threw = false
+    } finally {
+      if (threw)
+        try { this[CLOSE](fd) } catch (er) {}
+    }
+  }
+ 
+  [CLOSE] (fd) {
+    fs.closeSync(fd)
+  }
+}
+ 
+const WriteEntryTar = warner(class WriteEntryTar extends MiniPass {
+  constructor (readEntry, opt) {
+    opt = opt || {}
+    super(opt)
+    this.preservePaths = !!opt.preservePaths
+    this.portable = !!opt.portable
+    this.strict = !!opt.strict
+    this.noPax = !!opt.noPax
+    this.noMtime = !!opt.noMtime
+ 
+    this.readEntry = readEntry
+    this.type = readEntry.type
+    Iif (this.type === 'Directory' && this.portable)
+      this.noMtime = true
+ 
+    this.path = readEntry.path
+    this.mode = readEntry.mode
+    if (this.mode)
+      this.mode = this.mode & 0o7777
+    this.uid = this.portable ? null : readEntry.uid
+    this.gid = this.portable ? null : readEntry.gid
+    this.uname = this.portable ? null : readEntry.uname
+    this.gname = this.portable ? null : readEntry.gname
+    this.size = readEntry.size
+    this.mtime = this.noMtime ? null : readEntry.mtime
+    this.atime = this.portable ? null : readEntry.atime
+    this.ctime = this.portable ? null : readEntry.ctime
+    this.linkpath = readEntry.linkpath
+ 
+    if (typeof opt.onwarn === 'function')
+      this.on('warn', opt.onwarn)
+ 
+    if (path.isAbsolute(this.path) && !this.preservePaths) {
+      const parsed = path.parse(this.path)
+      this.warn(
+        'stripping ' + parsed.root + ' from absolute path',
+        this.path
+      )
+      this.path = this.path.substr(parsed.root.length)
+    }
+ 
+    this.remain = readEntry.size
+    this.blockRemain = readEntry.startBlockSize
+ 
+    this.header = new Header({
+      path: this.path,
+      linkpath: this.linkpath,
+      // only the permissions and setuid/setgid/sticky bitflags
+      // not the higher-order bits that specify file type
+      mode: this.mode,
+      uid: this.portable ? null : this.uid,
+      gid: this.portable ? null : this.gid,
+      size: this.size,
+      mtime: this.noMtime ? null : this.mtime,
+      type: this.type,
+      uname: this.portable ? null : this.uname,
+      atime: this.portable ? null : this.atime,
+      ctime: this.portable ? null : this.ctime
+    })
+ 
+    if (this.header.encode() && !this.noPax)
+      super.write(new Pax({
+        atime: this.portable ? null : this.atime,
+        ctime: this.portable ? null : this.ctime,
+        gid: this.portable ? null : this.gid,
+        mtime: this.noMtime ? null : this.mtime,
+        path: this.path,
+        linkpath: this.linkpath,
+        size: this.size,
+        uid: this.portable ? null : this.uid,
+        uname: this.portable ? null : this.uname,
+        dev: this.portable ? null : this.readEntry.dev,
+        ino: this.portable ? null : this.readEntry.ino,
+        nlink: this.portable ? null : this.readEntry.nlink
+      }).encode())
+ 
+    super.write(this.header.block)
+    readEntry.pipe(this)
+  }
+ 
+  write (data) {
+    const writeLen = data.length
+    if (writeLen > this.blockRemain)
+      throw new Error('writing more to entry than is appropriate')
+    this.blockRemain -= writeLen
+    return super.write(data)
+  }
+ 
+  end () {
+    if (this.blockRemain)
+      this.write(Buffer.alloc(this.blockRemain))
+    return super.end()
+  }
+})
+ 
+WriteEntry.Sync = WriteEntrySync
+WriteEntry.Tar = WriteEntryTar
+ 
+const getType = stat =>
+  stat.isFile() ? 'File'
+  : stat.isDirectory() ? 'Directory'
+  : stat.isSymbolicLink() ? 'SymbolicLink'
+  : 'Unsupported'
+ 
+module.exports = WriteEntry
+ 
+
+
+ + + + + + + diff --git a/node_modules/tar/coverage/lcov.info b/node_modules/tar/coverage/lcov.info new file mode 100644 index 0000000000..19aa7c2206 --- /dev/null +++ b/node_modules/tar/coverage/lcov.info @@ -0,0 +1,3690 @@ +TN: +SF:/Users/isaacs/dev/js/tar/index.js +FNF:0 +FNH:0 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +LF:13 +LH:13 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/create.js +FN:12,(anonymous_0) +FN:38,(anonymous_1) +FN:47,(anonymous_2) +FN:54,(anonymous_3) +FN:65,(anonymous_4) +FN:66,(anonymous_5) +FN:72,(anonymous_6) +FN:80,(anonymous_7) +FN:87,(anonymous_8) +FN:88,(anonymous_9) +FN:95,(anonymous_10) +FN:101,(anonymous_11) +FNF:12 +FNH:12 +FNDA:15,(anonymous_0) +FNDA:4,(anonymous_1) +FNDA:4,(anonymous_2) +FNDA:4,(anonymous_3) +FNDA:5,(anonymous_4) +FNDA:7,(anonymous_5) +FNDA:7,(anonymous_6) +FNDA:9,(anonymous_7) +FNDA:7,(anonymous_8) +FNDA:3,(anonymous_9) +FNDA:1,(anonymous_10) +FNDA:2,(anonymous_11) +DA:4,2 +DA:6,2 +DA:7,2 +DA:8,2 +DA:9,2 +DA:10,2 +DA:12,2 +DA:13,15 +DA:14,1 +DA:16,15 +DA:17,1 +DA:19,15 +DA:20,2 +DA:22,13 +DA:24,13 +DA:26,13 +DA:27,1 +DA:29,12 +DA:30,1 +DA:32,11 +DA:38,2 +DA:39,4 +DA:40,4 +DA:43,4 +DA:44,4 +DA:47,2 +DA:48,4 +DA:49,4 +DA:52,4 +DA:54,4 +DA:55,4 +DA:56,4 +DA:57,4 +DA:60,4 +DA:62,4 +DA:65,2 +DA:66,5 +DA:67,7 +DA:68,3 +DA:72,7 +DA:75,4 +DA:77,4 +DA:80,2 +DA:81,9 +DA:82,8 +DA:83,8 +DA:84,3 +DA:87,7 +DA:88,3 +DA:90,5 +DA:92,6 +DA:95,2 +DA:96,1 +DA:97,1 +DA:98,1 +DA:101,2 +DA:102,2 +DA:103,2 +DA:104,2 +LF:59 +LH:59 +BRDA:13,0,0,1 +BRDA:13,0,1,14 +BRDA:16,1,0,1 +BRDA:16,1,1,14 +BRDA:19,2,0,2 +BRDA:19,2,1,13 +BRDA:19,3,0,15 +BRDA:19,3,1,14 +BRDA:19,3,2,13 +BRDA:26,4,0,1 +BRDA:26,4,1,12 +BRDA:26,5,0,13 +BRDA:26,5,1,6 +BRDA:29,6,0,1 +BRDA:29,6,1,11 +BRDA:29,7,0,12 +BRDA:29,7,1,4 +BRDA:32,8,0,4 +BRDA:32,8,1,7 +BRDA:32,9,0,11 +BRDA:32,9,1,8 +BRDA:33,10,0,4 +BRDA:33,10,1,3 +BRDA:34,11,0,1 +BRDA:34,11,1,2 +BRDA:41,12,0,4 +BRDA:41,12,1,3 +BRDA:50,13,0,4 +BRDA:50,13,1,3 +BRDA:62,14,0,3 +BRDA:62,14,1,1 +BRDA:67,15,0,3 +BRDA:67,15,1,4 +BRDA:83,16,0,3 +BRDA:83,16,1,5 +BRF:35 +BRH:35 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/extract.js +FN:10,(anonymous_0) +FN:43,(anonymous_1) +FN:44,(anonymous_2) +FN:47,(anonymous_3) +FN:58,(anonymous_4) +FN:59,(anonymous_5) +FN:62,(anonymous_6) +FN:79,(anonymous_7) +FN:84,(anonymous_8) +FN:90,(anonymous_9) +FN:106,(anonymous_10) +FN:110,(anonymous_11) +FNF:12 +FNH:12 +FNDA:21,(anonymous_0) +FNDA:7,(anonymous_1) +FNDA:13,(anonymous_2) +FNDA:87,(anonymous_3) +FNDA:9,(anonymous_4) +FNDA:9,(anonymous_5) +FNDA:6,(anonymous_6) +FNDA:9,(anonymous_7) +FNDA:9,(anonymous_8) +FNDA:9,(anonymous_9) +FNDA:1,(anonymous_10) +FNDA:2,(anonymous_11) +DA:4,2 +DA:5,2 +DA:6,2 +DA:7,2 +DA:8,2 +DA:10,2 +DA:11,21 +DA:12,1 +DA:13,20 +DA:14,1 +DA:16,21 +DA:17,3 +DA:19,21 +DA:20,13 +DA:22,8 +DA:24,21 +DA:26,21 +DA:27,2 +DA:29,19 +DA:30,1 +DA:32,18 +DA:33,7 +DA:35,18 +DA:43,2 +DA:44,13 +DA:45,7 +DA:47,7 +DA:48,87 +DA:49,87 +DA:53,87 +DA:54,87 +DA:57,7 +DA:58,9 +DA:59,9 +DA:62,2 +DA:63,6 +DA:65,6 +DA:66,6 +DA:68,6 +DA:71,5 +DA:72,5 +DA:76,4 +DA:79,2 +DA:80,9 +DA:81,9 +DA:83,9 +DA:84,9 +DA:85,9 +DA:86,9 +DA:90,9 +DA:91,9 +DA:92,1 +DA:94,8 +DA:98,8 +DA:99,8 +DA:103,9 +DA:106,2 +DA:107,1 +DA:110,2 +DA:111,2 +LF:60 +LH:60 +BRDA:11,0,0,1 +BRDA:11,0,1,20 +BRDA:13,1,0,1 +BRDA:13,1,1,19 +BRDA:16,2,0,3 +BRDA:16,2,1,18 +BRDA:19,3,0,13 +BRDA:19,3,1,8 +BRDA:26,4,0,2 +BRDA:26,4,1,19 +BRDA:26,5,0,21 +BRDA:26,5,1,9 +BRDA:29,6,0,1 +BRDA:29,6,1,18 +BRDA:29,7,0,19 +BRDA:29,7,1,4 +BRDA:32,8,0,7 +BRDA:32,8,1,11 +BRDA:35,9,0,6 +BRDA:35,9,1,12 +BRDA:35,10,0,18 +BRDA:35,10,1,15 +BRDA:36,11,0,9 +BRDA:36,11,1,3 +BRDA:37,12,0,1 +BRDA:37,12,1,2 +BRDA:48,13,0,87 +BRDA:48,13,1,12 +BRDA:48,13,2,12 +BRDA:49,14,0,3 +BRDA:49,14,1,84 +BRDA:50,15,0,9 +BRDA:50,15,1,75 +BRDA:57,16,0,3 +BRDA:57,16,1,4 +BRDA:58,17,0,9 +BRDA:58,17,1,3 +BRDA:71,18,0,5 +BRDA:71,18,1,3 +BRDA:81,19,0,9 +BRDA:81,19,1,7 +BRDA:91,20,0,1 +BRDA:91,20,1,8 +BRDA:103,21,0,4 +BRDA:103,21,1,5 +BRF:45 +BRH:45 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/header.js +FN:14,(anonymous_0) +FN:42,(anonymous_1) +FN:103,(anonymous_2) +FN:157,(anonymous_3) +FN:164,(anonymous_4) +FN:168,(anonymous_5) +FN:172,(anonymous_6) +FN:180,(anonymous_7) +FN:219,(anonymous_8) +FN:222,(anonymous_9) +FN:225,(anonymous_10) +FN:227,(anonymous_11) +FN:231,(anonymous_12) +FN:233,(anonymous_13) +FN:244,(anonymous_14) +FN:250,(anonymous_15) +FN:253,(anonymous_16) +FN:256,(anonymous_17) +FN:260,(anonymous_18) +FN:267,(anonymous_19) +FNF:20 +FNH:20 +FNDA:13121,(anonymous_0) +FNDA:6393,(anonymous_1) +FNDA:6719,(anonymous_2) +FNDA:6728,(anonymous_3) +FNDA:8178,(anonymous_4) +FNDA:4,(anonymous_5) +FNDA:6723,(anonymous_6) +FNDA:6718,(anonymous_7) +FNDA:32001,(anonymous_8) +FNDA:14938,(anonymous_9) +FNDA:14938,(anonymous_10) +FNDA:55448,(anonymous_11) +FNDA:55411,(anonymous_12) +FNDA:55411,(anonymous_13) +FNDA:66910,(anonymous_14) +FNDA:66615,(anonymous_15) +FNDA:66615,(anonymous_16) +FNDA:66615,(anonymous_17) +FNDA:20150,(anonymous_18) +FNDA:40308,(anonymous_19) +DA:7,13 +DA:8,13 +DA:9,13 +DA:11,13 +DA:15,13121 +DA:16,13121 +DA:17,13121 +DA:19,13121 +DA:20,13121 +DA:21,13121 +DA:22,13121 +DA:23,13121 +DA:24,13121 +DA:25,13121 +DA:26,13121 +DA:27,13121 +DA:28,13121 +DA:29,13121 +DA:30,13121 +DA:31,13121 +DA:32,13121 +DA:33,13121 +DA:34,13121 +DA:36,13121 +DA:37,6393 +DA:38,6728 +DA:39,6726 +DA:43,6393 +DA:44,2795 +DA:46,6393 +DA:47,1 +DA:49,6392 +DA:50,6392 +DA:51,6392 +DA:52,6392 +DA:53,6392 +DA:54,6392 +DA:55,6392 +DA:58,6392 +DA:59,6392 +DA:60,1990 +DA:61,6392 +DA:62,2 +DA:69,6392 +DA:70,1594 +DA:72,6392 +DA:73,6392 +DA:74,4275 +DA:75,4275 +DA:76,4275 +DA:77,4275 +DA:78,4275 +DA:80,2 +DA:81,2 +DA:83,4273 +DA:84,4273 +DA:85,295 +DA:86,4273 +DA:87,4273 +DA:91,6392 +DA:92,6392 +DA:93,946016 +DA:95,6392 +DA:96,2275552 +DA:98,6392 +DA:99,6392 +DA:100,1860 +DA:104,6719 +DA:105,6600 +DA:106,6600 +DA:109,6719 +DA:110,6717 +DA:112,6719 +DA:113,1 +DA:115,6718 +DA:116,6718 +DA:117,6718 +DA:118,6718 +DA:119,6718 +DA:121,6718 +DA:122,6718 +DA:123,6718 +DA:124,6718 +DA:125,6718 +DA:126,6718 +DA:127,6718 +DA:128,6718 +DA:129,6718 +DA:130,6718 +DA:131,6718 +DA:132,6718 +DA:133,6718 +DA:134,6718 +DA:135,6718 +DA:136,2 +DA:138,6716 +DA:139,6716 +DA:140,6716 +DA:143,6718 +DA:144,6718 +DA:145,994264 +DA:147,6718 +DA:148,2391608 +DA:150,6718 +DA:151,6718 +DA:152,6718 +DA:154,6718 +DA:158,6728 +DA:159,73451 +DA:160,66740 +DA:165,8178 +DA:169,4 +DA:173,6723 +DA:174,6719 +DA:176,4 +DA:180,13 +DA:181,6718 +DA:182,6718 +DA:183,6718 +DA:185,6718 +DA:187,6718 +DA:188,6683 +DA:191,35 +DA:192,35 +DA:194,35 +DA:196,49 +DA:198,21 +DA:201,28 +DA:203,13 +DA:207,15 +DA:208,15 +DA:213,35 +DA:214,1 +DA:216,6718 +DA:219,13 +DA:220,32001 +DA:222,13 +DA:223,14938 +DA:225,14938 +DA:227,13 +DA:228,55448 +DA:231,55411 +DA:233,13 +DA:234,55411 +DA:239,13 +DA:244,13 +DA:245,66910 +DA:250,13 +DA:251,66615 +DA:253,13 +DA:254,66615 +DA:256,13 +DA:257,66615 +DA:260,13 +DA:261,20150 +DA:265,13 +DA:267,13 +DA:268,40308 +DA:272,13 +LF:159 +LH:159 +BRDA:36,0,0,6393 +BRDA:36,0,1,6728 +BRDA:37,1,0,6393 +BRDA:37,1,1,2795 +BRDA:38,2,0,6726 +BRDA:38,2,1,2 +BRDA:43,3,0,2795 +BRDA:43,3,1,3598 +BRDA:46,4,0,1 +BRDA:46,4,1,6392 +BRDA:46,5,0,6393 +BRDA:46,5,1,6393 +BRDA:59,6,0,1990 +BRDA:59,6,1,4402 +BRDA:61,7,0,2 +BRDA:61,7,1,6390 +BRDA:61,8,0,6392 +BRDA:61,8,1,3769 +BRDA:69,9,0,1594 +BRDA:69,9,1,4798 +BRDA:73,10,0,4275 +BRDA:73,10,1,2117 +BRDA:78,11,0,2 +BRDA:78,11,1,4273 +BRDA:84,12,0,295 +BRDA:84,12,1,3978 +BRDA:99,13,0,1860 +BRDA:99,13,1,4532 +BRDA:99,14,0,6392 +BRDA:99,14,1,1994 +BRDA:104,15,0,6600 +BRDA:104,15,1,119 +BRDA:109,16,0,6717 +BRDA:109,16,1,2 +BRDA:112,17,0,1 +BRDA:112,17,1,6718 +BRDA:115,18,0,6623 +BRDA:115,18,1,95 +BRDA:115,19,0,6718 +BRDA:115,19,1,95 +BRDA:116,20,0,6718 +BRDA:116,20,1,1 +BRDA:121,21,0,6718 +BRDA:121,21,1,6678 +BRDA:122,22,0,6718 +BRDA:122,22,1,6718 +BRDA:123,23,0,6718 +BRDA:123,23,1,6715 +BRDA:124,24,0,6718 +BRDA:124,24,1,6715 +BRDA:125,25,0,6718 +BRDA:125,25,1,6717 +BRDA:126,26,0,6718 +BRDA:126,26,1,6718 +BRDA:128,27,0,6718 +BRDA:128,27,1,6718 +BRDA:130,28,0,6718 +BRDA:130,28,1,6718 +BRDA:131,29,0,6718 +BRDA:131,29,1,6718 +BRDA:132,30,0,6718 +BRDA:132,30,1,6718 +BRDA:133,31,0,6718 +BRDA:133,31,1,6718 +BRDA:134,32,0,6718 +BRDA:134,32,1,6718 +BRDA:135,33,0,2 +BRDA:135,33,1,6716 +BRDA:136,34,0,2 +BRDA:136,34,1,2 +BRDA:138,35,0,6716 +BRDA:138,35,1,6716 +BRDA:139,36,0,6716 +BRDA:139,36,1,6716 +BRDA:140,37,0,6716 +BRDA:140,37,1,6716 +BRDA:159,38,0,66740 +BRDA:159,38,1,6711 +BRDA:159,39,0,73451 +BRDA:159,39,1,73273 +BRDA:165,40,0,8178 +BRDA:165,40,1,6 +BRDA:173,41,0,6719 +BRDA:173,41,1,4 +BRDA:185,42,0,6718 +BRDA:185,42,1,6712 +BRDA:187,43,0,6683 +BRDA:187,43,1,35 +BRDA:210,44,0,49 +BRDA:210,44,1,34 +BRDA:196,45,0,21 +BRDA:196,45,1,28 +BRDA:196,46,0,49 +BRDA:196,46,1,35 +BRDA:201,47,0,13 +BRDA:201,47,1,15 +BRDA:201,48,0,28 +BRDA:201,48,1,14 +BRDA:213,49,0,1 +BRDA:213,49,1,34 +BRDA:225,50,0,10449 +BRDA:225,50,1,4489 +BRDA:228,51,0,37 +BRDA:228,51,1,55411 +BRDA:231,52,0,21489 +BRDA:231,52,1,33922 +BRDA:245,53,0,288 +BRDA:245,53,1,66622 +BRDA:246,54,0,7 +BRDA:246,54,1,66615 +BRDA:246,55,0,66622 +BRDA:246,55,1,66615 +BRDA:257,56,0,19852 +BRDA:257,56,1,46763 +BRDA:261,57,0,266 +BRDA:261,57,1,19884 +BRDA:268,58,0,13394 +BRDA:268,58,1,26914 +BRDA:270,59,0,26914 +BRDA:270,59,1,26874 +BRF:120 +BRH:120 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/high-level-opt.js +FN:27,(anonymous_0) +FN:27,(anonymous_1) +FN:29,(anonymous_2) +FNF:3 +FNH:3 +FNDA:177,(anonymous_0) +FNDA:469,(anonymous_1) +FNDA:469,(anonymous_2) +DA:5,7 +DA:27,469 +DA:29,469 +LF:3 +LH:3 +BRDA:27,0,0,174 +BRDA:27,0,1,3 +BRDA:28,1,0,26 +BRDA:28,1,1,443 +BRF:4 +BRH:4 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/large-numbers.js +FN:7,(anonymous_0) +FN:16,(anonymous_1) +FN:28,(anonymous_2) +FN:51,(anonymous_3) +FN:58,(anonymous_4) +FN:79,(anonymous_5) +FN:90,(anonymous_6) +FN:92,(anonymous_7) +FNF:8 +FNH:8 +FNDA:17,(anonymous_0) +FNDA:11,(anonymous_1) +FNDA:6,(anonymous_2) +FNDA:47,(anonymous_3) +FNDA:6,(anonymous_4) +FNDA:41,(anonymous_5) +FNDA:96,(anonymous_6) +FNDA:12,(anonymous_7) +DA:7,14 +DA:8,17 +DA:9,17 +DA:10,6 +DA:12,11 +DA:13,17 +DA:16,14 +DA:17,11 +DA:18,11 +DA:19,86 +DA:20,31 +DA:22,55 +DA:23,55 +DA:28,14 +DA:29,6 +DA:30,6 +DA:31,6 +DA:32,6 +DA:34,60 +DA:35,42 +DA:37,18 +DA:38,18 +DA:40,60 +DA:41,48 +DA:42,12 +DA:43,6 +DA:45,6 +DA:46,6 +DA:51,14 +DA:52,47 +DA:53,47 +DA:54,47 +DA:58,14 +DA:59,6 +DA:60,6 +DA:61,6 +DA:62,6 +DA:63,60 +DA:65,60 +DA:66,48 +DA:67,12 +DA:68,6 +DA:70,6 +DA:71,6 +DA:73,60 +DA:74,12 +DA:76,6 +DA:79,14 +DA:80,41 +DA:81,41 +DA:82,41 +DA:83,266 +DA:84,266 +DA:85,161 +DA:87,41 +DA:90,96 +DA:92,14 +LF:57 +LH:57 +BRDA:9,0,0,6 +BRDA:9,0,1,11 +BRDA:19,1,0,31 +BRDA:19,1,1,55 +BRDA:34,2,0,42 +BRDA:34,2,1,18 +BRDA:40,3,0,48 +BRDA:40,3,1,12 +BRDA:42,4,0,6 +BRDA:42,4,1,6 +BRDA:54,5,0,41 +BRDA:54,5,1,6 +BRDA:65,6,0,48 +BRDA:65,6,1,12 +BRDA:67,7,0,6 +BRDA:67,7,1,6 +BRDA:73,8,0,12 +BRDA:73,8,1,48 +BRDA:84,9,0,161 +BRDA:84,9,1,105 +BRF:20 +BRH:20 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/list.js +FN:13,(anonymous_0) +FN:46,(anonymous_1) +FN:48,(anonymous_2) +FN:51,(anonymous_3) +FN:56,(anonymous_4) +FN:57,(anonymous_5) +FN:60,(anonymous_6) +FN:71,(anonymous_7) +FN:72,(anonymous_8) +FN:75,(anonymous_9) +FN:103,(anonymous_10) +FN:108,(anonymous_11) +FN:112,(anonymous_12) +FN:128,(anonymous_13) +FNF:14 +FNH:14 +FNDA:34,(anonymous_0) +FNDA:22,(anonymous_1) +FNDA:255,(anonymous_2) +FNDA:72,(anonymous_3) +FNDA:3,(anonymous_4) +FNDA:6,(anonymous_5) +FNDA:125,(anonymous_6) +FNDA:32,(anonymous_7) +FNDA:64,(anonymous_8) +FNDA:13,(anonymous_9) +FNDA:16,(anonymous_10) +FNDA:16,(anonymous_11) +FNDA:16,(anonymous_12) +FNDA:16,(anonymous_13) +DA:7,5 +DA:8,5 +DA:9,5 +DA:10,5 +DA:11,5 +DA:13,5 +DA:14,34 +DA:15,1 +DA:16,33 +DA:17,1 +DA:19,34 +DA:20,5 +DA:22,34 +DA:23,31 +DA:25,3 +DA:27,34 +DA:29,34 +DA:30,1 +DA:32,33 +DA:33,1 +DA:35,32 +DA:36,3 +DA:38,32 +DA:39,22 +DA:41,32 +DA:46,5 +DA:47,22 +DA:48,22 +DA:49,255 +DA:50,255 +DA:51,72 +DA:56,5 +DA:57,6 +DA:58,3 +DA:60,3 +DA:61,125 +DA:62,125 +DA:66,125 +DA:67,125 +DA:70,3 +DA:71,32 +DA:72,64 +DA:75,5 +DA:76,13 +DA:77,13 +DA:78,13 +DA:80,13 +DA:81,13 +DA:82,12 +DA:83,12 +DA:84,10 +DA:86,2 +DA:87,2 +DA:88,2 +DA:89,2 +DA:90,28 +DA:91,27 +DA:92,27 +DA:94,1 +DA:96,11 +DA:98,13 +DA:99,1 +DA:103,5 +DA:104,16 +DA:105,16 +DA:107,16 +DA:108,16 +DA:109,16 +DA:110,16 +DA:112,16 +DA:113,16 +DA:114,2 +DA:116,14 +DA:120,14 +DA:121,14 +DA:125,16 +DA:128,16 +LF:77 +LH:77 +BRDA:14,0,0,1 +BRDA:14,0,1,33 +BRDA:16,1,0,1 +BRDA:16,1,1,32 +BRDA:19,2,0,5 +BRDA:19,2,1,29 +BRDA:22,3,0,31 +BRDA:22,3,1,3 +BRDA:29,4,0,1 +BRDA:29,4,1,33 +BRDA:29,5,0,34 +BRDA:29,5,1,15 +BRDA:32,6,0,1 +BRDA:32,6,1,32 +BRDA:32,7,0,33 +BRDA:32,7,1,4 +BRDA:35,8,0,3 +BRDA:35,8,1,29 +BRDA:38,9,0,22 +BRDA:38,9,1,10 +BRDA:41,10,0,13 +BRDA:41,10,1,19 +BRDA:41,11,0,32 +BRDA:41,11,1,29 +BRDA:42,12,0,16 +BRDA:42,12,1,3 +BRDA:48,13,0,13 +BRDA:48,13,1,9 +BRDA:61,14,0,125 +BRDA:61,14,1,65 +BRDA:61,14,2,65 +BRDA:62,15,0,6 +BRDA:62,15,1,119 +BRDA:63,16,0,59 +BRDA:63,16,1,60 +BRDA:70,17,0,1 +BRDA:70,17,1,2 +BRDA:71,18,0,32 +BRDA:71,18,1,1 +BRDA:82,19,0,12 +BRDA:82,19,1,10 +BRDA:83,20,0,10 +BRDA:83,20,1,2 +BRDA:98,21,0,1 +BRDA:98,21,1,12 +BRDA:98,22,0,13 +BRDA:98,22,1,2 +BRDA:105,23,0,16 +BRDA:105,23,1,14 +BRDA:113,24,0,2 +BRDA:113,24,1,14 +BRDA:125,25,0,4 +BRDA:125,25,1,12 +BRF:53 +BRH:53 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/mkdir.js +FN:13,(anonymous_0) +FN:19,(anonymous_1) +FN:25,(anonymous_2) +FN:31,(anonymous_3) +FN:36,(anonymous_4) +FN:54,(anonymous_5) +FN:60,(anonymous_6) +FN:72,(anonymous_7) +FN:86,(anonymous_8) +FN:96,(anonymous_9) +FN:96,(anonymous_10) +FN:102,(anonymous_11) +FN:108,(anonymous_12) +FN:124,(anonymous_13) +FN:142,(anonymous_14) +FNF:15 +FNH:15 +FNDA:4,(anonymous_0) +FNDA:8,(anonymous_1) +FNDA:12,(anonymous_2) +FNDA:36,(anonymous_3) +FNDA:451,(anonymous_4) +FNDA:457,(anonymous_5) +FNDA:6,(anonymous_6) +FNDA:40,(anonymous_7) +FNDA:1062,(anonymous_8) +FNDA:222,(anonymous_9) +FNDA:222,(anonymous_10) +FNDA:32,(anonymous_11) +FNDA:3,(anonymous_12) +FNDA:276,(anonymous_13) +FNDA:266,(anonymous_14) +DA:7,3 +DA:8,3 +DA:9,3 +DA:10,3 +DA:14,4 +DA:15,4 +DA:16,4 +DA:20,8 +DA:26,12 +DA:27,12 +DA:28,12 +DA:32,36 +DA:36,3 +DA:39,451 +DA:40,451 +DA:41,451 +DA:43,451 +DA:44,451 +DA:45,451 +DA:49,451 +DA:50,451 +DA:51,451 +DA:52,451 +DA:54,451 +DA:55,457 +DA:56,15 +DA:58,442 +DA:59,442 +DA:60,6 +DA:61,436 +DA:62,1 +DA:64,435 +DA:68,451 +DA:69,272 +DA:71,179 +DA:72,40 +DA:73,40 +DA:74,2 +DA:75,40 +DA:78,139 +DA:79,8 +DA:81,131 +DA:82,131 +DA:83,131 +DA:86,3 +DA:87,1062 +DA:88,119 +DA:89,943 +DA:90,943 +DA:91,943 +DA:92,723 +DA:93,220 +DA:96,222 +DA:97,222 +DA:98,36 +DA:100,4 +DA:102,32 +DA:103,32 +DA:104,4 +DA:105,28 +DA:106,22 +DA:107,6 +DA:108,3 +DA:109,3 +DA:110,1 +DA:111,2 +DA:113,3 +DA:114,2 +DA:116,1 +DA:119,186 +DA:120,186 +DA:124,3 +DA:127,276 +DA:128,276 +DA:129,276 +DA:131,276 +DA:132,276 +DA:133,276 +DA:137,276 +DA:138,276 +DA:139,276 +DA:140,276 +DA:142,276 +DA:143,266 +DA:144,266 +DA:145,6 +DA:146,266 +DA:147,1 +DA:148,266 +DA:151,276 +DA:152,128 +DA:154,148 +DA:155,34 +DA:156,34 +DA:157,34 +DA:158,34 +DA:160,1 +DA:162,34 +DA:163,2 +DA:165,32 +DA:166,32 +DA:169,114 +DA:170,7 +DA:172,107 +DA:173,107 +DA:174,107 +DA:175,107 +DA:179,792 +DA:180,608 +DA:182,184 +DA:183,184 +DA:184,169 +DA:185,169 +DA:187,15 +DA:189,4 +DA:191,11 +DA:192,9 +DA:193,4 +DA:194,4 +DA:195,5 +DA:196,2 +DA:197,2 +DA:198,2 +DA:199,2 +DA:200,2 +DA:201,3 +DA:202,2 +DA:206,99 +LF:128 +LH:128 +BRDA:45,0,0,451 +BRDA:45,0,1,6 +BRDA:45,0,2,6 +BRDA:45,0,3,2 +BRDA:55,1,0,15 +BRDA:55,1,1,442 +BRDA:59,2,0,6 +BRDA:59,2,1,436 +BRDA:59,3,0,442 +BRDA:59,3,1,114 +BRDA:61,4,0,1 +BRDA:61,4,1,435 +BRDA:68,5,0,272 +BRDA:68,5,1,179 +BRDA:68,6,0,451 +BRDA:68,6,1,451 +BRDA:71,7,0,40 +BRDA:71,7,1,139 +BRDA:73,8,0,2 +BRDA:73,8,1,38 +BRDA:73,9,0,40 +BRDA:73,9,1,39 +BRDA:74,10,0,2 +BRDA:74,10,1,1 +BRDA:74,10,2,1 +BRDA:78,11,0,8 +BRDA:78,11,1,131 +BRDA:87,12,0,119 +BRDA:87,12,1,943 +BRDA:91,13,0,723 +BRDA:91,13,1,220 +BRDA:97,14,0,36 +BRDA:97,14,1,186 +BRDA:98,15,0,4 +BRDA:98,15,1,32 +BRDA:98,16,0,36 +BRDA:98,16,1,35 +BRDA:98,16,2,16 +BRDA:98,16,3,14 +BRDA:103,17,0,4 +BRDA:103,17,1,28 +BRDA:105,18,0,22 +BRDA:105,18,1,6 +BRDA:107,19,0,3 +BRDA:107,19,1,3 +BRDA:109,20,0,1 +BRDA:109,20,1,2 +BRDA:113,21,0,2 +BRDA:113,21,1,1 +BRDA:119,22,0,186 +BRDA:119,22,1,108 +BRDA:133,23,0,276 +BRDA:133,23,1,6 +BRDA:133,23,2,6 +BRDA:133,23,3,2 +BRDA:144,24,0,6 +BRDA:144,24,1,260 +BRDA:144,25,0,266 +BRDA:144,25,1,101 +BRDA:146,26,0,1 +BRDA:146,26,1,265 +BRDA:151,27,0,128 +BRDA:151,27,1,148 +BRDA:151,28,0,276 +BRDA:151,28,1,276 +BRDA:154,29,0,34 +BRDA:154,29,1,114 +BRDA:162,30,0,2 +BRDA:162,30,1,32 +BRDA:169,31,0,7 +BRDA:169,31,1,107 +BRDA:176,32,0,891 +BRDA:176,32,1,792 +BRDA:179,33,0,608 +BRDA:179,33,1,184 +BRDA:184,34,0,169 +BRDA:184,34,1,93 +BRDA:187,35,0,4 +BRDA:187,35,1,11 +BRDA:187,36,0,15 +BRDA:187,36,1,14 +BRDA:187,36,2,5 +BRDA:187,36,3,3 +BRDA:192,37,0,4 +BRDA:192,37,1,5 +BRDA:195,38,0,2 +BRDA:195,38,1,3 +BRDA:198,39,0,2 +BRDA:198,39,1,2 +BRDA:201,40,0,2 +BRDA:201,40,1,1 +BRF:91 +BRH:91 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/pack.js +FN:13,(anonymous_0) +FN:59,(anonymous_1) +FN:81,(anonymous_2) +FN:82,(anonymous_3) +FN:83,(anonymous_4) +FN:84,(anonymous_5) +FN:94,(anonymous_6) +FN:103,(anonymous_7) +FN:107,(anonymous_8) +FN:112,(anonymous_9) +FN:120,(anonymous_10) +FN:131,(anonymous_11) +FN:142,(anonymous_12) +FN:150,(anonymous_13) +FN:159,(anonymous_14) +FN:163,(anonymous_15) +FN:173,(anonymous_16) +FN:184,(anonymous_17) +FN:187,(anonymous_18) +FN:196,(anonymous_19) +FN:202,(anonymous_20) +FN:230,(anonymous_21) +FN:234,(anonymous_22) +FN:240,(anonymous_23) +FN:283,(anonymous_24) +FN:285,(anonymous_25) +FN:301,(anonymous_26) +FN:305,(anonymous_27) +FN:306,(anonymous_28) +FN:312,(anonymous_29) +FN:318,(anonymous_30) +FN:322,(anonymous_31) +FN:335,(anonymous_32) +FN:340,(anonymous_33) +FN:346,(anonymous_34) +FN:354,(anonymous_35) +FN:360,(anonymous_36) +FN:361,(anonymous_37) +FN:363,(anonymous_38) +FN:368,(anonymous_39) +FN:373,(anonymous_40) +FN:378,(anonymous_41) +FN:389,(anonymous_42) +FN:393,(anonymous_43) +FNF:44 +FNH:44 +FNDA:6566,(anonymous_0) +FNDA:122,(anonymous_1) +FNDA:503,(anonymous_2) +FNDA:4,(anonymous_3) +FNDA:146,(anonymous_4) +FNDA:219,(anonymous_5) +FNDA:6507,(anonymous_6) +FNDA:106,(anonymous_7) +FNDA:107,(anonymous_8) +FNDA:100,(anonymous_9) +FNDA:128,(anonymous_10) +FNDA:27,(anonymous_11) +FNDA:25,(anonymous_12) +FNDA:6541,(anonymous_13) +FNDA:6453,(anonymous_14) +FNDA:6453,(anonymous_15) +FNDA:6538,(anonymous_16) +FNDA:821,(anonymous_17) +FNDA:821,(anonymous_18) +FNDA:858,(anonymous_19) +FNDA:20596,(anonymous_20) +FNDA:25863,(anonymous_21) +FNDA:6533,(anonymous_22) +FNDA:38739,(anonymous_23) +FNDA:6537,(anonymous_24) +FNDA:1,(anonymous_25) +FNDA:6512,(anonymous_26) +FNDA:6508,(anonymous_27) +FNDA:1,(anonymous_28) +FNDA:248,(anonymous_29) +FNDA:6448,(anonymous_30) +FNDA:6393,(anonymous_31) +FNDA:11830,(anonymous_32) +FNDA:199,(anonymous_33) +FNDA:265,(anonymous_34) +FNDA:47,(anonymous_35) +FNDA:1,(anonymous_36) +FNDA:1,(anonymous_37) +FNDA:84,(anonymous_38) +FNDA:37,(anonymous_39) +FNDA:87,(anonymous_40) +FNDA:48,(anonymous_41) +FNDA:39,(anonymous_42) +FNDA:106,(anonymous_43) +DA:14,6566 +DA:15,6566 +DA:16,6566 +DA:17,6566 +DA:18,6566 +DA:19,6566 +DA:20,6566 +DA:21,6566 +DA:25,5 +DA:26,5 +DA:27,5 +DA:28,5 +DA:29,5 +DA:30,5 +DA:31,5 +DA:32,5 +DA:33,5 +DA:34,5 +DA:35,5 +DA:36,5 +DA:37,5 +DA:38,5 +DA:39,5 +DA:40,5 +DA:41,5 +DA:42,5 +DA:43,5 +DA:44,5 +DA:45,5 +DA:46,5 +DA:47,5 +DA:48,5 +DA:49,5 +DA:50,5 +DA:51,5 +DA:52,5 +DA:54,5 +DA:55,5 +DA:56,5 +DA:58,5 +DA:60,122 +DA:61,122 +DA:62,122 +DA:63,122 +DA:64,122 +DA:65,122 +DA:66,122 +DA:67,122 +DA:68,122 +DA:69,122 +DA:70,122 +DA:71,122 +DA:72,122 +DA:73,122 +DA:74,3 +DA:76,122 +DA:77,122 +DA:78,5 +DA:79,4 +DA:80,5 +DA:81,503 +DA:82,5 +DA:83,146 +DA:84,219 +DA:86,117 +DA:88,122 +DA:89,122 +DA:90,122 +DA:91,122 +DA:94,6507 +DA:96,122 +DA:97,122 +DA:98,122 +DA:99,122 +DA:100,122 +DA:104,106 +DA:108,107 +DA:109,103 +DA:113,100 +DA:114,21 +DA:115,99 +DA:116,99 +DA:117,99 +DA:121,128 +DA:122,1 +DA:124,127 +DA:125,27 +DA:127,100 +DA:128,123 +DA:132,27 +DA:133,27 +DA:134,1 +DA:137,27 +DA:138,2 +DA:140,25 +DA:141,25 +DA:142,25 +DA:143,25 +DA:144,25 +DA:147,27 +DA:151,6541 +DA:152,6541 +DA:153,34 +DA:155,6541 +DA:156,6541 +DA:160,6453 +DA:161,6453 +DA:162,6453 +DA:163,6453 +DA:164,6453 +DA:165,6453 +DA:166,6453 +DA:167,1 +DA:169,6452 +DA:174,6538 +DA:175,6538 +DA:178,6538 +DA:179,24 +DA:181,6538 +DA:185,821 +DA:186,821 +DA:187,821 +DA:188,821 +DA:189,821 +DA:190,821 +DA:191,1 +DA:192,820 +DA:197,858 +DA:198,858 +DA:199,858 +DA:203,20596 +DA:204,9093 +DA:206,11503 +DA:207,11503 +DA:210,38739 +DA:211,38735 +DA:212,25 +DA:213,25 +DA:214,25 +DA:218,11499 +DA:220,11499 +DA:221,96 +DA:222,4 +DA:224,92 +DA:225,92 +DA:231,25863 +DA:235,6533 +DA:236,6533 +DA:237,6533 +DA:241,38739 +DA:242,6156 +DA:244,32583 +DA:245,18770 +DA:246,4954 +DA:247,18770 +DA:250,13813 +DA:251,6541 +DA:252,4 +DA:254,6537 +DA:256,13811 +DA:257,6453 +DA:260,7358 +DA:261,24 +DA:263,7334 +DA:264,860 +DA:265,2 +DA:267,858 +DA:268,859 +DA:269,821 +DA:273,6512 +DA:274,6511 +DA:275,1 +DA:276,1 +DA:279,6510 +DA:280,1581 +DA:284,6537 +DA:286,1 +DA:302,6512 +DA:303,6512 +DA:304,6512 +DA:305,6508 +DA:306,1 +DA:308,2 +DA:313,248 +DA:314,158 +DA:319,6448 +DA:321,6448 +DA:322,820 +DA:323,6393 +DA:327,6393 +DA:328,6393 +DA:331,6448 +DA:332,6448 +DA:334,6448 +DA:335,6336 +DA:336,11830 +DA:337,156 +DA:340,112 +DA:341,199 +DA:342,53 +DA:347,265 +DA:348,214 +DA:349,265 +DA:355,47 +DA:356,47 +DA:364,84 +DA:365,84 +DA:369,37 +DA:374,87 +DA:375,87 +DA:377,87 +DA:378,38 +DA:379,48 +DA:384,48 +DA:385,48 +DA:388,87 +DA:389,31 +DA:390,39 +DA:393,56 +DA:394,106 +DA:399,5 +DA:401,5 +LF:222 +LH:222 +BRDA:14,0,0,6566 +BRDA:14,0,1,1 +BRDA:61,1,0,122 +BRDA:61,1,1,5 +BRDA:63,2,0,122 +BRDA:63,2,1,22 +BRDA:68,3,0,122 +BRDA:68,3,1,115 +BRDA:69,4,0,122 +BRDA:69,4,1,121 +BRDA:70,5,0,122 +BRDA:70,5,1,121 +BRDA:71,6,0,122 +BRDA:71,6,1,121 +BRDA:73,7,0,3 +BRDA:73,7,1,119 +BRDA:77,8,0,5 +BRDA:77,8,1,117 +BRDA:78,9,0,4 +BRDA:78,9,1,1 +BRDA:94,10,0,41 +BRDA:94,10,1,81 +BRDA:98,11,0,122 +BRDA:98,11,1,122 +BRDA:113,12,0,21 +BRDA:113,12,1,79 +BRDA:121,13,0,1 +BRDA:121,13,1,127 +BRDA:124,14,0,27 +BRDA:124,14,1,100 +BRDA:133,15,0,1 +BRDA:133,15,1,26 +BRDA:137,16,0,2 +BRDA:137,16,1,25 +BRDA:152,17,0,34 +BRDA:152,17,1,6507 +BRDA:162,18,0,1 +BRDA:162,18,1,6452 +BRDA:166,19,0,1 +BRDA:166,19,1,6452 +BRDA:178,20,0,24 +BRDA:178,20,1,6514 +BRDA:190,21,0,1 +BRDA:190,21,1,820 +BRDA:203,22,0,9093 +BRDA:203,22,1,11503 +BRDA:208,23,0,50238 +BRDA:208,23,1,49694 +BRDA:211,24,0,25 +BRDA:211,24,1,38710 +BRDA:220,25,0,96 +BRDA:220,25,1,11403 +BRDA:220,26,0,11499 +BRDA:220,26,1,11363 +BRDA:220,26,2,97 +BRDA:221,27,0,4 +BRDA:221,27,1,92 +BRDA:231,28,0,25863 +BRDA:231,28,1,25863 +BRDA:231,28,2,25792 +BRDA:241,29,0,6156 +BRDA:241,29,1,32583 +BRDA:244,30,0,18770 +BRDA:244,30,1,13813 +BRDA:245,31,0,4954 +BRDA:245,31,1,13816 +BRDA:245,32,0,18770 +BRDA:245,32,1,9951 +BRDA:250,33,0,6541 +BRDA:250,33,1,7272 +BRDA:251,34,0,4 +BRDA:251,34,1,6537 +BRDA:256,35,0,6453 +BRDA:256,35,1,7358 +BRDA:260,36,0,24 +BRDA:260,36,1,7334 +BRDA:263,37,0,860 +BRDA:263,37,1,6474 +BRDA:263,38,0,7334 +BRDA:263,38,1,7332 +BRDA:263,38,2,1680 +BRDA:264,39,0,2 +BRDA:264,39,1,858 +BRDA:268,40,0,821 +BRDA:268,40,1,38 +BRDA:274,41,0,1 +BRDA:274,41,1,6510 +BRDA:279,42,0,1581 +BRDA:279,42,1,4929 +BRDA:279,43,0,6510 +BRDA:279,43,1,1581 +BRDA:313,44,0,158 +BRDA:313,44,1,90 +BRDA:313,45,0,248 +BRDA:313,45,1,177 +BRDA:321,46,0,820 +BRDA:321,46,1,5628 +BRDA:323,47,0,14 +BRDA:323,47,1,6379 +BRDA:324,48,0,14 +BRDA:324,48,1,4 +BRDA:327,49,0,18 +BRDA:327,49,1,6375 +BRDA:334,50,0,6336 +BRDA:334,50,1,112 +BRDA:336,51,0,156 +BRDA:336,51,1,11674 +BRDA:341,52,0,53 +BRDA:341,52,1,146 +BRDA:347,53,0,214 +BRDA:347,53,1,51 +BRDA:364,54,0,1 +BRDA:364,54,1,83 +BRDA:377,55,0,38 +BRDA:377,55,1,49 +BRDA:379,56,0,14 +BRDA:379,56,1,34 +BRDA:380,57,0,14 +BRDA:380,57,1,4 +BRDA:384,58,0,4 +BRDA:384,58,1,44 +BRDA:388,59,0,31 +BRDA:388,59,1,56 +BRF:123 +BRH:123 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/parse.js +FN:61,(anonymous_0) +FN:64,(anonymous_1) +FN:71,(anonymous_2) +FN:103,(anonymous_3) +FN:128,(anonymous_4) +FN:157,(anonymous_5) +FN:169,(anonymous_6) +FN:177,(anonymous_7) +FN:194,(anonymous_8) +FN:198,(anonymous_9) +FN:216,(anonymous_10) +FN:227,(anonymous_11) +FN:234,(anonymous_12) +FN:262,(anonymous_13) +FN:268,(anonymous_14) +FN:290,(anonymous_15) +FN:291,(anonymous_16) +FN:293,(anonymous_17) +FN:316,(anonymous_18) +FN:321,(anonymous_19) +FN:326,(anonymous_20) +FN:342,(anonymous_21) +FN:370,(anonymous_22) +FN:405,(anonymous_23) +FNF:24 +FNH:24 +FNDA:2032,(anonymous_0) +FNDA:742,(anonymous_1) +FNDA:589,(anonymous_2) +FNDA:6101,(anonymous_3) +FNDA:475,(anonymous_4) +FNDA:4299,(anonymous_5) +FNDA:1272,(anonymous_6) +FNDA:2947,(anonymous_7) +FNDA:9,(anonymous_8) +FNDA:2194,(anonymous_9) +FNDA:475,(anonymous_10) +FNDA:4328,(anonymous_11) +FNDA:455,(anonymous_12) +FNDA:2,(anonymous_13) +FNDA:669590,(anonymous_14) +FNDA:20164,(anonymous_15) +FNDA:2,(anonymous_16) +FNDA:226,(anonymous_17) +FNDA:6,(anonymous_18) +FNDA:652869,(anonymous_19) +FNDA:3449,(anonymous_20) +FNDA:655942,(anonymous_21) +FNDA:655553,(anonymous_22) +FNDA:718,(anonymous_23) +DA:23,9 +DA:24,9 +DA:25,9 +DA:26,9 +DA:27,9 +DA:28,9 +DA:29,9 +DA:30,9 +DA:31,9 +DA:33,9 +DA:34,9 +DA:35,9 +DA:36,9 +DA:37,9 +DA:38,9 +DA:39,9 +DA:40,9 +DA:41,9 +DA:42,9 +DA:43,9 +DA:44,9 +DA:45,9 +DA:46,9 +DA:47,9 +DA:48,9 +DA:49,9 +DA:50,9 +DA:51,9 +DA:52,9 +DA:53,9 +DA:54,9 +DA:55,9 +DA:56,9 +DA:57,9 +DA:58,9 +DA:59,9 +DA:61,2032 +DA:63,9 +DA:65,742 +DA:66,742 +DA:68,742 +DA:69,134 +DA:71,608 +DA:72,589 +DA:73,589 +DA:74,589 +DA:75,589 +DA:78,742 +DA:79,742 +DA:80,742 +DA:83,742 +DA:84,742 +DA:86,742 +DA:87,742 +DA:88,742 +DA:89,742 +DA:90,742 +DA:91,742 +DA:92,742 +DA:93,742 +DA:94,742 +DA:95,742 +DA:96,742 +DA:97,742 +DA:98,36 +DA:99,742 +DA:100,34 +DA:104,6101 +DA:106,6101 +DA:107,1834 +DA:108,4267 +DA:109,160 +DA:110,4107 +DA:111,40 +DA:113,4067 +DA:114,4067 +DA:115,40 +DA:116,4027 +DA:117,40 +DA:119,3987 +DA:121,3987 +DA:122,759 +DA:123,260 +DA:124,260 +DA:125,260 +DA:126,499 +DA:127,455 +DA:128,475 +DA:129,455 +DA:133,3228 +DA:134,3228 +DA:135,3228 +DA:136,1070 +DA:137,1070 +DA:139,2158 +DA:140,1028 +DA:142,1130 +DA:143,1130 +DA:146,2158 +DA:147,1675 +DA:148,1675 +DA:150,483 +DA:158,4299 +DA:160,4299 +DA:161,1653 +DA:162,1653 +DA:163,2646 +DA:164,490 +DA:166,2156 +DA:167,2156 +DA:168,2150 +DA:169,1288 +DA:170,1288 +DA:174,4293 +DA:178,2947 +DA:180,2941 +DA:188,2478 +DA:189,2478 +DA:190,2478 +DA:191,2468 +DA:192,516 +DA:194,10 +DA:200,2194 +DA:201,2194 +DA:202,2194 +DA:205,2194 +DA:207,2194 +DA:208,2121 +DA:209,2121 +DA:210,2121 +DA:213,2194 +DA:217,475 +DA:218,475 +DA:221,475 +DA:222,455 +DA:224,475 +DA:228,4328 +DA:229,3815 +DA:231,513 +DA:235,455 +DA:236,455 +DA:239,351 +DA:240,351 +DA:243,44 +DA:244,44 +DA:248,40 +DA:249,40 +DA:250,40 +DA:253,20 +DA:254,20 +DA:255,20 +DA:263,2 +DA:264,2 +DA:265,2 +DA:269,669590 +DA:270,1 +DA:273,669589 +DA:274,944 +DA:275,224 +DA:276,224 +DA:278,944 +DA:279,224 +DA:280,224 +DA:282,720 +DA:283,947 +DA:284,493 +DA:286,720 +DA:287,227 +DA:288,227 +DA:289,227 +DA:290,20164 +DA:291,227 +DA:292,2 +DA:293,227 +DA:294,226 +DA:295,226 +DA:297,227 +DA:301,669138 +DA:302,669138 +DA:303,33586 +DA:305,635552 +DA:306,669132 +DA:310,669132 +DA:315,669132 +DA:316,63 +DA:318,669132 +DA:322,652869 +DA:323,652866 +DA:327,3449 +DA:328,709 +DA:329,709 +DA:330,709 +DA:331,2 +DA:332,2 +DA:334,2 +DA:335,1 +DA:336,2 +DA:338,709 +DA:343,655942 +DA:344,10 +DA:345,655932 +DA:346,381 +DA:348,655551 +DA:349,655551 +DA:350,652859 +DA:351,652859 +DA:352,652859 +DA:353,652859 +DA:355,2692 +DA:358,655545 +DA:359,2 +DA:360,2 +DA:361,2 +DA:363,655545 +DA:366,655936 +DA:367,3068 +DA:373,655553 +DA:374,655553 +DA:375,655553 +DA:376,8295 +DA:378,6101 +DA:379,6095 +DA:380,6095 +DA:384,1719 +DA:385,1719 +DA:388,475 +DA:389,475 +DA:397,655547 +DA:398,652863 +DA:399,1 +DA:401,652862 +DA:406,718 +DA:407,717 +DA:408,113 +DA:410,604 +DA:411,604 +LF:236 +LH:236 +BRDA:65,0,0,742 +BRDA:65,0,1,22 +BRDA:68,1,0,134 +BRDA:68,1,1,608 +BRDA:79,2,0,742 +BRDA:79,2,1,462 +BRDA:80,3,0,290 +BRDA:80,3,1,452 +BRDA:97,4,0,36 +BRDA:97,4,1,706 +BRDA:99,5,0,34 +BRDA:99,5,1,708 +BRDA:106,6,0,1834 +BRDA:106,6,1,4267 +BRDA:108,7,0,160 +BRDA:108,7,1,4107 +BRDA:110,8,0,40 +BRDA:110,8,1,4067 +BRDA:114,9,0,40 +BRDA:114,9,1,4027 +BRDA:114,10,0,4067 +BRDA:114,10,1,248 +BRDA:116,11,0,40 +BRDA:116,11,1,3987 +BRDA:116,12,0,4027 +BRDA:116,12,1,3819 +BRDA:121,13,0,759 +BRDA:121,13,1,3228 +BRDA:122,14,0,260 +BRDA:122,14,1,499 +BRDA:126,15,0,455 +BRDA:126,15,1,44 +BRDA:134,16,0,3228 +BRDA:134,16,1,3226 +BRDA:135,17,0,1070 +BRDA:135,17,1,2158 +BRDA:137,18,0,382 +BRDA:137,18,1,688 +BRDA:139,19,0,1028 +BRDA:139,19,1,1130 +BRDA:146,20,0,1675 +BRDA:146,20,1,483 +BRDA:160,21,0,1653 +BRDA:160,21,1,2646 +BRDA:163,22,0,490 +BRDA:163,22,1,2156 +BRDA:168,23,0,1288 +BRDA:168,23,1,862 +BRDA:180,24,0,2478 +BRDA:180,24,1,463 +BRDA:189,25,0,2478 +BRDA:189,25,1,825 +BRDA:189,25,2,167 +BRDA:190,26,0,2468 +BRDA:190,26,1,10 +BRDA:191,27,0,516 +BRDA:191,27,1,1952 +BRDA:202,28,0,583 +BRDA:202,28,1,1611 +BRDA:202,29,0,2194 +BRDA:202,29,1,593 +BRDA:207,30,0,2121 +BRDA:207,30,1,73 +BRDA:221,31,0,455 +BRDA:221,31,1,20 +BRDA:228,32,0,3815 +BRDA:228,32,1,513 +BRDA:228,33,0,4328 +BRDA:228,33,1,3916 +BRDA:236,34,0,351 +BRDA:236,34,1,351 +BRDA:236,34,2,44 +BRDA:236,34,3,40 +BRDA:236,34,4,40 +BRDA:236,34,5,20 +BRDA:248,35,0,40 +BRDA:248,35,1,40 +BRDA:253,36,0,20 +BRDA:253,36,1,20 +BRDA:269,37,0,1 +BRDA:269,37,1,669589 +BRDA:273,38,0,944 +BRDA:273,38,1,668645 +BRDA:273,39,0,669589 +BRDA:273,39,1,944 +BRDA:274,40,0,224 +BRDA:274,40,1,720 +BRDA:278,41,0,224 +BRDA:278,41,1,720 +BRDA:282,42,0,1667 +BRDA:282,42,1,1174 +BRDA:283,43,0,493 +BRDA:283,43,1,454 +BRDA:286,44,0,227 +BRDA:286,44,1,493 +BRDA:297,45,0,113 +BRDA:297,45,1,114 +BRDA:302,46,0,33586 +BRDA:302,46,1,635552 +BRDA:310,47,0,190 +BRDA:310,47,1,668942 +BRDA:311,48,0,61606 +BRDA:311,48,1,607336 +BRDA:315,49,0,63 +BRDA:315,49,1,669069 +BRDA:315,50,0,669132 +BRDA:315,50,1,253 +BRDA:322,51,0,652866 +BRDA:322,51,1,3 +BRDA:322,52,0,652869 +BRDA:322,52,1,652866 +BRDA:323,53,0,652864 +BRDA:323,53,1,2 +BRDA:327,54,0,709 +BRDA:327,54,1,2740 +BRDA:327,55,0,3449 +BRDA:327,55,1,1094 +BRDA:327,55,2,710 +BRDA:330,56,0,2 +BRDA:330,56,1,707 +BRDA:330,57,0,709 +BRDA:330,57,1,255 +BRDA:331,58,0,1 +BRDA:331,58,1,1 +BRDA:334,59,0,1 +BRDA:334,59,1,1 +BRDA:343,60,0,10 +BRDA:343,60,1,655932 +BRDA:345,61,0,381 +BRDA:345,61,1,655551 +BRDA:345,62,0,655932 +BRDA:345,62,1,382 +BRDA:349,63,0,652859 +BRDA:349,63,1,2692 +BRDA:358,64,0,655547 +BRDA:358,64,1,652864 +BRDA:358,64,2,2 +BRDA:366,65,0,3068 +BRDA:366,65,1,652868 +BRDA:366,66,0,655936 +BRDA:366,66,1,652872 +BRDA:375,67,0,663842 +BRDA:375,67,1,8295 +BRDA:376,68,0,6101 +BRDA:376,68,1,670 +BRDA:376,68,2,1719 +BRDA:376,68,3,475 +BRDA:397,69,0,652863 +BRDA:397,69,1,2684 +BRDA:398,70,0,1 +BRDA:398,70,1,652862 +BRDA:406,71,0,717 +BRDA:406,71,1,1 +BRDA:407,72,0,113 +BRDA:407,72,1,604 +BRF:155 +BRH:155 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/pax.js +FN:6,(anonymous_0) +FN:25,(anonymous_1) +FN:71,(anonymous_2) +FN:91,(anonymous_3) +FN:112,(anonymous_4) +FN:114,(anonymous_5) +FN:115,(anonymous_6) +FN:117,(anonymous_7) +FN:123,(anonymous_8) +FNF:9 +FNH:9 +FNDA:435,(anonymous_0) +FNDA:34,(anonymous_1) +FNDA:34,(anonymous_2) +FNDA:510,(anonymous_3) +FNDA:401,(anonymous_4) +FNDA:401,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:401,(anonymous_7) +FNDA:2259,(anonymous_8) +DA:2,11 +DA:3,11 +DA:7,435 +DA:8,435 +DA:9,435 +DA:10,435 +DA:11,435 +DA:12,435 +DA:13,435 +DA:14,435 +DA:15,435 +DA:16,435 +DA:17,435 +DA:18,435 +DA:19,435 +DA:20,435 +DA:21,435 +DA:22,435 +DA:26,34 +DA:27,34 +DA:28,1 +DA:30,33 +DA:33,33 +DA:34,33 +DA:37,33 +DA:38,16896 +DA:41,33 +DA:61,33 +DA:64,33 +DA:65,8949 +DA:68,33 +DA:72,34 +DA:92,510 +DA:93,204 +DA:94,306 +DA:96,306 +DA:100,306 +DA:104,306 +DA:105,306 +DA:106,30 +DA:107,306 +DA:108,306 +DA:112,401 +DA:114,11 +DA:115,401 +DA:117,11 +DA:118,401 +DA:123,11 +DA:124,2259 +DA:128,2259 +DA:129,5 +DA:131,2254 +DA:132,2254 +DA:133,2254 +DA:134,2254 +DA:135,1 +DA:137,2253 +DA:138,2253 +DA:142,2253 +DA:145,11 +LF:60 +LH:60 +BRDA:7,0,0,435 +BRDA:7,0,1,85 +BRDA:8,1,0,435 +BRDA:8,1,1,435 +BRDA:9,2,0,435 +BRDA:9,2,1,411 +BRDA:10,3,0,435 +BRDA:10,3,1,85 +BRDA:11,4,0,435 +BRDA:11,4,1,369 +BRDA:12,5,0,435 +BRDA:12,5,1,410 +BRDA:13,6,0,435 +BRDA:13,6,1,435 +BRDA:14,7,0,435 +BRDA:14,7,1,368 +BRDA:15,8,0,435 +BRDA:15,8,1,2 +BRDA:16,9,0,435 +BRDA:16,9,1,363 +BRDA:17,10,0,435 +BRDA:17,10,1,371 +BRDA:18,11,0,435 +BRDA:18,11,1,373 +BRDA:19,12,0,435 +BRDA:19,12,1,86 +BRDA:20,13,0,435 +BRDA:20,13,1,86 +BRDA:21,14,0,435 +BRDA:21,14,1,86 +BRDA:22,15,0,435 +BRDA:22,15,1,389 +BRDA:27,16,0,1 +BRDA:27,16,1,33 +BRDA:46,17,0,33 +BRDA:46,17,1,33 +BRDA:47,18,0,33 +BRDA:47,18,1,6 +BRDA:48,19,0,33 +BRDA:48,19,1,6 +BRDA:50,20,0,33 +BRDA:50,20,1,5 +BRDA:51,21,0,1 +BRDA:51,21,1,32 +BRDA:53,22,0,33 +BRDA:53,22,1,7 +BRDA:54,23,0,33 +BRDA:54,23,1,32 +BRDA:57,24,0,33 +BRDA:57,24,1,6 +BRDA:58,25,0,33 +BRDA:58,25,1,6 +BRDA:92,26,0,204 +BRDA:92,26,1,306 +BRDA:92,27,0,510 +BRDA:92,27,1,306 +BRDA:94,28,0,82 +BRDA:94,28,1,224 +BRDA:97,29,0,78 +BRDA:97,29,1,228 +BRDA:97,30,0,306 +BRDA:97,30,1,280 +BRDA:97,30,2,254 +BRDA:105,31,0,30 +BRDA:105,31,1,276 +BRDA:115,32,0,1 +BRDA:115,32,1,400 +BRDA:128,33,0,5 +BRDA:128,33,1,2254 +BRDA:134,34,0,1 +BRDA:134,34,1,2253 +BRDA:138,35,0,685 +BRDA:138,35,1,1568 +BRDA:140,36,0,1084 +BRDA:140,36,1,484 +BRF:75 +BRH:75 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/read-entry.js +FN:7,(anonymous_0) +FN:66,(anonymous_1) +FN:85,(anonymous_2) +FNF:3 +FNH:3 +FNDA:4004,(anonymous_0) +FNDA:2222,(anonymous_1) +FNDA:457,(anonymous_2) +DA:2,11 +DA:3,11 +DA:5,11 +DA:6,11 +DA:8,4004 +DA:9,4004 +DA:10,4004 +DA:11,4004 +DA:12,4004 +DA:13,4004 +DA:14,4004 +DA:15,4004 +DA:16,4004 +DA:17,4004 +DA:18,4004 +DA:29,3241 +DA:37,760 +DA:38,760 +DA:43,3 +DA:46,4004 +DA:47,4004 +DA:48,4004 +DA:49,3720 +DA:50,4004 +DA:51,4004 +DA:52,4004 +DA:53,4004 +DA:54,4004 +DA:55,4004 +DA:56,4004 +DA:57,4004 +DA:58,4004 +DA:59,4004 +DA:60,4004 +DA:62,4004 +DA:63,4004 +DA:67,2222 +DA:68,2222 +DA:69,2 +DA:71,2220 +DA:72,2220 +DA:73,2220 +DA:74,2220 +DA:75,2220 +DA:76,673 +DA:78,1547 +DA:79,132 +DA:82,1415 +DA:86,457 +DA:89,6384 +DA:91,2657 +LF:51 +LH:51 +BRDA:18,0,0,1502 +BRDA:18,0,1,1502 +BRDA:18,0,2,1565 +BRDA:18,0,3,1710 +BRDA:18,0,4,1712 +BRDA:18,0,5,1714 +BRDA:18,0,6,3239 +BRDA:18,0,7,3241 +BRDA:18,0,8,3241 +BRDA:18,0,9,3241 +BRDA:18,0,10,41 +BRDA:18,0,11,121 +BRDA:18,0,12,121 +BRDA:18,0,13,165 +BRDA:18,0,14,760 +BRDA:18,0,15,760 +BRDA:18,0,16,3 +BRDA:48,1,0,3720 +BRDA:48,1,1,284 +BRDA:62,2,0,412 +BRDA:62,2,1,3592 +BRDA:63,3,0,45 +BRDA:63,3,1,3959 +BRDA:68,4,0,2 +BRDA:68,4,1,2220 +BRDA:75,5,0,673 +BRDA:75,5,1,1547 +BRDA:78,6,0,132 +BRDA:78,6,1,1415 +BRDA:89,7,0,2657 +BRDA:89,7,1,3727 +BRDA:89,8,0,6384 +BRDA:89,8,1,2702 +BRDA:89,8,2,2701 +BRDA:90,9,0,2701 +BRDA:90,9,1,89 +BRF:36 +BRH:36 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/replace.js +FN:20,(anonymous_0) +FN:38,(anonymous_1) +FN:92,(anonymous_2) +FN:101,(anonymous_3) +FN:105,(anonymous_4) +FN:106,(anonymous_5) +FN:108,(anonymous_6) +FN:119,(anonymous_7) +FN:156,(anonymous_8) +FN:159,(anonymous_9) +FN:168,(anonymous_10) +FN:171,(anonymous_11) +FN:191,(anonymous_12) +FN:192,(anonymous_13) +FN:198,(anonymous_14) +FN:206,(anonymous_15) +FN:213,(anonymous_16) +FN:214,(anonymous_17) +FNF:18 +FNH:18 +FNDA:70,(anonymous_0) +FNDA:26,(anonymous_1) +FNDA:18,(anonymous_2) +FNDA:41,(anonymous_3) +FNDA:37,(anonymous_4) +FNDA:37,(anonymous_5) +FNDA:4,(anonymous_6) +FNDA:112,(anonymous_7) +FNDA:41,(anonymous_8) +FNDA:45,(anonymous_9) +FNDA:39,(anonymous_10) +FNDA:37,(anonymous_11) +FNDA:18,(anonymous_12) +FNDA:19,(anonymous_13) +FNDA:3,(anonymous_14) +FNDA:34,(anonymous_15) +FNDA:3,(anonymous_16) +FNDA:1,(anonymous_17) +DA:4,3 +DA:5,3 +DA:6,3 +DA:7,3 +DA:8,3 +DA:9,3 +DA:10,3 +DA:18,3 +DA:20,3 +DA:21,70 +DA:23,70 +DA:24,1 +DA:26,69 +DA:27,1 +DA:29,68 +DA:30,1 +DA:32,67 +DA:34,67 +DA:38,3 +DA:39,26 +DA:41,26 +DA:45,26 +DA:46,26 +DA:47,26 +DA:49,4 +DA:50,2 +DA:52,2 +DA:55,24 +DA:56,22 +DA:58,22 +DA:59,61 +DA:60,63 +DA:64,61 +DA:65,2 +DA:67,59 +DA:68,2 +DA:71,55 +DA:72,55 +DA:73,8 +DA:74,47 +DA:75,47 +DA:76,2 +DA:79,45 +DA:80,45 +DA:81,28 +DA:83,18 +DA:85,18 +DA:87,26 +DA:88,8 +DA:92,3 +DA:93,18 +DA:97,18 +DA:98,18 +DA:101,3 +DA:102,41 +DA:103,41 +DA:105,41 +DA:106,37 +DA:107,37 +DA:108,4 +DA:110,33 +DA:113,37 +DA:114,37 +DA:115,8 +DA:117,29 +DA:118,29 +DA:119,29 +DA:120,112 +DA:121,2 +DA:122,110 +DA:123,110 +DA:124,6 +DA:129,104 +DA:130,2 +DA:133,102 +DA:134,4 +DA:136,98 +DA:137,98 +DA:138,13 +DA:140,85 +DA:141,85 +DA:142,4 +DA:144,81 +DA:145,81 +DA:146,4 +DA:148,77 +DA:149,46 +DA:150,77 +DA:151,77 +DA:153,29 +DA:156,41 +DA:157,41 +DA:158,41 +DA:159,41 +DA:160,45 +DA:161,4 +DA:162,4 +DA:165,41 +DA:166,2 +DA:168,39 +DA:169,39 +DA:170,2 +DA:171,37 +DA:172,37 +DA:173,4 +DA:174,33 +DA:178,33 +DA:179,33 +DA:180,33 +DA:181,33 +DA:185,41 +DA:188,41 +DA:191,3 +DA:192,18 +DA:193,19 +DA:194,1 +DA:198,3 +DA:201,18 +DA:203,18 +DA:206,3 +DA:207,34 +DA:208,33 +DA:209,33 +DA:210,1 +DA:213,3 +DA:214,1 +DA:216,32 +DA:218,33 +LF:128 +LH:128 +BRDA:23,0,0,1 +BRDA:23,0,1,69 +BRDA:26,1,0,1 +BRDA:26,1,1,68 +BRDA:29,2,0,1 +BRDA:29,2,1,67 +BRDA:29,3,0,68 +BRDA:29,3,1,68 +BRDA:29,3,2,68 +BRDA:34,4,0,26 +BRDA:34,4,1,41 +BRDA:49,5,0,2 +BRDA:49,5,1,2 +BRDA:64,6,0,2 +BRDA:64,6,1,59 +BRDA:64,7,0,61 +BRDA:64,7,1,16 +BRDA:64,7,2,2 +BRDA:67,8,0,2 +BRDA:67,8,1,57 +BRDA:72,9,0,8 +BRDA:72,9,1,47 +BRDA:75,10,0,2 +BRDA:75,10,1,45 +BRDA:80,11,0,28 +BRDA:80,11,1,17 +BRDA:87,12,0,8 +BRDA:87,12,1,18 +BRDA:107,13,0,4 +BRDA:107,13,1,33 +BRDA:114,14,0,8 +BRDA:114,14,1,29 +BRDA:120,15,0,2 +BRDA:120,15,1,110 +BRDA:123,16,0,6 +BRDA:123,16,1,104 +BRDA:123,17,0,110 +BRDA:123,17,1,12 +BRDA:129,18,0,2 +BRDA:129,18,1,102 +BRDA:129,19,0,104 +BRDA:129,19,1,27 +BRDA:129,19,2,2 +BRDA:133,20,0,4 +BRDA:133,20,1,98 +BRDA:137,21,0,13 +BRDA:137,21,1,85 +BRDA:141,22,0,4 +BRDA:141,22,1,81 +BRDA:145,23,0,4 +BRDA:145,23,1,77 +BRDA:148,24,0,46 +BRDA:148,24,1,31 +BRDA:160,25,0,4 +BRDA:160,25,1,41 +BRDA:160,26,0,45 +BRDA:160,26,1,6 +BRDA:160,26,2,4 +BRDA:165,27,0,2 +BRDA:165,27,1,39 +BRDA:169,28,0,2 +BRDA:169,28,1,37 +BRDA:172,29,0,4 +BRDA:172,29,1,33 +BRDA:188,30,0,24 +BRDA:188,30,1,17 +BRDA:193,31,0,1 +BRDA:193,31,1,18 +BRDA:209,32,0,1 +BRDA:209,32,1,32 +BRF:70 +BRH:70 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/types.js +FN:44,(anonymous_0) +FNF:1 +FNH:1 +FNDA:294,(anonymous_0) +DA:3,14 +DA:44,294 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/unpack.js +FN:37,(anonymous_0) +FN:43,(anonymous_1) +FN:47,(anonymous_2) +FN:117,(anonymous_3) +FN:120,(anonymous_4) +FN:129,(anonymous_5) +FN:168,(anonymous_6) +FN:194,(anonymous_7) +FN:207,(anonymous_8) +FN:222,(anonymous_9) +FN:233,(anonymous_10) +FN:237,(anonymous_11) +FN:241,(anonymous_12) +FN:247,(anonymous_13) +FN:250,(anonymous_14) +FN:257,(anonymous_15) +FN:260,(anonymous_16) +FN:277,(anonymous_17) +FN:279,(anonymous_18) +FN:284,(anonymous_19) +FN:305,(anonymous_20) +FN:310,(anonymous_21) +FN:314,(anonymous_22) +FN:318,(anonymous_23) +FN:322,(anonymous_24) +FN:327,(anonymous_25) +FN:333,(anonymous_26) +FN:335,(anonymous_27) +FN:338,(anonymous_28) +FN:348,(anonymous_29) +FN:350,(anonymous_30) +FN:352,(anonymous_31) +FN:357,(anonymous_32) +FN:379,(anonymous_33) +FN:381,(anonymous_34) +FN:391,(anonymous_35) +FN:395,(anonymous_36) +FN:425,(anonymous_37) +FN:428,(anonymous_38) +FN:441,(anonymous_39) +FN:449,(anonymous_40) +FN:465,(anonymous_41) +FN:483,(anonymous_42) +FN:502,(anonymous_43) +FNF:44 +FNH:44 +FNDA:60,(anonymous_0) +FNDA:134,(anonymous_1) +FNDA:109,(anonymous_2) +FNDA:571,(anonymous_3) +FNDA:473,(anonymous_4) +FNDA:571,(anonymous_5) +FNDA:571,(anonymous_6) +FNDA:39,(anonymous_7) +FNDA:451,(anonymous_8) +FNDA:473,(anonymous_9) +FNDA:30,(anonymous_10) +FNDA:30,(anonymous_11) +FNDA:221,(anonymous_12) +FNDA:2,(anonymous_13) +FNDA:421,(anonymous_14) +FNDA:219,(anonymous_15) +FNDA:219,(anonymous_16) +FNDA:97,(anonymous_17) +FNDA:97,(anonymous_18) +FNDA:171,(anonymous_19) +FNDA:6,(anonymous_20) +FNDA:21,(anonymous_21) +FNDA:19,(anonymous_22) +FNDA:354,(anonymous_23) +FNDA:364,(anonymous_24) +FNDA:4,(anonymous_25) +FNDA:354,(anonymous_26) +FNDA:354,(anonymous_27) +FNDA:342,(anonymous_28) +FNDA:2,(anonymous_29) +FNDA:5,(anonymous_30) +FNDA:6,(anonymous_31) +FNDA:528,(anonymous_32) +FNDA:21,(anonymous_33) +FNDA:21,(anonymous_34) +FNDA:59,(anonymous_35) +FNDA:200,(anonymous_36) +FNDA:93,(anonymous_37) +FNDA:6,(anonymous_38) +FNDA:86,(anonymous_39) +FNDA:86,(anonymous_40) +FNDA:76,(anonymous_41) +FNDA:276,(anonymous_42) +FNDA:19,(anonymous_43) +DA:3,3 +DA:4,3 +DA:5,3 +DA:6,3 +DA:7,3 +DA:8,3 +DA:9,3 +DA:10,3 +DA:11,3 +DA:13,3 +DA:14,3 +DA:15,3 +DA:16,3 +DA:17,3 +DA:18,3 +DA:19,3 +DA:20,3 +DA:21,3 +DA:22,3 +DA:23,3 +DA:24,3 +DA:25,3 +DA:26,3 +DA:27,3 +DA:28,3 +DA:29,3 +DA:30,3 +DA:31,3 +DA:32,3 +DA:33,3 +DA:34,3 +DA:37,3 +DA:38,60 +DA:44,134 +DA:45,4 +DA:47,134 +DA:48,109 +DA:49,109 +DA:52,134 +DA:54,134 +DA:55,134 +DA:57,134 +DA:58,134 +DA:60,134 +DA:62,134 +DA:64,9 +DA:65,2 +DA:66,7 +DA:67,1 +DA:69,6 +DA:70,6 +DA:71,6 +DA:73,125 +DA:74,125 +DA:75,125 +DA:79,131 +DA:80,119 +DA:82,12 +DA:84,131 +DA:86,131 +DA:90,131 +DA:93,131 +DA:96,131 +DA:99,131 +DA:104,131 +DA:108,131 +DA:110,131 +DA:111,131 +DA:112,131 +DA:113,131 +DA:115,131 +DA:116,131 +DA:117,571 +DA:121,473 +DA:122,98 +DA:123,98 +DA:124,98 +DA:125,98 +DA:130,571 +DA:131,144 +DA:132,144 +DA:133,9 +DA:134,135 +DA:137,562 +DA:138,545 +DA:139,545 +DA:140,2 +DA:141,2 +DA:146,543 +DA:147,2 +DA:148,2 +DA:149,2 +DA:154,560 +DA:155,3 +DA:156,3 +DA:160,560 +DA:161,2 +DA:163,558 +DA:165,560 +DA:169,571 +DA:170,11 +DA:172,560 +DA:174,560 +DA:177,179 +DA:178,140 +DA:185,554 +DA:190,6 +DA:198,39 +DA:199,12 +DA:201,27 +DA:202,27 +DA:203,27 +DA:208,451 +DA:225,473 +DA:234,30 +DA:238,30 +DA:242,221 +DA:243,221 +DA:247,221 +DA:249,221 +DA:250,221 +DA:251,421 +DA:252,1 +DA:253,1 +DA:256,421 +DA:257,219 +DA:260,221 +DA:261,219 +DA:262,192 +DA:263,192 +DA:266,219 +DA:267,10 +DA:268,10 +DA:271,219 +DA:274,221 +DA:278,97 +DA:279,97 +DA:280,97 +DA:281,3 +DA:283,94 +DA:284,94 +DA:285,171 +DA:286,94 +DA:287,94 +DA:291,94 +DA:292,73 +DA:293,73 +DA:296,94 +DA:297,4 +DA:298,4 +DA:301,94 +DA:306,6 +DA:307,6 +DA:311,21 +DA:315,19 +DA:319,354 +DA:323,364 +DA:324,364 +DA:328,4 +DA:329,4 +DA:334,354 +DA:335,354 +DA:336,354 +DA:337,12 +DA:338,342 +DA:339,342 +DA:340,2 +DA:341,340 +DA:342,318 +DA:343,22 +DA:344,16 +DA:345,11 +DA:346,9 +DA:348,2 +DA:350,5 +DA:352,6 +DA:358,528 +DA:359,1 +DA:361,527 +DA:365,314 +DA:368,19 +DA:371,21 +DA:375,173 +DA:381,21 +DA:382,21 +DA:383,1 +DA:384,20 +DA:385,20 +DA:392,59 +DA:396,200 +DA:397,200 +DA:398,9 +DA:399,191 +DA:400,191 +DA:401,17 +DA:402,2 +DA:403,15 +DA:404,2 +DA:406,13 +DA:407,13 +DA:408,6 +DA:409,3 +DA:410,2 +DA:412,3 +DA:414,7 +DA:415,12 +DA:417,1 +DA:421,174 +DA:426,93 +DA:428,93 +DA:429,6 +DA:430,6 +DA:435,93 +DA:436,93 +DA:438,1 +DA:441,92 +DA:442,86 +DA:443,86 +DA:445,1 +DA:449,92 +DA:450,86 +DA:451,86 +DA:452,58 +DA:454,85 +DA:455,12 +DA:457,82 +DA:459,4 +DA:466,76 +DA:467,76 +DA:468,76 +DA:469,1 +DA:470,75 +DA:471,56 +DA:472,56 +DA:475,75 +DA:476,4 +DA:477,4 +DA:480,75 +DA:484,276 +DA:485,276 +DA:498,4 +DA:503,19 +DA:504,19 +DA:505,17 +DA:507,2 +DA:512,3 +DA:513,3 +LF:247 +LH:247 +BRDA:38,0,0,24 +BRDA:38,0,1,36 +BRDA:39,1,0,26 +BRDA:39,1,1,10 +BRDA:44,2,0,4 +BRDA:44,2,1,130 +BRDA:60,3,0,134 +BRDA:60,3,1,134 +BRDA:62,4,0,9 +BRDA:62,4,1,125 +BRDA:62,5,0,134 +BRDA:62,5,1,126 +BRDA:64,6,0,2 +BRDA:64,6,1,7 +BRDA:64,7,0,9 +BRDA:64,7,1,8 +BRDA:66,8,0,1 +BRDA:66,8,1,6 +BRDA:79,9,0,119 +BRDA:79,9,1,12 +BRDA:79,10,0,131 +BRDA:79,10,1,125 +BRDA:80,11,0,119 +BRDA:80,11,1,119 +BRDA:84,12,0,11 +BRDA:84,12,1,120 +BRDA:84,13,0,131 +BRDA:84,13,1,126 +BRDA:84,13,2,11 +BRDA:86,14,0,11 +BRDA:86,14,1,120 +BRDA:86,15,0,131 +BRDA:86,15,1,126 +BRDA:86,15,2,11 +BRDA:90,16,0,131 +BRDA:90,16,1,128 +BRDA:110,17,0,131 +BRDA:110,17,1,11 +BRDA:111,18,0,131 +BRDA:111,18,1,129 +BRDA:113,19,0,1 +BRDA:113,19,1,130 +BRDA:115,20,0,131 +BRDA:115,20,1,131 +BRDA:116,21,0,131 +BRDA:116,21,1,127 +BRDA:121,22,0,98 +BRDA:121,22,1,375 +BRDA:121,23,0,473 +BRDA:121,23,1,178 +BRDA:130,24,0,144 +BRDA:130,24,1,427 +BRDA:132,25,0,9 +BRDA:132,25,1,135 +BRDA:137,26,0,545 +BRDA:137,26,1,17 +BRDA:139,27,0,2 +BRDA:139,27,1,543 +BRDA:146,28,0,2 +BRDA:146,28,1,541 +BRDA:154,29,0,3 +BRDA:154,29,1,557 +BRDA:156,30,0,2 +BRDA:156,30,1,1 +BRDA:160,31,0,2 +BRDA:160,31,1,558 +BRDA:169,32,0,11 +BRDA:169,32,1,560 +BRDA:174,33,0,179 +BRDA:174,33,1,179 +BRDA:174,33,2,514 +BRDA:174,33,3,514 +BRDA:174,33,4,514 +BRDA:174,33,5,533 +BRDA:174,33,6,554 +BRDA:174,33,7,2 +BRDA:174,33,8,4 +BRDA:174,33,9,6 +BRDA:177,34,0,140 +BRDA:177,34,1,39 +BRDA:198,35,0,12 +BRDA:198,35,1,27 +BRDA:225,36,0,473 +BRDA:225,36,1,34 +BRDA:225,36,2,31 +BRDA:225,36,3,23 +BRDA:225,36,4,15 +BRDA:225,36,5,455 +BRDA:225,36,6,12 +BRDA:225,36,7,447 +BRDA:225,36,8,4 +BRDA:242,37,0,221 +BRDA:242,37,1,30 +BRDA:251,38,0,1 +BRDA:251,38,1,420 +BRDA:256,39,0,219 +BRDA:256,39,1,202 +BRDA:261,40,0,192 +BRDA:261,40,1,27 +BRDA:261,41,0,219 +BRDA:261,41,1,193 +BRDA:263,42,0,192 +BRDA:263,42,1,156 +BRDA:266,43,0,10 +BRDA:266,43,1,209 +BRDA:278,44,0,97 +BRDA:278,44,1,20 +BRDA:280,45,0,3 +BRDA:280,45,1,94 +BRDA:285,46,0,94 +BRDA:285,46,1,77 +BRDA:291,47,0,73 +BRDA:291,47,1,21 +BRDA:291,48,0,94 +BRDA:291,48,1,74 +BRDA:293,49,0,73 +BRDA:293,49,1,71 +BRDA:296,50,0,4 +BRDA:296,50,1,90 +BRDA:336,51,0,12 +BRDA:336,51,1,342 +BRDA:339,52,0,2 +BRDA:339,52,1,340 +BRDA:339,53,0,342 +BRDA:339,53,1,27 +BRDA:339,53,2,26 +BRDA:339,53,3,1 +BRDA:341,54,0,318 +BRDA:341,54,1,22 +BRDA:341,55,0,340 +BRDA:341,55,1,25 +BRDA:341,55,2,6 +BRDA:341,55,3,5 +BRDA:343,56,0,16 +BRDA:343,56,1,6 +BRDA:344,57,0,11 +BRDA:344,57,1,5 +BRDA:345,58,0,9 +BRDA:345,58,1,2 +BRDA:345,59,0,11 +BRDA:345,59,1,8 +BRDA:358,60,0,1 +BRDA:358,60,1,527 +BRDA:361,61,0,314 +BRDA:361,61,1,314 +BRDA:361,61,2,314 +BRDA:361,61,3,19 +BRDA:361,61,4,21 +BRDA:361,61,5,173 +BRDA:361,61,6,173 +BRDA:382,62,0,1 +BRDA:382,62,1,20 +BRDA:397,63,0,9 +BRDA:397,63,1,191 +BRDA:401,64,0,2 +BRDA:401,64,1,15 +BRDA:401,65,0,17 +BRDA:401,65,1,16 +BRDA:401,65,2,1 +BRDA:403,66,0,2 +BRDA:403,66,1,13 +BRDA:403,67,0,15 +BRDA:403,67,1,4 +BRDA:403,67,2,3 +BRDA:407,68,0,6 +BRDA:407,68,1,7 +BRDA:408,69,0,3 +BRDA:408,69,1,3 +BRDA:409,70,0,2 +BRDA:409,70,1,1 +BRDA:409,71,0,3 +BRDA:409,71,1,2 +BRDA:426,72,0,93 +BRDA:426,72,1,30 +BRDA:451,73,0,58 +BRDA:451,73,1,28 +BRDA:451,74,0,86 +BRDA:451,74,1,59 +BRDA:452,75,0,58 +BRDA:452,75,1,31 +BRDA:454,76,0,12 +BRDA:454,76,1,73 +BRDA:466,77,0,76 +BRDA:466,77,1,19 +BRDA:468,78,0,1 +BRDA:468,78,1,75 +BRDA:470,79,0,56 +BRDA:470,79,1,19 +BRDA:470,80,0,75 +BRDA:470,80,1,57 +BRDA:472,81,0,56 +BRDA:472,81,1,52 +BRDA:475,82,0,4 +BRDA:475,82,1,71 +BRF:194 +BRH:194 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/update.js +FN:9,(anonymous_0) +FN:27,(anonymous_1) +FN:33,(anonymous_2) +FN:35,(anonymous_3) +FNF:4 +FNH:4 +FNDA:36,(anonymous_0) +FNDA:33,(anonymous_1) +FNDA:2,(anonymous_2) +FNDA:24,(anonymous_3) +DA:5,2 +DA:6,2 +DA:9,2 +DA:10,36 +DA:12,36 +DA:13,1 +DA:15,35 +DA:16,1 +DA:18,34 +DA:19,1 +DA:21,33 +DA:23,33 +DA:24,33 +DA:27,2 +DA:28,33 +DA:30,33 +DA:31,32 +DA:33,33 +DA:34,2 +DA:35,24 +LF:20 +LH:20 +BRDA:12,0,0,1 +BRDA:12,0,1,35 +BRDA:15,1,0,1 +BRDA:15,1,1,34 +BRDA:18,2,0,1 +BRDA:18,2,1,33 +BRDA:18,3,0,34 +BRDA:18,3,1,34 +BRDA:18,3,2,34 +BRDA:30,4,0,32 +BRDA:30,4,1,1 +BRDA:33,5,0,1 +BRDA:33,5,1,32 +BRDA:34,6,0,2 +BRDA:34,6,1,1 +BRF:15 +BRH:15 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/warn-mixin.js +FN:2,(anonymous_0) +FN:3,(anonymous_1) +FNF:2 +FNH:2 +FNDA:27,(anonymous_0) +FNDA:333,(anonymous_1) +DA:2,27 +DA:4,333 +DA:5,184 +DA:6,149 +DA:7,2 +DA:9,147 +DA:10,147 +DA:11,147 +LF:8 +LH:8 +BRDA:4,0,0,184 +BRDA:4,0,1,149 +BRDA:6,1,0,2 +BRDA:6,1,1,147 +BRF:4 +BRH:4 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/winchars.js +FN:14,(anonymous_0) +FN:17,(anonymous_1) +FN:18,(anonymous_2) +FN:21,(anonymous_3) +FN:21,(anonymous_4) +FN:22,(anonymous_5) +FN:22,(anonymous_6) +FNF:7 +FNH:7 +FNDA:45,(anonymous_0) +FNDA:45,(anonymous_1) +FNDA:45,(anonymous_2) +FNDA:6,(anonymous_3) +FNDA:30,(anonymous_4) +FNDA:4,(anonymous_5) +FNDA:20,(anonymous_6) +DA:6,9 +DA:14,9 +DA:15,45 +DA:17,45 +DA:18,45 +DA:20,9 +DA:21,30 +DA:22,20 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/Users/isaacs/dev/js/tar/lib/write-entry.js +FN:29,(anonymous_0) +FN:77,(anonymous_1) +FN:78,(anonymous_2) +FN:85,(anonymous_3) +FN:95,(anonymous_4) +FN:105,(anonymous_5) +FN:144,(anonymous_6) +FN:152,(anonymous_7) +FN:153,(anonymous_8) +FN:160,(anonymous_9) +FN:166,(anonymous_10) +FN:174,(anonymous_11) +FN:192,(anonymous_12) +FN:193,(anonymous_13) +FN:200,(anonymous_14) +FN:207,(anonymous_15) +FN:208,(anonymous_16) +FN:210,(anonymous_17) +FN:215,(anonymous_18) +FN:219,(anonymous_19) +FN:250,(anonymous_20) +FN:264,(anonymous_21) +FN:268,(anonymous_22) +FN:272,(anonymous_23) +FN:276,(anonymous_24) +FN:280,(anonymous_25) +FN:292,(anonymous_26) +FN:298,(anonymous_27) +FN:377,(anonymous_28) +FN:385,(anonymous_29) +FN:395,(anonymous_30) +FNF:31 +FNH:31 +FNDA:6570,(anonymous_0) +FNDA:34,(anonymous_1) +FNDA:34,(anonymous_2) +FNDA:6566,(anonymous_3) +FNDA:6566,(anonymous_4) +FNDA:6563,(anonymous_5) +FNDA:867,(anonymous_6) +FNDA:32,(anonymous_7) +FNDA:32,(anonymous_8) +FNDA:32,(anonymous_9) +FNDA:1,(anonymous_10) +FNDA:5664,(anonymous_11) +FNDA:5568,(anonymous_12) +FNDA:5568,(anonymous_13) +FNDA:5617,(anonymous_14) +FNDA:7336,(anonymous_15) +FNDA:7336,(anonymous_16) +FNDA:1,(anonymous_17) +FNDA:5566,(anonymous_18) +FNDA:7393,(anonymous_19) +FNDA:5565,(anonymous_20) +FNDA:99,(anonymous_21) +FNDA:20,(anonymous_22) +FNDA:2,(anonymous_23) +FNDA:53,(anonymous_24) +FNDA:59,(anonymous_25) +FNDA:51,(anonymous_26) +FNDA:33,(anonymous_27) +FNDA:52,(anonymous_28) +FNDA:29,(anonymous_29) +FNDA:6566,(anonymous_30) +DA:2,6 +DA:3,6 +DA:4,6 +DA:5,6 +DA:6,6 +DA:7,6 +DA:9,6 +DA:10,6 +DA:11,6 +DA:12,6 +DA:13,6 +DA:14,6 +DA:15,6 +DA:16,6 +DA:17,6 +DA:18,6 +DA:19,6 +DA:20,6 +DA:21,6 +DA:22,6 +DA:23,6 +DA:24,6 +DA:25,6 +DA:26,6 +DA:28,6 +DA:30,6570 +DA:31,6570 +DA:32,6570 +DA:33,1 +DA:34,6569 +DA:36,6569 +DA:38,6569 +DA:39,6569 +DA:40,6569 +DA:41,6569 +DA:42,6569 +DA:43,6569 +DA:44,6569 +DA:45,6569 +DA:46,6569 +DA:47,6569 +DA:49,6569 +DA:50,6515 +DA:52,6569 +DA:55,4 +DA:56,4 +DA:57,2 +DA:60,6567 +DA:61,6567 +DA:62,2 +DA:63,2 +DA:66,6567 +DA:68,6567 +DA:69,1 +DA:71,6567 +DA:72,6513 +DA:74,54 +DA:78,34 +DA:79,34 +DA:80,1 +DA:81,33 +DA:86,6566 +DA:87,6566 +DA:88,6566 +DA:89,902 +DA:90,6566 +DA:91,6566 +DA:92,6566 +DA:96,6566 +DA:97,5664 +DA:98,867 +DA:99,34 +DA:101,1 +DA:106,6563 +DA:107,4 +DA:109,6563 +DA:126,6563 +DA:127,17 +DA:141,6563 +DA:145,867 +DA:146,859 +DA:147,867 +DA:148,867 +DA:149,867 +DA:153,32 +DA:154,32 +DA:155,1 +DA:156,31 +DA:161,32 +DA:162,32 +DA:163,32 +DA:167,1 +DA:168,1 +DA:169,1 +DA:170,1 +DA:171,1 +DA:175,5664 +DA:176,7 +DA:177,7 +DA:178,2 +DA:179,2 +DA:180,1 +DA:182,6 +DA:185,5663 +DA:186,5663 +DA:187,42 +DA:189,5621 +DA:193,5568 +DA:194,5568 +DA:195,2 +DA:196,5566 +DA:201,5617 +DA:202,5617 +DA:203,5617 +DA:204,5617 +DA:208,7336 +DA:209,7336 +DA:210,1 +DA:211,7335 +DA:216,5566 +DA:220,7393 +DA:221,2 +DA:222,2 +DA:223,2 +DA:224,2 +DA:225,2 +DA:229,7392 +DA:230,5614 +DA:231,1700449 +DA:232,1700449 +DA:233,1700449 +DA:237,7392 +DA:239,7392 +DA:240,7392 +DA:241,7392 +DA:242,7392 +DA:244,7392 +DA:246,7392 +DA:247,5614 +DA:248,2 +DA:249,5614 +DA:250,5614 +DA:251,5614 +DA:254,1778 +DA:255,1754 +DA:256,1754 +DA:258,1778 +DA:259,1778 +DA:265,99 +DA:269,20 +DA:273,2 +DA:277,53 +DA:281,59 +DA:282,59 +DA:283,59 +DA:284,58 +DA:285,57 +DA:287,59 +DA:288,2 +DA:293,51 +DA:297,6 +DA:299,33 +DA:300,33 +DA:301,33 +DA:302,33 +DA:303,33 +DA:304,33 +DA:305,33 +DA:307,33 +DA:308,33 +DA:309,33 +DA:310,0 +DA:312,33 +DA:313,33 +DA:314,33 +DA:315,26 +DA:316,33 +DA:317,33 +DA:318,33 +DA:319,33 +DA:320,33 +DA:321,33 +DA:322,33 +DA:323,33 +DA:324,33 +DA:326,33 +DA:327,27 +DA:329,33 +DA:330,2 +DA:331,2 +DA:335,1 +DA:338,32 +DA:339,32 +DA:341,32 +DA:357,32 +DA:358,14 +DA:373,32 +DA:374,32 +DA:378,52 +DA:379,52 +DA:380,1 +DA:381,51 +DA:382,51 +DA:386,29 +DA:387,22 +DA:388,29 +DA:392,6 +DA:393,6 +DA:395,6 +DA:396,6566 +DA:401,6 +LF:211 +LH:210 +BRDA:30,0,0,6570 +BRDA:30,0,1,2 +BRDA:32,1,0,1 +BRDA:32,1,1,6569 +BRDA:38,2,0,6569 +BRDA:38,2,1,6569 +BRDA:39,3,0,6569 +BRDA:39,3,1,37 +BRDA:40,4,0,6569 +BRDA:40,4,1,6563 +BRDA:41,5,0,6569 +BRDA:41,5,1,53 +BRDA:42,6,0,6569 +BRDA:42,6,1,55 +BRDA:44,7,0,6569 +BRDA:44,7,1,4 +BRDA:49,8,0,6515 +BRDA:49,8,1,54 +BRDA:52,9,0,4 +BRDA:52,9,1,6565 +BRDA:52,10,0,6569 +BRDA:52,10,1,6564 +BRDA:60,11,0,6567 +BRDA:60,11,1,6565 +BRDA:61,12,0,2 +BRDA:61,12,1,6565 +BRDA:66,13,0,6567 +BRDA:66,13,1,54 +BRDA:68,14,0,1 +BRDA:68,14,1,6566 +BRDA:71,15,0,6513 +BRDA:71,15,1,54 +BRDA:79,16,0,1 +BRDA:79,16,1,33 +BRDA:88,17,0,902 +BRDA:88,17,1,5664 +BRDA:96,18,0,5664 +BRDA:96,18,1,867 +BRDA:96,18,2,34 +BRDA:96,18,3,1 +BRDA:106,19,0,4 +BRDA:106,19,1,6559 +BRDA:106,20,0,6563 +BRDA:106,20,1,867 +BRDA:115,21,0,10 +BRDA:115,21,1,6553 +BRDA:116,22,0,10 +BRDA:116,22,1,6553 +BRDA:118,23,0,6 +BRDA:118,23,1,6557 +BRDA:120,24,0,10 +BRDA:120,24,1,6553 +BRDA:121,25,0,6552 +BRDA:121,25,1,1 +BRDA:122,26,0,10 +BRDA:122,26,1,6553 +BRDA:123,27,0,10 +BRDA:123,27,1,6553 +BRDA:126,28,0,17 +BRDA:126,28,1,6546 +BRDA:126,29,0,6563 +BRDA:126,29,1,18 +BRDA:128,30,0,4 +BRDA:128,30,1,13 +BRDA:129,31,0,4 +BRDA:129,31,1,13 +BRDA:130,32,0,4 +BRDA:130,32,1,13 +BRDA:131,33,0,2 +BRDA:131,33,1,15 +BRDA:135,34,0,4 +BRDA:135,34,1,13 +BRDA:136,35,0,4 +BRDA:136,35,1,13 +BRDA:137,36,0,4 +BRDA:137,36,1,13 +BRDA:138,37,0,4 +BRDA:138,37,1,13 +BRDA:139,38,0,4 +BRDA:139,38,1,13 +BRDA:145,39,0,859 +BRDA:145,39,1,8 +BRDA:154,40,0,1 +BRDA:154,40,1,31 +BRDA:175,41,0,7 +BRDA:175,41,1,5657 +BRDA:177,42,0,2 +BRDA:177,42,1,5 +BRDA:179,43,0,1 +BRDA:179,43,1,1 +BRDA:186,44,0,42 +BRDA:186,44,1,5621 +BRDA:194,45,0,2 +BRDA:194,45,1,5566 +BRDA:209,46,0,1 +BRDA:209,46,1,7335 +BRDA:220,47,0,2 +BRDA:220,47,1,7391 +BRDA:220,48,0,7393 +BRDA:220,48,1,2 +BRDA:229,49,0,5614 +BRDA:229,49,1,1778 +BRDA:230,50,0,1706063 +BRDA:230,50,1,1700456 +BRDA:237,51,0,7338 +BRDA:237,51,1,54 +BRDA:237,52,0,7392 +BRDA:237,52,1,7369 +BRDA:246,53,0,5614 +BRDA:246,53,1,1778 +BRDA:247,54,0,2 +BRDA:247,54,1,5612 +BRDA:254,55,0,1754 +BRDA:254,55,1,24 +BRDA:287,56,0,2 +BRDA:287,56,1,57 +BRDA:299,57,0,33 +BRDA:299,57,1,4 +BRDA:309,58,0,0 +BRDA:309,58,1,33 +BRDA:309,59,0,33 +BRDA:309,59,1,2 +BRDA:314,60,0,26 +BRDA:314,60,1,7 +BRDA:316,61,0,1 +BRDA:316,61,1,32 +BRDA:317,62,0,1 +BRDA:317,62,1,32 +BRDA:318,63,0,1 +BRDA:318,63,1,32 +BRDA:319,64,0,1 +BRDA:319,64,1,32 +BRDA:321,65,0,0 +BRDA:321,65,1,33 +BRDA:322,66,0,1 +BRDA:322,66,1,32 +BRDA:323,67,0,1 +BRDA:323,67,1,32 +BRDA:326,68,0,27 +BRDA:326,68,1,6 +BRDA:329,69,0,2 +BRDA:329,69,1,31 +BRDA:329,70,0,33 +BRDA:329,70,1,3 +BRDA:347,71,0,1 +BRDA:347,71,1,31 +BRDA:348,72,0,1 +BRDA:348,72,1,31 +BRDA:350,73,0,0 +BRDA:350,73,1,32 +BRDA:352,74,0,1 +BRDA:352,74,1,31 +BRDA:353,75,0,1 +BRDA:353,75,1,31 +BRDA:354,76,0,1 +BRDA:354,76,1,31 +BRDA:357,77,0,14 +BRDA:357,77,1,18 +BRDA:357,78,0,32 +BRDA:357,78,1,14 +BRDA:359,79,0,1 +BRDA:359,79,1,13 +BRDA:360,80,0,1 +BRDA:360,80,1,13 +BRDA:361,81,0,1 +BRDA:361,81,1,13 +BRDA:362,82,0,0 +BRDA:362,82,1,14 +BRDA:366,83,0,1 +BRDA:366,83,1,13 +BRDA:367,84,0,1 +BRDA:367,84,1,13 +BRDA:368,85,0,1 +BRDA:368,85,1,13 +BRDA:369,86,0,1 +BRDA:369,86,1,13 +BRDA:370,87,0,1 +BRDA:370,87,1,13 +BRDA:379,88,0,1 +BRDA:379,88,1,51 +BRDA:386,89,0,22 +BRDA:386,89,1,7 +BRDA:396,90,0,5664 +BRDA:396,90,1,902 +BRDA:397,91,0,867 +BRDA:397,91,1,35 +BRDA:398,92,0,34 +BRDA:398,92,1,1 +BRF:188 +BRH:184 +end_of_record diff --git a/node_modules/tar/examples/extracter.js b/node_modules/tar/examples/extracter.js new file mode 100644 index 0000000000..f6253a72c5 --- /dev/null +++ b/node_modules/tar/examples/extracter.js @@ -0,0 +1,19 @@ +var tar = require("../tar.js") + , fs = require("fs") + + +function onError(err) { + console.error('An error occurred:', err) +} + +function onEnd() { + console.log('Extracted!') +} + +var extractor = tar.Extract({path: __dirname + "/extract"}) + .on('error', onError) + .on('end', onEnd); + +fs.createReadStream(__dirname + "/../test/fixtures/c.tar") + .on('error', onError) + .pipe(extractor); diff --git a/node_modules/tar/examples/packer.js b/node_modules/tar/examples/packer.js new file mode 100644 index 0000000000..039969ce30 --- /dev/null +++ b/node_modules/tar/examples/packer.js @@ -0,0 +1,24 @@ +var tar = require("../tar.js") + , fstream = require("fstream") + , fs = require("fs") + +var dirDest = fs.createWriteStream('dir.tar') + + +function onError(err) { + console.error('An error occurred:', err) +} + +function onEnd() { + console.log('Packed!') +} + +var packer = tar.Pack({ noProprietary: true }) + .on('error', onError) + .on('end', onEnd); + +// This must be a "directory" +fstream.Reader({ path: __dirname, type: "Directory" }) + .on('error', onError) + .pipe(packer) + .pipe(dirDest) diff --git a/node_modules/tar/examples/reader.js b/node_modules/tar/examples/reader.js new file mode 100644 index 0000000000..39f3f0888a --- /dev/null +++ b/node_modules/tar/examples/reader.js @@ -0,0 +1,36 @@ +var tar = require("../tar.js") + , fs = require("fs") + +fs.createReadStream(__dirname + "/../test/fixtures/c.tar") + .pipe(tar.Parse()) + .on("extendedHeader", function (e) { + console.error("extended pax header", e.props) + e.on("end", function () { + console.error("extended pax fields:", e.fields) + }) + }) + .on("ignoredEntry", function (e) { + console.error("ignoredEntry?!?", e.props) + }) + .on("longLinkpath", function (e) { + console.error("longLinkpath entry", e.props) + e.on("end", function () { + console.error("value=%j", e.body.toString()) + }) + }) + .on("longPath", function (e) { + console.error("longPath entry", e.props) + e.on("end", function () { + console.error("value=%j", e.body.toString()) + }) + }) + .on("entry", function (e) { + console.error("entry", e.props) + e.on("data", function (c) { + console.error(" >>>" + c.toString().replace(/\n/g, "\\n")) + }) + e.on("end", function () { + console.error(" << 0 + return !this._needDrain +} + +EntryWriter.prototype.end = function (c) { + // console.error(".. ew end") + if (c) this._buffer.push(c) + this._buffer.push(EOF) + this._ended = true + this._process() + this._needDrain = this._buffer.length > 0 +} + +EntryWriter.prototype.pause = function () { + // console.error(".. ew pause") + this._paused = true + this.emit("pause") +} + +EntryWriter.prototype.resume = function () { + // console.error(".. ew resume") + this._paused = false + this.emit("resume") + this._process() +} + +EntryWriter.prototype.add = function (entry) { + // console.error(".. ew add") + if (!this.parent) return this.emit("error", new Error("no parent")) + + // make sure that the _header and such is emitted, and clear out + // the _currentEntry link on the parent. + if (!this._ended) this.end() + + return this.parent.add(entry) +} + +EntryWriter.prototype._header = function () { + // console.error(".. ew header") + if (this._didHeader) return + this._didHeader = true + + var headerBlock = TarHeader.encode(this.props) + + if (this.props.needExtended && !this._meta) { + var me = this + + ExtendedHeaderWriter = ExtendedHeaderWriter || + require("./extended-header-writer.js") + + ExtendedHeaderWriter(this.props) + .on("data", function (c) { + me.emit("data", c) + }) + .on("error", function (er) { + me.emit("error", er) + }) + .end() + } + + // console.error(".. .. ew headerBlock emitting") + this.emit("data", headerBlock) + this.emit("header") +} + +EntryWriter.prototype._process = function () { + // console.error(".. .. ew process") + if (!this._didHeader && !this._meta) { + this._header() + } + + if (this._paused || this._processing) { + // console.error(".. .. .. paused=%j, processing=%j", this._paused, this._processing) + return + } + + this._processing = true + + var buf = this._buffer + for (var i = 0; i < buf.length; i ++) { + // console.error(".. .. .. i=%d", i) + + var c = buf[i] + + if (c === EOF) this._stream.end() + else this._stream.write(c) + + if (this._paused) { + // console.error(".. .. .. paused mid-emission") + this._processing = false + if (i < buf.length) { + this._needDrain = true + this._buffer = buf.slice(i + 1) + } + return + } + } + + // console.error(".. .. .. emitted") + this._buffer.length = 0 + this._processing = false + + // console.error(".. .. .. emitting drain") + this.emit("drain") +} + +EntryWriter.prototype.destroy = function () {} diff --git a/node_modules/tar/lib/entry.js b/node_modules/tar/lib/entry.js new file mode 100644 index 0000000000..591202bd3b --- /dev/null +++ b/node_modules/tar/lib/entry.js @@ -0,0 +1,220 @@ +// A passthrough read/write stream that sets its properties +// based on a header, extendedHeader, and globalHeader +// +// Can be either a file system object of some sort, or +// a pax/ustar metadata entry. + +module.exports = Entry + +var TarHeader = require("./header.js") + , tar = require("../tar") + , assert = require("assert").ok + , Stream = require("stream").Stream + , inherits = require("inherits") + , fstream = require("fstream").Abstract + +function Entry (header, extended, global) { + Stream.call(this) + this.readable = true + this.writable = true + + this._needDrain = false + this._paused = false + this._reading = false + this._ending = false + this._ended = false + this._remaining = 0 + this._abort = false + this._queue = [] + this._index = 0 + this._queueLen = 0 + + this._read = this._read.bind(this) + + this.props = {} + this._header = header + this._extended = extended || {} + + // globals can change throughout the course of + // a file parse operation. Freeze it at its current state. + this._global = {} + var me = this + Object.keys(global || {}).forEach(function (g) { + me._global[g] = global[g] + }) + + this._setProps() +} + +inherits(Entry, Stream) + +Entry.prototype.write = function (c) { + if (this._ending) this.error("write() after end()", null, true) + if (this._remaining === 0) { + this.error("invalid bytes past eof") + } + + // often we'll get a bunch of \0 at the end of the last write, + // since chunks will always be 512 bytes when reading a tarball. + if (c.length > this._remaining) { + c = c.slice(0, this._remaining) + } + this._remaining -= c.length + + // put it on the stack. + var ql = this._queueLen + this._queue.push(c) + this._queueLen ++ + + this._read() + + // either paused, or buffered + if (this._paused || ql > 0) { + this._needDrain = true + return false + } + + return true +} + +Entry.prototype.end = function (c) { + if (c) this.write(c) + this._ending = true + this._read() +} + +Entry.prototype.pause = function () { + this._paused = true + this.emit("pause") +} + +Entry.prototype.resume = function () { + // console.error(" Tar Entry resume", this.path) + this.emit("resume") + this._paused = false + this._read() + return this._queueLen - this._index > 1 +} + + // This is bound to the instance +Entry.prototype._read = function () { + // console.error(" Tar Entry _read", this.path) + + if (this._paused || this._reading || this._ended) return + + // set this flag so that event handlers don't inadvertently + // get multiple _read() calls running. + this._reading = true + + // have any data to emit? + while (this._index < this._queueLen && !this._paused) { + var chunk = this._queue[this._index ++] + this.emit("data", chunk) + } + + // check if we're drained + if (this._index >= this._queueLen) { + this._queue.length = this._queueLen = this._index = 0 + if (this._needDrain) { + this._needDrain = false + this.emit("drain") + } + if (this._ending) { + this._ended = true + this.emit("end") + } + } + + // if the queue gets too big, then pluck off whatever we can. + // this should be fairly rare. + var mql = this._maxQueueLen + if (this._queueLen > mql && this._index > 0) { + mql = Math.min(this._index, mql) + this._index -= mql + this._queueLen -= mql + this._queue = this._queue.slice(mql) + } + + this._reading = false +} + +Entry.prototype._setProps = function () { + // props = extended->global->header->{} + var header = this._header + , extended = this._extended + , global = this._global + , props = this.props + + // first get the values from the normal header. + var fields = tar.fields + for (var f = 0; fields[f] !== null; f ++) { + var field = fields[f] + , val = header[field] + if (typeof val !== "undefined") props[field] = val + } + + // next, the global header for this file. + // numeric values, etc, will have already been parsed. + ;[global, extended].forEach(function (p) { + Object.keys(p).forEach(function (f) { + if (typeof p[f] !== "undefined") props[f] = p[f] + }) + }) + + // no nulls allowed in path or linkpath + ;["path", "linkpath"].forEach(function (p) { + if (props.hasOwnProperty(p)) { + props[p] = props[p].split("\0")[0] + } + }) + + + // set date fields to be a proper date + ;["mtime", "ctime", "atime"].forEach(function (p) { + if (props.hasOwnProperty(p)) { + props[p] = new Date(props[p] * 1000) + } + }) + + // set the type so that we know what kind of file to create + var type + switch (tar.types[props.type]) { + case "OldFile": + case "ContiguousFile": + type = "File" + break + + case "GNUDumpDir": + type = "Directory" + break + + case undefined: + type = "Unknown" + break + + case "Link": + case "SymbolicLink": + case "CharacterDevice": + case "BlockDevice": + case "Directory": + case "FIFO": + default: + type = tar.types[props.type] + } + + this.type = type + this.path = props.path + this.size = props.size + + // size is special, since it signals when the file needs to end. + this._remaining = props.size +} + +// the parser may not call write if _abort is true. +// useful for skipping data from some files quickly. +Entry.prototype.abort = function(){ + this._abort = true +} + +Entry.prototype.warn = fstream.warn +Entry.prototype.error = fstream.error diff --git a/node_modules/tar/lib/extended-header-writer.js b/node_modules/tar/lib/extended-header-writer.js new file mode 100644 index 0000000000..1728c4583a --- /dev/null +++ b/node_modules/tar/lib/extended-header-writer.js @@ -0,0 +1,191 @@ + +module.exports = ExtendedHeaderWriter + +var inherits = require("inherits") + , EntryWriter = require("./entry-writer.js") + +inherits(ExtendedHeaderWriter, EntryWriter) + +var tar = require("../tar.js") + , path = require("path") + , TarHeader = require("./header.js") + +// props is the props of the thing we need to write an +// extended header for. +// Don't be shy with it. Just encode everything. +function ExtendedHeaderWriter (props) { + // console.error(">> ehw ctor") + var me = this + + if (!(me instanceof ExtendedHeaderWriter)) { + return new ExtendedHeaderWriter(props) + } + + me.fields = props + + var p = + { path : ("PaxHeader" + path.join("/", props.path || "")) + .replace(/\\/g, "/").substr(0, 100) + , mode : props.mode || 0666 + , uid : props.uid || 0 + , gid : props.gid || 0 + , size : 0 // will be set later + , mtime : props.mtime || Date.now() / 1000 + , type : "x" + , linkpath : "" + , ustar : "ustar\0" + , ustarver : "00" + , uname : props.uname || "" + , gname : props.gname || "" + , devmaj : props.devmaj || 0 + , devmin : props.devmin || 0 + } + + + EntryWriter.call(me, p) + // console.error(">> ehw props", me.props) + me.props = p + + me._meta = true +} + +ExtendedHeaderWriter.prototype.end = function () { + // console.error(">> ehw end") + var me = this + + if (me._ended) return + me._ended = true + + me._encodeFields() + + if (me.props.size === 0) { + // nothing to write! + me._ready = true + me._stream.end() + return + } + + me._stream.write(TarHeader.encode(me.props)) + me.body.forEach(function (l) { + me._stream.write(l) + }) + me._ready = true + + // console.error(">> ehw _process calling end()", me.props) + this._stream.end() +} + +ExtendedHeaderWriter.prototype._encodeFields = function () { + // console.error(">> ehw _encodeFields") + this.body = [] + if (this.fields.prefix) { + this.fields.path = this.fields.prefix + "/" + this.fields.path + this.fields.prefix = "" + } + encodeFields(this.fields, "", this.body, this.fields.noProprietary) + var me = this + this.body.forEach(function (l) { + me.props.size += l.length + }) +} + +function encodeFields (fields, prefix, body, nop) { + // console.error(">> >> ehw encodeFields") + // "%d %s=%s\n", , , + // The length is a decimal number, and includes itself and the \n + // Numeric values are decimal strings. + + Object.keys(fields).forEach(function (k) { + var val = fields[k] + , numeric = tar.numeric[k] + + if (prefix) k = prefix + "." + k + + // already including NODETAR.type, don't need File=true also + if (k === fields.type && val === true) return + + switch (k) { + // don't include anything that's always handled just fine + // in the normal header, or only meaningful in the context + // of nodetar + case "mode": + case "cksum": + case "ustar": + case "ustarver": + case "prefix": + case "basename": + case "dirname": + case "needExtended": + case "block": + case "filter": + return + + case "rdev": + if (val === 0) return + break + + case "nlink": + case "dev": // Truly a hero among men, Creator of Star! + case "ino": // Speak his name with reverent awe! It is: + k = "SCHILY." + k + break + + default: break + } + + if (val && typeof val === "object" && + !Buffer.isBuffer(val)) encodeFields(val, k, body, nop) + else if (val === null || val === undefined) return + else body.push.apply(body, encodeField(k, val, nop)) + }) + + return body +} + +function encodeField (k, v, nop) { + // lowercase keys must be valid, otherwise prefix with + // "NODETAR." + if (k.charAt(0) === k.charAt(0).toLowerCase()) { + var m = k.split(".")[0] + if (!tar.knownExtended[m]) k = "NODETAR." + k + } + + // no proprietary + if (nop && k.charAt(0) !== k.charAt(0).toLowerCase()) { + return [] + } + + if (typeof val === "number") val = val.toString(10) + + var s = new Buffer(" " + k + "=" + v + "\n") + , digits = Math.floor(Math.log(s.length) / Math.log(10)) + 1 + + // console.error("1 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) + + // if adding that many digits will make it go over that length, + // then add one to it. For example, if the string is: + // " foo=bar\n" + // then that's 9 characters. With the "9", that bumps the length + // up to 10. However, this is invalid: + // "10 foo=bar\n" + // but, since that's actually 11 characters, since 10 adds another + // character to the length, and the length includes the number + // itself. In that case, just bump it up again. + if (s.length + digits >= Math.pow(10, digits)) digits += 1 + // console.error("2 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) + + var len = digits + s.length + // console.error("3 s=%j digits=%j s.length=%d len=%d", s.toString(), digits, s.length, len) + var lenBuf = new Buffer("" + len) + if (lenBuf.length + s.length !== len) { + throw new Error("Bad length calculation\n"+ + "len="+len+"\n"+ + "lenBuf="+JSON.stringify(lenBuf.toString())+"\n"+ + "lenBuf.length="+lenBuf.length+"\n"+ + "digits="+digits+"\n"+ + "s="+JSON.stringify(s.toString())+"\n"+ + "s.length="+s.length) + } + + return [lenBuf, s] +} diff --git a/node_modules/tar/lib/extended-header.js b/node_modules/tar/lib/extended-header.js new file mode 100644 index 0000000000..74f432ceee --- /dev/null +++ b/node_modules/tar/lib/extended-header.js @@ -0,0 +1,140 @@ +// An Entry consisting of: +// +// "%d %s=%s\n", , , +// +// The length is a decimal number, and includes itself and the \n +// \0 does not terminate anything. Only the length terminates the string. +// Numeric values are decimal strings. + +module.exports = ExtendedHeader + +var Entry = require("./entry.js") + , inherits = require("inherits") + , tar = require("../tar.js") + , numeric = tar.numeric + , keyTrans = { "SCHILY.dev": "dev" + , "SCHILY.ino": "ino" + , "SCHILY.nlink": "nlink" } + +function ExtendedHeader () { + Entry.apply(this, arguments) + this.on("data", this._parse) + this.fields = {} + this._position = 0 + this._fieldPos = 0 + this._state = SIZE + this._sizeBuf = [] + this._keyBuf = [] + this._valBuf = [] + this._size = -1 + this._key = "" +} + +inherits(ExtendedHeader, Entry) +ExtendedHeader.prototype._parse = parse + +var s = 0 + , states = ExtendedHeader.states = {} + , SIZE = states.SIZE = s++ + , KEY = states.KEY = s++ + , VAL = states.VAL = s++ + , ERR = states.ERR = s++ + +Object.keys(states).forEach(function (s) { + states[states[s]] = states[s] +}) + +states[s] = null + +// char code values for comparison +var _0 = "0".charCodeAt(0) + , _9 = "9".charCodeAt(0) + , point = ".".charCodeAt(0) + , a = "a".charCodeAt(0) + , Z = "Z".charCodeAt(0) + , a = "a".charCodeAt(0) + , z = "z".charCodeAt(0) + , space = " ".charCodeAt(0) + , eq = "=".charCodeAt(0) + , cr = "\n".charCodeAt(0) + +function parse (c) { + if (this._state === ERR) return + + for ( var i = 0, l = c.length + ; i < l + ; this._position++, this._fieldPos++, i++) { + // console.error("top of loop, size="+this._size) + + var b = c[i] + + if (this._size >= 0 && this._fieldPos > this._size) { + error(this, "field exceeds length="+this._size) + return + } + + switch (this._state) { + case ERR: return + + case SIZE: + // console.error("parsing size, b=%d, rest=%j", b, c.slice(i).toString()) + if (b === space) { + this._state = KEY + // this._fieldPos = this._sizeBuf.length + this._size = parseInt(new Buffer(this._sizeBuf).toString(), 10) + this._sizeBuf.length = 0 + continue + } + if (b < _0 || b > _9) { + error(this, "expected [" + _0 + ".." + _9 + "], got " + b) + return + } + this._sizeBuf.push(b) + continue + + case KEY: + // can be any char except =, not > size. + if (b === eq) { + this._state = VAL + this._key = new Buffer(this._keyBuf).toString() + if (keyTrans[this._key]) this._key = keyTrans[this._key] + this._keyBuf.length = 0 + continue + } + this._keyBuf.push(b) + continue + + case VAL: + // field must end with cr + if (this._fieldPos === this._size - 1) { + // console.error("finished with "+this._key) + if (b !== cr) { + error(this, "expected \\n at end of field") + return + } + var val = new Buffer(this._valBuf).toString() + if (numeric[this._key]) { + val = parseFloat(val) + } + this.fields[this._key] = val + + this._valBuf.length = 0 + this._state = SIZE + this._size = -1 + this._fieldPos = -1 + continue + } + this._valBuf.push(b) + continue + } + } +} + +function error (me, msg) { + msg = "invalid header: " + msg + + "\nposition=" + me._position + + "\nfield position=" + me._fieldPos + + me.error(msg) + me.state = ERR +} diff --git a/node_modules/tar/lib/extract.js b/node_modules/tar/lib/extract.js new file mode 100644 index 0000000000..fe1bb976eb --- /dev/null +++ b/node_modules/tar/lib/extract.js @@ -0,0 +1,94 @@ +// give it a tarball and a path, and it'll dump the contents + +module.exports = Extract + +var tar = require("../tar.js") + , fstream = require("fstream") + , inherits = require("inherits") + , path = require("path") + +function Extract (opts) { + if (!(this instanceof Extract)) return new Extract(opts) + tar.Parse.apply(this) + + if (typeof opts !== "object") { + opts = { path: opts } + } + + // better to drop in cwd? seems more standard. + opts.path = opts.path || path.resolve("node-tar-extract") + opts.type = "Directory" + opts.Directory = true + + // similar to --strip or --strip-components + opts.strip = +opts.strip + if (!opts.strip || opts.strip <= 0) opts.strip = 0 + + this._fst = fstream.Writer(opts) + + this.pause() + var me = this + + // Hardlinks in tarballs are relative to the root + // of the tarball. So, they need to be resolved against + // the target directory in order to be created properly. + me.on("entry", function (entry) { + // if there's a "strip" argument, then strip off that many + // path components. + if (opts.strip) { + var p = entry.path.split("/").slice(opts.strip).join("/") + entry.path = entry.props.path = p + if (entry.linkpath) { + var lp = entry.linkpath.split("/").slice(opts.strip).join("/") + entry.linkpath = entry.props.linkpath = lp + } + } + if (entry.type === "Link") { + entry.linkpath = entry.props.linkpath = + path.join(opts.path, path.join("/", entry.props.linkpath)) + } + + if (entry.type === "SymbolicLink") { + var dn = path.dirname(entry.path) || "" + var linkpath = entry.props.linkpath + var target = path.resolve(opts.path, dn, linkpath) + if (target.indexOf(opts.path) !== 0) { + linkpath = path.join(opts.path, path.join("/", linkpath)) + } + entry.linkpath = entry.props.linkpath = linkpath + } + }) + + this._fst.on("ready", function () { + me.pipe(me._fst, { end: false }) + me.resume() + }) + + this._fst.on('error', function(err) { + me.emit('error', err) + }) + + this._fst.on('drain', function() { + me.emit('drain') + }) + + // this._fst.on("end", function () { + // console.error("\nEEEE Extract End", me._fst.path) + // }) + + this._fst.on("close", function () { + // console.error("\nEEEE Extract End", me._fst.path) + me.emit("finish") + me.emit("end") + me.emit("close") + }) +} + +inherits(Extract, tar.Parse) + +Extract.prototype._streamEnd = function () { + var me = this + if (!me._ended || me._entry) me.error("unexpected eof") + me._fst.end() + // my .end() is coming later. +} diff --git a/node_modules/tar/lib/global-header-writer.js b/node_modules/tar/lib/global-header-writer.js new file mode 100644 index 0000000000..0bfc7b80aa --- /dev/null +++ b/node_modules/tar/lib/global-header-writer.js @@ -0,0 +1,14 @@ +module.exports = GlobalHeaderWriter + +var ExtendedHeaderWriter = require("./extended-header-writer.js") + , inherits = require("inherits") + +inherits(GlobalHeaderWriter, ExtendedHeaderWriter) + +function GlobalHeaderWriter (props) { + if (!(this instanceof GlobalHeaderWriter)) { + return new GlobalHeaderWriter(props) + } + ExtendedHeaderWriter.call(this, props) + this.props.type = "g" +} diff --git a/node_modules/tar/lib/header.js b/node_modules/tar/lib/header.js new file mode 100644 index 0000000000..05b237c0c7 --- /dev/null +++ b/node_modules/tar/lib/header.js @@ -0,0 +1,385 @@ +// parse a 512-byte header block to a data object, or vice-versa +// If the data won't fit nicely in a simple header, then generate +// the appropriate extended header file, and return that. + +module.exports = TarHeader + +var tar = require("../tar.js") + , fields = tar.fields + , fieldOffs = tar.fieldOffs + , fieldEnds = tar.fieldEnds + , fieldSize = tar.fieldSize + , numeric = tar.numeric + , assert = require("assert").ok + , space = " ".charCodeAt(0) + , slash = "/".charCodeAt(0) + , bslash = process.platform === "win32" ? "\\".charCodeAt(0) : null + +function TarHeader (block) { + if (!(this instanceof TarHeader)) return new TarHeader(block) + if (block) this.decode(block) +} + +TarHeader.prototype = + { decode : decode + , encode: encode + , calcSum: calcSum + , checkSum: checkSum + } + +TarHeader.parseNumeric = parseNumeric +TarHeader.encode = encode +TarHeader.decode = decode + +// note that this will only do the normal ustar header, not any kind +// of extended posix header file. If something doesn't fit comfortably, +// then it will set obj.needExtended = true, and set the block to +// the closest approximation. +function encode (obj) { + if (!obj && !(this instanceof TarHeader)) throw new Error( + "encode must be called on a TarHeader, or supplied an object") + + obj = obj || this + var block = obj.block = new Buffer(512) + + // if the object has a "prefix", then that's actually an extension of + // the path field. + if (obj.prefix) { + // console.error("%% header encoding, got a prefix", obj.prefix) + obj.path = obj.prefix + "/" + obj.path + // console.error("%% header encoding, prefixed path", obj.path) + obj.prefix = "" + } + + obj.needExtended = false + + if (obj.mode) { + if (typeof obj.mode === "string") obj.mode = parseInt(obj.mode, 8) + obj.mode = obj.mode & 0777 + } + + for (var f = 0; fields[f] !== null; f ++) { + var field = fields[f] + , off = fieldOffs[f] + , end = fieldEnds[f] + , ret + + switch (field) { + case "cksum": + // special, done below, after all the others + break + + case "prefix": + // special, this is an extension of the "path" field. + // console.error("%% header encoding, skip prefix later") + break + + case "type": + // convert from long name to a single char. + var type = obj.type || "0" + if (type.length > 1) { + type = tar.types[obj.type] + if (!type) type = "0" + } + writeText(block, off, end, type) + break + + case "path": + // uses the "prefix" field if > 100 bytes, but <= 255 + var pathLen = Buffer.byteLength(obj.path) + , pathFSize = fieldSize[fields.path] + , prefFSize = fieldSize[fields.prefix] + + // paths between 100 and 255 should use the prefix field. + // longer than 255 + if (pathLen > pathFSize && + pathLen <= pathFSize + prefFSize) { + // need to find a slash somewhere in the middle so that + // path and prefix both fit in their respective fields + var searchStart = pathLen - 1 - pathFSize + , searchEnd = prefFSize + , found = false + , pathBuf = new Buffer(obj.path) + + for ( var s = searchStart + ; (s <= searchEnd) + ; s ++ ) { + if (pathBuf[s] === slash || pathBuf[s] === bslash) { + found = s + break + } + } + + if (found !== false) { + prefix = pathBuf.slice(0, found).toString("utf8") + path = pathBuf.slice(found + 1).toString("utf8") + + ret = writeText(block, off, end, path) + off = fieldOffs[fields.prefix] + end = fieldEnds[fields.prefix] + // console.error("%% header writing prefix", off, end, prefix) + ret = writeText(block, off, end, prefix) || ret + break + } + } + + // paths less than 100 chars don't need a prefix + // and paths longer than 255 need an extended header and will fail + // on old implementations no matter what we do here. + // Null out the prefix, and fallthrough to default. + // console.error("%% header writing no prefix") + var poff = fieldOffs[fields.prefix] + , pend = fieldEnds[fields.prefix] + writeText(block, poff, pend, "") + // fallthrough + + // all other fields are numeric or text + default: + ret = numeric[field] + ? writeNumeric(block, off, end, obj[field]) + : writeText(block, off, end, obj[field] || "") + break + } + obj.needExtended = obj.needExtended || ret + } + + var off = fieldOffs[fields.cksum] + , end = fieldEnds[fields.cksum] + + writeNumeric(block, off, end, calcSum.call(this, block)) + + return block +} + +// if it's a negative number, or greater than will fit, +// then use write256. +var MAXNUM = { 12: 077777777777 + , 11: 07777777777 + , 8 : 07777777 + , 7 : 0777777 } +function writeNumeric (block, off, end, num) { + var writeLen = end - off + , maxNum = MAXNUM[writeLen] || 0 + + num = num || 0 + // console.error(" numeric", num) + + if (num instanceof Date || + Object.prototype.toString.call(num) === "[object Date]") { + num = num.getTime() / 1000 + } + + if (num > maxNum || num < 0) { + write256(block, off, end, num) + // need an extended header if negative or too big. + return true + } + + // god, tar is so annoying + // if the string is small enough, you should put a space + // between the octal string and the \0, but if it doesn't + // fit, then don't. + var numStr = Math.floor(num).toString(8) + if (num < MAXNUM[writeLen - 1]) numStr += " " + + // pad with "0" chars + if (numStr.length < writeLen) { + numStr = (new Array(writeLen - numStr.length).join("0")) + numStr + } + + if (numStr.length !== writeLen - 1) { + throw new Error("invalid length: " + JSON.stringify(numStr) + "\n" + + "expected: "+writeLen) + } + block.write(numStr, off, writeLen, "utf8") + block[end - 1] = 0 +} + +function write256 (block, off, end, num) { + var buf = block.slice(off, end) + var positive = num >= 0 + buf[0] = positive ? 0x80 : 0xFF + + // get the number as a base-256 tuple + if (!positive) num *= -1 + var tuple = [] + do { + var n = num % 256 + tuple.push(n) + num = (num - n) / 256 + } while (num) + + var bytes = tuple.length + + var fill = buf.length - bytes + for (var i = 1; i < fill; i ++) { + buf[i] = positive ? 0 : 0xFF + } + + // tuple is a base256 number, with [0] as the *least* significant byte + // if it's negative, then we need to flip all the bits once we hit the + // first non-zero bit. The 2's-complement is (0x100 - n), and the 1's- + // complement is (0xFF - n). + var zero = true + for (i = bytes; i > 0; i --) { + var byte = tuple[bytes - i] + if (positive) buf[fill + i] = byte + else if (zero && byte === 0) buf[fill + i] = 0 + else if (zero) { + zero = false + buf[fill + i] = 0x100 - byte + } else buf[fill + i] = 0xFF - byte + } +} + +function writeText (block, off, end, str) { + // strings are written as utf8, then padded with \0 + var strLen = Buffer.byteLength(str) + , writeLen = Math.min(strLen, end - off) + // non-ascii fields need extended headers + // long fields get truncated + , needExtended = strLen !== str.length || strLen > writeLen + + // write the string, and null-pad + if (writeLen > 0) block.write(str, off, writeLen, "utf8") + for (var i = off + writeLen; i < end; i ++) block[i] = 0 + + return needExtended +} + +function calcSum (block) { + block = block || this.block + assert(Buffer.isBuffer(block) && block.length === 512) + + if (!block) throw new Error("Need block to checksum") + + // now figure out what it would be if the cksum was " " + var sum = 0 + , start = fieldOffs[fields.cksum] + , end = fieldEnds[fields.cksum] + + for (var i = 0; i < fieldOffs[fields.cksum]; i ++) { + sum += block[i] + } + + for (var i = start; i < end; i ++) { + sum += space + } + + for (var i = end; i < 512; i ++) { + sum += block[i] + } + + return sum +} + + +function checkSum (block) { + var sum = calcSum.call(this, block) + block = block || this.block + + var cksum = block.slice(fieldOffs[fields.cksum], fieldEnds[fields.cksum]) + cksum = parseNumeric(cksum) + + return cksum === sum +} + +function decode (block) { + block = block || this.block + assert(Buffer.isBuffer(block) && block.length === 512) + + this.block = block + this.cksumValid = this.checkSum() + + var prefix = null + + // slice off each field. + for (var f = 0; fields[f] !== null; f ++) { + var field = fields[f] + , val = block.slice(fieldOffs[f], fieldEnds[f]) + + switch (field) { + case "ustar": + // if not ustar, then everything after that is just padding. + if (val.toString() !== "ustar\0") { + this.ustar = false + return + } else { + // console.error("ustar:", val, val.toString()) + this.ustar = val.toString() + } + break + + // prefix is special, since it might signal the xstar header + case "prefix": + var atime = parseNumeric(val.slice(131, 131 + 12)) + , ctime = parseNumeric(val.slice(131 + 12, 131 + 12 + 12)) + if ((val[130] === 0 || val[130] === space) && + typeof atime === "number" && + typeof ctime === "number" && + val[131 + 12] === space && + val[131 + 12 + 12] === space) { + this.atime = atime + this.ctime = ctime + val = val.slice(0, 130) + } + prefix = val.toString("utf8").replace(/\0+$/, "") + // console.error("%% header reading prefix", prefix) + break + + // all other fields are null-padding text + // or a number. + default: + if (numeric[field]) { + this[field] = parseNumeric(val) + } else { + this[field] = val.toString("utf8").replace(/\0+$/, "") + } + break + } + } + + // if we got a prefix, then prepend it to the path. + if (prefix) { + this.path = prefix + "/" + this.path + // console.error("%% header got a prefix", this.path) + } +} + +function parse256 (buf) { + // first byte MUST be either 80 or FF + // 80 for positive, FF for 2's comp + var positive + if (buf[0] === 0x80) positive = true + else if (buf[0] === 0xFF) positive = false + else return null + + // build up a base-256 tuple from the least sig to the highest + var zero = false + , tuple = [] + for (var i = buf.length - 1; i > 0; i --) { + var byte = buf[i] + if (positive) tuple.push(byte) + else if (zero && byte === 0) tuple.push(0) + else if (zero) { + zero = false + tuple.push(0x100 - byte) + } else tuple.push(0xFF - byte) + } + + for (var sum = 0, i = 0, l = tuple.length; i < l; i ++) { + sum += tuple[i] * Math.pow(256, i) + } + + return positive ? sum : -1 * sum +} + +function parseNumeric (f) { + if (f[0] & 0x80) return parse256(f) + + var str = f.toString("utf8").split("\0")[0].trim() + , res = parseInt(str, 8) + + return isNaN(res) ? null : res +} + diff --git a/node_modules/tar/lib/pack.js b/node_modules/tar/lib/pack.js new file mode 100644 index 0000000000..5a3bb95a12 --- /dev/null +++ b/node_modules/tar/lib/pack.js @@ -0,0 +1,236 @@ +// pipe in an fstream, and it'll make a tarball. +// key-value pair argument is global extended header props. + +module.exports = Pack + +var EntryWriter = require("./entry-writer.js") + , Stream = require("stream").Stream + , path = require("path") + , inherits = require("inherits") + , GlobalHeaderWriter = require("./global-header-writer.js") + , collect = require("fstream").collect + , eof = new Buffer(512) + +for (var i = 0; i < 512; i ++) eof[i] = 0 + +inherits(Pack, Stream) + +function Pack (props) { + // console.error("-- p ctor") + var me = this + if (!(me instanceof Pack)) return new Pack(props) + + if (props) me._noProprietary = props.noProprietary + else me._noProprietary = false + + me._global = props + + me.readable = true + me.writable = true + me._buffer = [] + // console.error("-- -- set current to null in ctor") + me._currentEntry = null + me._processing = false + + me._pipeRoot = null + me.on("pipe", function (src) { + if (src.root === me._pipeRoot) return + me._pipeRoot = src + src.on("end", function () { + me._pipeRoot = null + }) + me.add(src) + }) +} + +Pack.prototype.addGlobal = function (props) { + // console.error("-- p addGlobal") + if (this._didGlobal) return + this._didGlobal = true + + var me = this + GlobalHeaderWriter(props) + .on("data", function (c) { + me.emit("data", c) + }) + .end() +} + +Pack.prototype.add = function (stream) { + if (this._global && !this._didGlobal) this.addGlobal(this._global) + + if (this._ended) return this.emit("error", new Error("add after end")) + + collect(stream) + this._buffer.push(stream) + this._process() + this._needDrain = this._buffer.length > 0 + return !this._needDrain +} + +Pack.prototype.pause = function () { + this._paused = true + if (this._currentEntry) this._currentEntry.pause() + this.emit("pause") +} + +Pack.prototype.resume = function () { + this._paused = false + if (this._currentEntry) this._currentEntry.resume() + this.emit("resume") + this._process() +} + +Pack.prototype.end = function () { + this._ended = true + this._buffer.push(eof) + this._process() +} + +Pack.prototype._process = function () { + var me = this + if (me._paused || me._processing) { + return + } + + var entry = me._buffer.shift() + + if (!entry) { + if (me._needDrain) { + me.emit("drain") + } + return + } + + if (entry.ready === false) { + // console.error("-- entry is not ready", entry) + me._buffer.unshift(entry) + entry.on("ready", function () { + // console.error("-- -- ready!", entry) + me._process() + }) + return + } + + me._processing = true + + if (entry === eof) { + // need 2 ending null blocks. + me.emit("data", eof) + me.emit("data", eof) + me.emit("end") + me.emit("close") + return + } + + // Change the path to be relative to the root dir that was + // added to the tarball. + // + // XXX This should be more like how -C works, so you can + // explicitly set a root dir, and also explicitly set a pathname + // in the tarball to use. That way we can skip a lot of extra + // work when resolving symlinks for bundled dependencies in npm. + + var root = path.dirname((entry.root || entry).path); + if (me._global && me._global.fromBase && entry.root && entry.root.path) { + // user set 'fromBase: true' indicating tar root should be directory itself + root = entry.root.path; + } + + var wprops = {} + + Object.keys(entry.props || {}).forEach(function (k) { + wprops[k] = entry.props[k] + }) + + if (me._noProprietary) wprops.noProprietary = true + + wprops.path = path.relative(root, entry.path || '') + + // actually not a matter of opinion or taste. + if (process.platform === "win32") { + wprops.path = wprops.path.replace(/\\/g, "/") + } + + if (!wprops.type) + wprops.type = 'Directory' + + switch (wprops.type) { + // sockets not supported + case "Socket": + return + + case "Directory": + wprops.path += "/" + wprops.size = 0 + break + + case "Link": + var lp = path.resolve(path.dirname(entry.path), entry.linkpath) + wprops.linkpath = path.relative(root, lp) || "." + wprops.size = 0 + break + + case "SymbolicLink": + var lp = path.resolve(path.dirname(entry.path), entry.linkpath) + wprops.linkpath = path.relative(path.dirname(entry.path), lp) || "." + wprops.size = 0 + break + } + + // console.error("-- new writer", wprops) + // if (!wprops.type) { + // // console.error("-- no type?", entry.constructor.name, entry) + // } + + // console.error("-- -- set current to new writer", wprops.path) + var writer = me._currentEntry = EntryWriter(wprops) + + writer.parent = me + + // writer.on("end", function () { + // // console.error("-- -- writer end", writer.path) + // }) + + writer.on("data", function (c) { + me.emit("data", c) + }) + + writer.on("header", function () { + Buffer.prototype.toJSON = function () { + return this.toString().split(/\0/).join(".") + } + // console.error("-- -- writer header %j", writer.props) + if (writer.props.size === 0) nextEntry() + }) + writer.on("close", nextEntry) + + var ended = false + function nextEntry () { + if (ended) return + ended = true + + // console.error("-- -- writer close", writer.path) + // console.error("-- -- set current to null", wprops.path) + me._currentEntry = null + me._processing = false + me._process() + } + + writer.on("error", function (er) { + // console.error("-- -- writer error", writer.path) + me.emit("error", er) + }) + + // if it's the root, then there's no need to add its entries, + // or data, since they'll be added directly. + if (entry === me._pipeRoot) { + // console.error("-- is the root, don't auto-add") + writer.add = null + } + + entry.pipe(writer) +} + +Pack.prototype.destroy = function () {} +Pack.prototype.write = function () {} diff --git a/node_modules/tar/lib/parse.js b/node_modules/tar/lib/parse.js new file mode 100644 index 0000000000..1c66ebdaf0 --- /dev/null +++ b/node_modules/tar/lib/parse.js @@ -0,0 +1,281 @@ + +// A writable stream. +// It emits "entry" events, which provide a readable stream that has +// header info attached. + +module.exports = Parse.create = Parse + +var stream = require("stream") + , Stream = stream.Stream + , BlockStream = require("block-stream") + , tar = require("../tar.js") + , TarHeader = require("./header.js") + , Entry = require("./entry.js") + , BufferEntry = require("./buffer-entry.js") + , ExtendedHeader = require("./extended-header.js") + , assert = require("assert").ok + , inherits = require("inherits") + , fstream = require("fstream") + +// reading a tar is a lot like reading a directory +// However, we're actually not going to run the ctor, +// since it does a stat and various other stuff. +// This inheritance gives us the pause/resume/pipe +// behavior that is desired. +inherits(Parse, fstream.Reader) + +function Parse () { + var me = this + if (!(me instanceof Parse)) return new Parse() + + // doesn't apply fstream.Reader ctor? + // no, becasue we don't want to stat/etc, we just + // want to get the entry/add logic from .pipe() + Stream.apply(me) + + me.writable = true + me.readable = true + me._stream = new BlockStream(512) + me.position = 0 + me._ended = false + me._hardLinks = {} + + me._stream.on("error", function (e) { + me.emit("error", e) + }) + + me._stream.on("data", function (c) { + me._process(c) + }) + + me._stream.on("end", function () { + me._streamEnd() + }) + + me._stream.on("drain", function () { + me.emit("drain") + }) +} + +// overridden in Extract class, since it needs to +// wait for its DirWriter part to finish before +// emitting "end" +Parse.prototype._streamEnd = function () { + var me = this + if (!me._ended || me._entry) me.error("unexpected eof") + me.emit("end") +} + +// a tar reader is actually a filter, not just a readable stream. +// So, you should pipe a tarball stream into it, and it needs these +// write/end methods to do that. +Parse.prototype.write = function (c) { + if (this._ended) { + // gnutar puts a LOT of nulls at the end. + // you can keep writing these things forever. + // Just ignore them. + for (var i = 0, l = c.length; i > l; i ++) { + if (c[i] !== 0) return this.error("write() after end()") + } + return + } + return this._stream.write(c) +} + +Parse.prototype.end = function (c) { + this._ended = true + return this._stream.end(c) +} + +// don't need to do anything, since we're just +// proxying the data up from the _stream. +// Just need to override the parent's "Not Implemented" +// error-thrower. +Parse.prototype._read = function () {} + +Parse.prototype._process = function (c) { + assert(c && c.length === 512, "block size should be 512") + + // one of three cases. + // 1. A new header + // 2. A part of a file/extended header + // 3. One of two or more EOF null blocks + + if (this._entry) { + var entry = this._entry + if(!entry._abort) entry.write(c) + else { + entry._remaining -= c.length + if(entry._remaining < 0) entry._remaining = 0 + } + if (entry._remaining === 0) { + entry.end() + this._entry = null + } + } else { + // either zeroes or a header + var zero = true + for (var i = 0; i < 512 && zero; i ++) { + zero = c[i] === 0 + } + + // eof is *at least* 2 blocks of nulls, and then the end of the + // file. you can put blocks of nulls between entries anywhere, + // so appending one tarball to another is technically valid. + // ending without the eof null blocks is not allowed, however. + if (zero) { + if (this._eofStarted) + this._ended = true + this._eofStarted = true + } else { + this._eofStarted = false + this._startEntry(c) + } + } + + this.position += 512 +} + +// take a header chunk, start the right kind of entry. +Parse.prototype._startEntry = function (c) { + var header = new TarHeader(c) + , self = this + , entry + , ev + , EntryType + , onend + , meta = false + + if (null === header.size || !header.cksumValid) { + var e = new Error("invalid tar file") + e.header = header + e.tar_file_offset = this.position + e.tar_block = this.position / 512 + return this.emit("error", e) + } + + switch (tar.types[header.type]) { + case "File": + case "OldFile": + case "Link": + case "SymbolicLink": + case "CharacterDevice": + case "BlockDevice": + case "Directory": + case "FIFO": + case "ContiguousFile": + case "GNUDumpDir": + // start a file. + // pass in any extended headers + // These ones consumers are typically most interested in. + EntryType = Entry + ev = "entry" + break + + case "GlobalExtendedHeader": + // extended headers that apply to the rest of the tarball + EntryType = ExtendedHeader + onend = function () { + self._global = self._global || {} + Object.keys(entry.fields).forEach(function (k) { + self._global[k] = entry.fields[k] + }) + } + ev = "globalExtendedHeader" + meta = true + break + + case "ExtendedHeader": + case "OldExtendedHeader": + // extended headers that apply to the next entry + EntryType = ExtendedHeader + onend = function () { + self._extended = entry.fields + } + ev = "extendedHeader" + meta = true + break + + case "NextFileHasLongLinkpath": + // set linkpath= in extended header + EntryType = BufferEntry + onend = function () { + self._extended = self._extended || {} + self._extended.linkpath = entry.body + } + ev = "longLinkpath" + meta = true + break + + case "NextFileHasLongPath": + case "OldGnuLongPath": + // set path= in file-extended header + EntryType = BufferEntry + onend = function () { + self._extended = self._extended || {} + self._extended.path = entry.body + } + ev = "longPath" + meta = true + break + + default: + // all the rest we skip, but still set the _entry + // member, so that we can skip over their data appropriately. + // emit an event to say that this is an ignored entry type? + EntryType = Entry + ev = "ignoredEntry" + break + } + + var global, extended + if (meta) { + global = extended = null + } else { + var global = this._global + var extended = this._extended + + // extendedHeader only applies to one entry, so once we start + // an entry, it's over. + this._extended = null + } + entry = new EntryType(header, extended, global) + entry.meta = meta + + // only proxy data events of normal files. + if (!meta) { + entry.on("data", function (c) { + me.emit("data", c) + }) + } + + if (onend) entry.on("end", onend) + + this._entry = entry + + if (entry.type === "Link") { + this._hardLinks[entry.path] = entry + } + + var me = this + + entry.on("pause", function () { + me.pause() + }) + + entry.on("resume", function () { + me.resume() + }) + + if (this.listeners("*").length) { + this.emit("*", ev, entry) + } + + this.emit(ev, entry) + + // Zero-byte entry. End immediately. + if (entry.props.size === 0) { + entry.end() + this._entry = null + } +} diff --git a/node_modules/tar/package.json b/node_modules/tar/package.json new file mode 100644 index 0000000000..23acb9fbfb --- /dev/null +++ b/node_modules/tar/package.json @@ -0,0 +1,26 @@ +{ + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "name": "tar", + "description": "tar for node", + "version": "2.2.2", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/node-tar.git" + }, + "main": "tar.js", + "scripts": { + "test": "tap test/*.js" + }, + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + }, + "devDependencies": { + "graceful-fs": "^4.1.2", + "rimraf": "1.x", + "tap": "0.x", + "mkdirp": "^0.5.0" + }, + "license": "ISC" +} diff --git a/node_modules/tar/tar.js b/node_modules/tar/tar.js new file mode 100644 index 0000000000..a81298b9a0 --- /dev/null +++ b/node_modules/tar/tar.js @@ -0,0 +1,173 @@ +// field paths that every tar file must have. +// header is padded to 512 bytes. +var f = 0 + , fields = {} + , path = fields.path = f++ + , mode = fields.mode = f++ + , uid = fields.uid = f++ + , gid = fields.gid = f++ + , size = fields.size = f++ + , mtime = fields.mtime = f++ + , cksum = fields.cksum = f++ + , type = fields.type = f++ + , linkpath = fields.linkpath = f++ + , headerSize = 512 + , blockSize = 512 + , fieldSize = [] + +fieldSize[path] = 100 +fieldSize[mode] = 8 +fieldSize[uid] = 8 +fieldSize[gid] = 8 +fieldSize[size] = 12 +fieldSize[mtime] = 12 +fieldSize[cksum] = 8 +fieldSize[type] = 1 +fieldSize[linkpath] = 100 + +// "ustar\0" may introduce another bunch of headers. +// these are optional, and will be nulled out if not present. + +var ustar = fields.ustar = f++ + , ustarver = fields.ustarver = f++ + , uname = fields.uname = f++ + , gname = fields.gname = f++ + , devmaj = fields.devmaj = f++ + , devmin = fields.devmin = f++ + , prefix = fields.prefix = f++ + , fill = fields.fill = f++ + +// terminate fields. +fields[f] = null + +fieldSize[ustar] = 6 +fieldSize[ustarver] = 2 +fieldSize[uname] = 32 +fieldSize[gname] = 32 +fieldSize[devmaj] = 8 +fieldSize[devmin] = 8 +fieldSize[prefix] = 155 +fieldSize[fill] = 12 + +// nb: prefix field may in fact be 130 bytes of prefix, +// a null char, 12 bytes for atime, 12 bytes for ctime. +// +// To recognize this format: +// 1. prefix[130] === ' ' or '\0' +// 2. atime and ctime are octal numeric values +// 3. atime and ctime have ' ' in their last byte + +var fieldEnds = {} + , fieldOffs = {} + , fe = 0 +for (var i = 0; i < f; i ++) { + fieldOffs[i] = fe + fieldEnds[i] = (fe += fieldSize[i]) +} + +// build a translation table of field paths. +Object.keys(fields).forEach(function (f) { + if (fields[f] !== null) fields[fields[f]] = f +}) + +// different values of the 'type' field +// paths match the values of Stats.isX() functions, where appropriate +var types = + { 0: "File" + , "\0": "OldFile" // like 0 + , "": "OldFile" + , 1: "Link" + , 2: "SymbolicLink" + , 3: "CharacterDevice" + , 4: "BlockDevice" + , 5: "Directory" + , 6: "FIFO" + , 7: "ContiguousFile" // like 0 + // posix headers + , g: "GlobalExtendedHeader" // k=v for the rest of the archive + , x: "ExtendedHeader" // k=v for the next file + // vendor-specific stuff + , A: "SolarisACL" // skip + , D: "GNUDumpDir" // like 5, but with data, which should be skipped + , I: "Inode" // metadata only, skip + , K: "NextFileHasLongLinkpath" // data = link path of next file + , L: "NextFileHasLongPath" // data = path of next file + , M: "ContinuationFile" // skip + , N: "OldGnuLongPath" // like L + , S: "SparseFile" // skip + , V: "TapeVolumeHeader" // skip + , X: "OldExtendedHeader" // like x + } + +Object.keys(types).forEach(function (t) { + types[types[t]] = types[types[t]] || t +}) + +// values for the mode field +var modes = + { suid: 04000 // set uid on extraction + , sgid: 02000 // set gid on extraction + , svtx: 01000 // set restricted deletion flag on dirs on extraction + , uread: 0400 + , uwrite: 0200 + , uexec: 0100 + , gread: 040 + , gwrite: 020 + , gexec: 010 + , oread: 4 + , owrite: 2 + , oexec: 1 + , all: 07777 + } + +var numeric = + { mode: true + , uid: true + , gid: true + , size: true + , mtime: true + , devmaj: true + , devmin: true + , cksum: true + , atime: true + , ctime: true + , dev: true + , ino: true + , nlink: true + } + +Object.keys(modes).forEach(function (t) { + modes[modes[t]] = modes[modes[t]] || t +}) + +var knownExtended = + { atime: true + , charset: true + , comment: true + , ctime: true + , gid: true + , gname: true + , linkpath: true + , mtime: true + , path: true + , realtime: true + , security: true + , size: true + , uid: true + , uname: true } + + +exports.fields = fields +exports.fieldSize = fieldSize +exports.fieldOffs = fieldOffs +exports.fieldEnds = fieldEnds +exports.types = types +exports.modes = modes +exports.numeric = numeric +exports.headerSize = headerSize +exports.blockSize = blockSize +exports.knownExtended = knownExtended + +exports.Pack = require("./lib/pack.js") +exports.Parse = require("./lib/parse.js") +exports.Extract = require("./lib/extract.js") diff --git a/node_modules/tar/test/00-setup-fixtures.js b/node_modules/tar/test/00-setup-fixtures.js new file mode 100644 index 0000000000..1524ff7af0 --- /dev/null +++ b/node_modules/tar/test/00-setup-fixtures.js @@ -0,0 +1,53 @@ +// the fixtures have some weird stuff that is painful +// to include directly in the repo for various reasons. +// +// So, unpack the fixtures with the system tar first. +// +// This means, of course, that it'll only work if you +// already have a tar implementation, and some of them +// will not properly unpack the fixtures anyway. +// +// But, since usually those tests will fail on Windows +// and other systems with less capable filesystems anyway, +// at least this way we don't cause inconveniences by +// merely cloning the repo or installing the package. + +var tap = require("tap") +, child_process = require("child_process") +, rimraf = require("rimraf") +, test = tap.test +, path = require("path") + +test("clean fixtures", function (t) { + rimraf(path.resolve(__dirname, "fixtures"), function (er) { + t.ifError(er, "rimraf ./fixtures/") + t.end() + }) +}) + +test("clean tmp", function (t) { + rimraf(path.resolve(__dirname, "tmp"), function (er) { + t.ifError(er, "rimraf ./tmp/") + t.end() + }) +}) + +test("extract fixtures", function (t) { + var c = child_process.spawn("tar" + ,["xzvf", "fixtures.tgz"] + ,{ cwd: __dirname }) + + c.stdout.on("data", errwrite) + c.stderr.on("data", errwrite) + function errwrite (chunk) { + process.stderr.write(chunk) + } + + c.on("exit", function (code) { + t.equal(code, 0, "extract fixtures should exit with 0") + if (code) { + t.comment("Note, all tests from here on out will fail because of this.") + } + t.end() + }) +}) diff --git a/node_modules/tar/test/cb-never-called-1.0.1.tgz b/node_modules/tar/test/cb-never-called-1.0.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..9e7014d85abe48a54cb6b4e1ec032df9a2073034 GIT binary patch literal 4096 zcmV+b5dZHViwFP!000001MOI6Sd-h91_Y5NO{$a-kt&eT2}P;Wl@<^X2_bX>Bta4B zh*T+|m(YrHJ$@AVon$2K1bnGjnI=&)j>@+~+y(pY`qa?su)7oxJON zp18u`jxbwz}afxwcd{NMW^{~g@X7#QmGDF4?wzdj4#-{Zds9+3k8KqSl=0fYd6a4R7s;ywZ; z1cx~}A*_Md&dAd>+TI0u#)E}H!r)(7YXlmOvUkP&#{5b;!|Z>q?2*<8kJF#huk5dl z=u_gX*=YiUKx59fA>ei{0CS)!3gv==0FW+#GXj8iMZoQC>=D-HKmZR90O4Ve0f2$0 zO7EZ5VD1<@7u0|Bbh3vdkm#Ss*Dz29l6#Z?*;o26h2MNHa(4Bn-`GE-$C>{nCI3hN zONfJh_rHXsn55{b|3y!q{__7n1NUJl!08151prE$InmxD|dP>VO0+d3I@mgOu8WXfCwZ8^$>UsU~^jIY!>k$ z_#csz!CjDO7bk?UlZ!1MP*vAZ{|*Fr4I%6b!`Pkn@cvzUHh2D$7WFsc(>Pp<* zcMDHUmM`*lommz%IhEqIpfC(=?vs+JU}a`0(8(cZ#l?4UNw^kaK7i7>l&;d3kbSUc z5W{Go@P?7%HAZH~5~c3xN(v5b(G($OtjFj=^vA~TMW6C0!h!JPICEtnsZ6Wk>+-4?xyI*FY5P*X7b18* zQ#;)wb!KCta{=d#O`e1}nLA{Bz1-#8=O3ZjB$@bOMLE^qS1N+M{DYsVde<-Ax~PI-9sxr3cjUIH?G_6g(t%feuXw9=AAUxMz3LTVO`c!x z-iK8l+1Ea?1$Wfgc+0XLF6wk8{@~z1deC>fmDu@4>z_50m}cVFp60T@BtE9^ zfLC2p<{wc@E=|>fqTKrK&iDqRt|E7RVi|W1sI{d;%2R@=n@UQyDr(1$H)e+0S28sF zj3@-0|uGPWd$n3h~PH2NKF@Iz64wvvwt7qD#B9 zL;y087W(|OBp+r4J||c&>IA&o@^tRJl~|CyVsKA6E%55ZgHHv?)N=PqL;~#3HxH7N z%g0mSV%s4Rmtr`E(U{7xO&xq(Ki_KQaemjmzNp6jP5PBrV;c4*lr37?eL+8hTy3pF zgu}X^WYUcErNvyjGsvM)^^nd>wt|^~DZR-vJI3yUsOD6SDcBN#4lfTN{Albmt-Ep; zu2L>OHxl^DXwhbweyPlTTQ#7NW*XJyvcw#f(NNWay0oB`JTEvD)n408ADCBm7->Ed z$BtC$t>ta+@!)TnVO1-p}HQbjOFzFcaR@JepTP4?y_@6wC8ULj@kUBM2wb^(mdCpGI^ zyYScO5bw6=gbT{^Q}bp}yLDM#(1idUtkhn^r`{mLXadG7C*Zs%tZnna^>8Bd>%2%L zrE5#_Bl1ERR|q~N*XuYAKGuIImui6<0I@k?@!(s`*e6Td+@VJGx1cW6hb0FMdux5S zwCmD2FHDjj-kr&jZr#`HY)x4koye0E{dQd|7u)73CLqK#$Q`vCP-)ioKt>~lzg6$) zqrR{PkJ6{v<-_iEJnCW|DJHNwh>Otz(~WxvejNmw`{R7y2OxTG&cK~ZR%##>T4usq zZo;Ls+mrkFrF_|pxCJwJBJ4#-yzmauIvYgatKC$$f1Eo=)h?(rHgsx^lgEvId)bV9 z32wVg|Bi5`+``1ow}-l~E-MWvRqP-P!IJS%3XO^nJ;smQWi$8Zy|YUtq|i6Wd=F(h zZ!*C;faYZA?@;uyJHgt)uyg58OTIEMw5*V=#dlA1TgwqITi#xvFbD+`UYW#g>EPVn zMbjp1`bqoqaGi7?yw&!Vmyn8-8SkapO%pZ9CxxGgEo;=gBPl*cgmZDVBt8Eoam{-y z)oskabX+^4=US=$3zTy=MKkC~dIZ0H2@(`s7)X6*8g@@u(<1#zyl5<&)9vUQ7UMUf zbLK@OjL>H5>5}#t1egUoD+)`Q@8G4e6O*WD7I0> z+U0SSp%YPwkxaVG5zLYHeALwZW^7>Z!sz&de!0I?oJ+4&3T>lyNT6Joi}(f^^-G#> zKna44%!2d#9U=-fu5?8gt_s;TOgk|~e=M z(haQdGr5=iTH8)nZXH;?u09#Rz+BrXZCbX1J_FzZ&qAQk9c)lKpP_OPIw=^k(M^Gp*dN^34MCzJl$h3Ui?QeGHsaDBf>&F zqwOuqj`uz9``CKo1H*CUef*-$lqTa6g}S-qAwocs+buTNG{q4LW!zdhZgnFu=iW@$#^D zf0!8E&1jN3HHCmZht^t6Q-p~0<_c{(bLj{Xt5i1hdRGraD|^yyDcY4!d-o$4l02VE z&+arc1Yff^@DZkNrO)5*jC&(eiO!G7h}0e!#Om+Qbf#XE?uQKfdXXd!NvX90NzW5; zt0SHXPbjk2s*xuh7Gn=nL@SaPm8ttxo;2z(tVa^e5jIi1!uc^cy}rw0Q*RMCuh3JnYF?qDv`?-IL0QE&DEbmYE~jLk>}h4zB57 z;6oAJH5tLx?sA+!XARU`KFDFukndYzpGW#J_Qi*UiSH8(tD0#Wrs>09LpoR{^L1ID zMPm&z6|Y@Q^-Z9FJZwD-W&e_C!5(&}l!&3t3|pI<_Bmbdt145s!Jsv>o(=t0QI7v+ zGnB)5``uQH%0Vr)a+OoQUfv?pORr*xjAvv5OmwCT+}s%9aG%X%s?T~S!@M{xw@kVb zZgt7*U1xOCXa6LlnDf@|LOEtnY zzEqI5I?^(M0wbC{FSeDM2-nc-o1E;!9@>}mJ~k4_5%AW2OFy2J5?aC!ba|GrUzh(P zH;-Q}UT$e?iP2ahx_SRHUmJWzK~H0=sYo(Sv;CoFNKS0`?pnw}6L2@0kuoY~0C3b+ z_k!U@)uxiwmc=_>0=RarSRrwE57V$m7v)j9VoIa}Zbcd7XOT_%a<|WLoHcHNG0?yM z0&xIkXbv*X;f<&-J~D0ktzl=)Yh^sN#>=}bAWq2yb+@UUp2fJT!Ms(AOcv7K{%ni+$8 zz$=z&nRh69i)q$1V{6|q#WA)wJ;}m$P;M~_q`Ws!oTG@tIASTaFohN0jW(4Wys~dW zv&H&%2xFyaB|l$KkInQmtnQ4u`O#-zba;D>Vp=+{xYhDo1^<}hIhg?y&L$wKx5*C{ zr4WXy0_Fj9J&8~<%+@{Iv0Z*4CAy*GNz-&=oj>&+=tc898+nvWmPMdINsE-cTouy4 zrK^}eind7L7z`S$TTlVooa}3NM2i-<(%k1T#!a(%EAXdr^|qP}<;il0R}=Hj2KoC1 zh^$(!w~U(47zn-L%(^TYAW-!HoVUq_!kOEjr1Q#9Y^;WS*xbU2i}zF3R?hPoDqT2M z^F~d2X;*s_sL%kd;)BWDdAPRxOXp@M_rHu-J&Q;Rs+i|c66vVN-lcvKrVz805jc+O z!f2?HlA-C?r?f5BwAZHUjm4-Eld?r|f~HYf>-`IYq4Uo4oTMeT)ZwV8sl#gA_q{Tz znWptaRUdk8Q?>g;VAAoh4TtOif7Nyp4(E%<#;@gbrTlQR`GRJ!F2!+j$9a|u>aS%8 zkNlwTdaGySDF-|K<}yunncD&gsvRKudg_NN+cm@R>WQpYsvyRGeRvo}&)Y$ZS2TTV z!?DaM#u?#pYqR<(OWy0Pt-|^RR?9I;uO5NIZrtvT&4dsS%kPtw}<6))- yt=kRJt4#0W>hFnshu(4QecAmmIH4odAf{v@=5VI8kvw%kgq3P?0(H++;E@y9-yRnL literal 0 HcmV?d00001 diff --git a/node_modules/tar/test/dir-normalization.js b/node_modules/tar/test/dir-normalization.js new file mode 100644 index 0000000000..9719c42f35 --- /dev/null +++ b/node_modules/tar/test/dir-normalization.js @@ -0,0 +1,177 @@ +// Set the umask, so that it works the same everywhere. +process.umask(parseInt('22', 8)) + +var fs = require('fs') +var path = require('path') + +var fstream = require('fstream') +var test = require('tap').test + +var tar = require('../tar.js') +var file = path.resolve(__dirname, 'dir-normalization.tar') +var target = path.resolve(__dirname, 'tmp/dir-normalization-test') +var ee = 0 + +var expectEntries = [ + { path: 'fixtures/', + mode: '755', + type: '5', + linkpath: '' + }, + { path: 'fixtures/a/', + mode: '755', + type: '5', + linkpath: '' + }, + { path: 'fixtures/the-chumbler', + mode: '755', + type: '2', + linkpath: path.resolve(target, 'a/b/c/d/the-chumbler'), + }, + { path: 'fixtures/a/b/', + mode: '755', + type: '5', + linkpath: '' + }, + { path: 'fixtures/a/x', + mode: '644', + type: '0', + linkpath: '' + }, + { path: 'fixtures/a/b/c/', + mode: '755', + type: '5', + linkpath: '' + }, + { path: 'fixtures/a/b/c/y', + mode: '755', + type: '2', + linkpath: '../../x', + } +] + +var ef = 0 +var expectFiles = [ + { path: '', + mode: '40755', + type: 'Directory', + depth: 0, + linkpath: undefined + }, + { path: '/fixtures', + mode: '40755', + type: 'Directory', + depth: 1, + linkpath: undefined + }, + { path: '/fixtures/a', + mode: '40755', + type: 'Directory', + depth: 2, + linkpath: undefined + }, + { path: '/fixtures/a/b', + mode: '40755', + type: 'Directory', + depth: 3, + linkpath: undefined + }, + { path: '/fixtures/a/b/c', + mode: '40755', + type: 'Directory', + depth: 4, + linkpath: undefined + }, + { path: '/fixtures/a/b/c/y', + mode: '120755', + type: 'SymbolicLink', + depth: 5, + linkpath: '../../x' + }, + { path: '/fixtures/a/x', + mode: '100644', + type: 'File', + depth: 3, + linkpath: undefined + }, + { path: '/fixtures/the-chumbler', + mode: '120755', + type: 'SymbolicLink', + depth: 2, + linkpath: path.resolve(target, 'a/b/c/d/the-chumbler') + } +] + +test('preclean', function (t) { + require('rimraf').sync(path.join(__dirname, '/tmp/dir-normalization-test')) + t.pass('cleaned!') + t.end() +}) + +test('extract test', function (t) { + var extract = tar.Extract(target) + var inp = fs.createReadStream(file) + + inp.pipe(extract) + + extract.on('end', function () { + t.equal(ee, expectEntries.length, 'should see ' + expectEntries.length + ' entries') + + // should get no more entries after end + extract.removeAllListeners('entry') + extract.on('entry', function (e) { + t.fail('Should not get entries after end!') + }) + + next() + }) + + extract.on('entry', function (entry) { + var mode = entry.props.mode & (~parseInt('22', 8)) + var found = { + path: entry.path, + mode: mode.toString(8), + type: entry.props.type, + linkpath: entry.props.linkpath, + } + + var wanted = expectEntries[ee++] + t.equivalent(found, wanted, 'tar entry ' + ee + ' ' + (wanted && wanted.path)) + }) + + function next () { + var r = fstream.Reader({ + path: target, + type: 'Directory', + sort: 'alpha' + }) + + r.on('ready', function () { + foundEntry(r) + }) + + r.on('end', finish) + + function foundEntry (entry) { + var p = entry.path.substr(target.length) + var mode = entry.props.mode & (~parseInt('22', 8)) + var found = { + path: p, + mode: mode.toString(8), + type: entry.props.type, + depth: entry.props.depth, + linkpath: entry.props.linkpath + } + + var wanted = expectFiles[ef++] + t.equivalent(found, wanted, 'unpacked file ' + ef + ' ' + (wanted && wanted.path)) + + entry.on('entry', foundEntry) + } + + function finish () { + t.equal(ef, expectFiles.length, 'should have ' + ef + ' items') + t.end() + } + } +}) diff --git a/node_modules/tar/test/dir-normalization.tar b/node_modules/tar/test/dir-normalization.tar new file mode 100644 index 0000000000000000000000000000000000000000..3c4845356cecb20939b415830a5fa9717fb91341 GIT binary patch literal 4608 zcmeHJS&qUm4DC^J0f_Cy&3Qtn6-dKR7m2w&PN6j7t4Me>Xkt~0n?~MVp55+r8K=G- zY^5gv5SUE`972tqikXFmnFvea&It?*4!@B>h$+50` z-pt$IGqpQZU1J+8}SF0 zCIB7{5IUmDkd5|W8~bGygDd>M_5W1rH{-sT+lc?%|G~}t525gXDWB^4;D59iEk}ZX z?bE#9F#qrUKRCf3v;xZQ7XGjNZ*)4qOZ=A~MLp$ne2HwSHsX(c~XH?({YrM8z literal 0 HcmV?d00001 diff --git a/node_modules/tar/test/error-on-broken.js b/node_modules/tar/test/error-on-broken.js new file mode 100644 index 0000000000..e484920fd9 --- /dev/null +++ b/node_modules/tar/test/error-on-broken.js @@ -0,0 +1,33 @@ +var fs = require('fs') +var path = require('path') +var zlib = require('zlib') + +var tap = require('tap') + +var tar = require('../tar.js') + +var file = path.join(__dirname, 'cb-never-called-1.0.1.tgz') +var target = path.join(__dirname, 'tmp/extract-test') + +tap.test('preclean', function (t) { + require('rimraf').sync(__dirname + '/tmp/extract-test') + t.pass('cleaned!') + t.end() +}) + +tap.test('extract test', function (t) { + var extract = tar.Extract(target) + var inp = fs.createReadStream(file) + + inp.pipe(zlib.createGunzip()).pipe(extract) + + extract.on('error', function (er) { + t.equal(er.message, 'unexpected eof', 'error noticed') + t.end() + }) + + extract.on('end', function () { + t.fail('shouldn\'t reach this point due to errors') + t.end() + }) +}) diff --git a/node_modules/tar/test/extract-move.js b/node_modules/tar/test/extract-move.js new file mode 100644 index 0000000000..45400cd9bb --- /dev/null +++ b/node_modules/tar/test/extract-move.js @@ -0,0 +1,132 @@ +// Set the umask, so that it works the same everywhere. +process.umask(parseInt('22', 8)) + +var tap = require("tap") + , tar = require("../tar.js") + , fs = require("fs") + , gfs = require("graceful-fs") + , path = require("path") + , file = path.resolve(__dirname, "fixtures/dir.tar") + , target = path.resolve(__dirname, "tmp/extract-test") + , index = 0 + , fstream = require("fstream") + , rimraf = require("rimraf") + , mkdirp = require("mkdirp") + + , ee = 0 + , expectEntries = [ + { + "path" : "dir/", + "mode" : "750", + "type" : "5", + "depth" : undefined, + "size" : 0, + "linkpath" : "", + "nlink" : undefined, + "dev" : undefined, + "ino" : undefined + }, + { + "path" : "dir/sub/", + "mode" : "750", + "type" : "5", + "depth" : undefined, + "size" : 0, + "linkpath" : "", + "nlink" : undefined, + "dev" : undefined, + "ino" : undefined + } ] + +function slow (fs, method, t1, t2) { + var orig = fs[method] + if (!orig) return null + fs[method] = function () { + var args = [].slice.call(arguments) + console.error("slow", method, args[0]) + var cb = args.pop() + + setTimeout(function () { + orig.apply(fs, args.concat(function(er, data) { + setTimeout(function() { + cb(er, data) + }, t2) + })) + }, t1) + } +} + +// Make sure we get the graceful-fs that fstream is using. +var gfs2 +try { + gfs2 = require("fstream/node_modules/graceful-fs") +} catch (er) {} + +var slowMethods = ["chown", "chmod", "utimes", "lutimes"] +slowMethods.forEach(function (method) { + var t1 = 500 + var t2 = 0 + slow(fs, method, t1, t2) + slow(gfs, method, t1, t2) + if (gfs2) { + slow(gfs2, method, t1, t2) + } +}) + + + +// The extract class basically just pipes the input +// to a Reader, and then to a fstream.DirWriter + +// So, this is as much a test of fstream.Reader and fstream.Writer +// as it is of tar.Extract, but it sort of makes sense. + +tap.test("preclean", function (t) { + rimraf.sync(target) + /mkdirp.sync(target) + t.pass("cleaned!") + t.end() +}) + +tap.test("extract test", function (t) { + var extract = tar.Extract(target) + var inp = fs.createReadStream(file) + + // give it a weird buffer size to try to break in odd places + inp.bufferSize = 1234 + + inp.pipe(extract) + + extract.on("end", function () { + rimraf.sync(target) + + t.equal(ee, expectEntries.length, "should see "+ee+" entries") + + // should get no more entries after end + extract.removeAllListeners("entry") + extract.on("entry", function (e) { + t.fail("Should not get entries after end!") + }) + + t.end() + }) + + + extract.on("entry", function (entry) { + var found = + { path: entry.path + , mode: entry.props.mode.toString(8) + , type: entry.props.type + , depth: entry.props.depth + , size: entry.props.size + , linkpath: entry.props.linkpath + , nlink: entry.props.nlink + , dev: entry.props.dev + , ino: entry.props.ino + } + + var wanted = expectEntries[ee ++] + + t.equivalent(found, wanted, "tar entry " + ee + " " + wanted.path) + }) +}) diff --git a/node_modules/tar/test/extract.js b/node_modules/tar/test/extract.js new file mode 100644 index 0000000000..eca4e7cc96 --- /dev/null +++ b/node_modules/tar/test/extract.js @@ -0,0 +1,367 @@ +// Set the umask, so that it works the same everywhere. +process.umask(parseInt('22', 8)) + +var tap = require("tap") + , tar = require("../tar.js") + , fs = require("fs") + , path = require("path") + , file = path.resolve(__dirname, "fixtures/c.tar") + , target = path.resolve(__dirname, "tmp/extract-test") + , index = 0 + , fstream = require("fstream") + + , ee = 0 + , expectEntries = +[ { path: 'c.txt', + mode: '644', + type: '0', + depth: undefined, + size: 513, + linkpath: '', + nlink: undefined, + dev: undefined, + ino: undefined }, + { path: 'cc.txt', + mode: '644', + type: '0', + depth: undefined, + size: 513, + linkpath: '', + nlink: undefined, + dev: undefined, + ino: undefined }, + { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: '644', + type: '0', + depth: undefined, + size: 100, + linkpath: '', + nlink: undefined, + dev: undefined, + ino: undefined }, + { path: 'Ω.txt', + mode: '644', + type: '0', + depth: undefined, + size: 2, + linkpath: '', + nlink: undefined, + dev: undefined, + ino: undefined }, + { path: 'Ω.txt', + mode: '644', + type: '0', + depth: undefined, + size: 2, + linkpath: '', + nlink: 1, + dev: 234881026, + ino: 51693379 }, + { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: '644', + type: '0', + depth: undefined, + size: 200, + linkpath: '', + nlink: 1, + dev: 234881026, + ino: 51681874 }, + { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: '644', + type: '0', + depth: undefined, + size: 201, + linkpath: '', + nlink: undefined, + dev: undefined, + ino: undefined }, + { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', + mode: '777', + type: '2', + depth: undefined, + size: 0, + linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + nlink: undefined, + dev: undefined, + ino: undefined }, + { path: '200-hard', + mode: '644', + type: '0', + depth: undefined, + size: 200, + linkpath: '', + nlink: 2, + dev: 234881026, + ino: 51681874 }, + { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: '644', + type: '1', + depth: undefined, + size: 0, + linkpath: path.resolve(target, '200-hard'), + nlink: 2, + dev: 234881026, + ino: 51681874 } ] + + , ef = 0 + , expectFiles = +[ { path: '', + mode: '40755', + type: 'Directory', + depth: 0, + linkpath: undefined }, + { path: '/200-hard', + mode: '100644', + type: 'File', + depth: 1, + size: 200, + linkpath: undefined, + nlink: 2 }, + { path: '/200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', + mode: '120777', + type: 'SymbolicLink', + depth: 1, + size: 200, + linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + nlink: 1 }, + { path: '/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: '100644', + type: 'Link', + depth: 1, + size: 200, + linkpath: path.join(target, '200-hard'), + nlink: 2 }, + { path: '/c.txt', + mode: '100644', + type: 'File', + depth: 1, + size: 513, + linkpath: undefined, + nlink: 1 }, + { path: '/cc.txt', + mode: '100644', + type: 'File', + depth: 1, + size: 513, + linkpath: undefined, + nlink: 1 }, + { path: '/r', + mode: '40755', + type: 'Directory', + depth: 1, + linkpath: undefined }, + { path: '/r/e', + mode: '40755', + type: 'Directory', + depth: 2, + linkpath: undefined }, + { path: '/r/e/a', + mode: '40755', + type: 'Directory', + depth: 3, + linkpath: undefined }, + { path: '/r/e/a/l', + mode: '40755', + type: 'Directory', + depth: 4, + linkpath: undefined }, + { path: '/r/e/a/l/l', + mode: '40755', + type: 'Directory', + depth: 5, + linkpath: undefined }, + { path: '/r/e/a/l/l/y', + mode: '40755', + type: 'Directory', + depth: 6, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-', + mode: '40755', + type: 'Directory', + depth: 7, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d', + mode: '40755', + type: 'Directory', + depth: 8, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e', + mode: '40755', + type: 'Directory', + depth: 9, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e', + mode: '40755', + type: 'Directory', + depth: 10, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p', + mode: '40755', + type: 'Directory', + depth: 11, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-', + mode: '40755', + type: 'Directory', + depth: 12, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f', + mode: '40755', + type: 'Directory', + depth: 13, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o', + mode: '40755', + type: 'Directory', + depth: 14, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l', + mode: '40755', + type: 'Directory', + depth: 15, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d', + mode: '40755', + type: 'Directory', + depth: 16, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e', + mode: '40755', + type: 'Directory', + depth: 17, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r', + mode: '40755', + type: 'Directory', + depth: 18, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-', + mode: '40755', + type: 'Directory', + depth: 19, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p', + mode: '40755', + type: 'Directory', + depth: 20, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a', + mode: '40755', + type: 'Directory', + depth: 21, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t', + mode: '40755', + type: 'Directory', + depth: 22, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h', + mode: '40755', + type: 'Directory', + depth: 23, + linkpath: undefined }, + { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: '100644', + type: 'File', + depth: 24, + size: 100, + linkpath: undefined, + nlink: 1 }, + { path: '/Ω.txt', + mode: '100644', + type: 'File', + depth: 1, + size: 2, + linkpath: undefined, + nlink: 1 } ] + + + +// The extract class basically just pipes the input +// to a Reader, and then to a fstream.DirWriter + +// So, this is as much a test of fstream.Reader and fstream.Writer +// as it is of tar.Extract, but it sort of makes sense. + +tap.test("preclean", function (t) { + require("rimraf").sync(__dirname + "/tmp/extract-test") + t.pass("cleaned!") + t.end() +}) + +tap.test("extract test", function (t) { + var extract = tar.Extract(target) + var inp = fs.createReadStream(file) + + // give it a weird buffer size to try to break in odd places + inp.bufferSize = 1234 + + inp.pipe(extract) + + extract.on("end", function () { + t.equal(ee, expectEntries.length, "should see "+ee+" entries") + + // should get no more entries after end + extract.removeAllListeners("entry") + extract.on("entry", function (e) { + t.fail("Should not get entries after end!") + }) + + next() + }) + + extract.on("entry", function (entry) { + var found = + { path: entry.path + , mode: entry.props.mode.toString(8) + , type: entry.props.type + , depth: entry.props.depth + , size: entry.props.size + , linkpath: entry.props.linkpath + , nlink: entry.props.nlink + , dev: entry.props.dev + , ino: entry.props.ino + } + + var wanted = expectEntries[ee ++] + + t.equivalent(found, wanted, "tar entry " + ee + " " + wanted.path) + }) + + function next () { + var r = fstream.Reader({ path: target + , type: "Directory" + // this is just to encourage consistency + , sort: "alpha" }) + + r.on("ready", function () { + foundEntry(r) + }) + + r.on("end", finish) + + function foundEntry (entry) { + var p = entry.path.substr(target.length) + var found = + { path: p + , mode: entry.props.mode.toString(8) + , type: entry.props.type + , depth: entry.props.depth + , size: entry.props.size + , linkpath: entry.props.linkpath + , nlink: entry.props.nlink + } + + var wanted = expectFiles[ef ++] + + t.has(found, wanted, "unpacked file " + ef + " " + wanted.path) + + entry.on("entry", foundEntry) + } + + function finish () { + t.equal(ef, expectFiles.length, "should have "+ef+" items") + t.end() + } + } +}) diff --git a/node_modules/tar/test/fixtures.tgz b/node_modules/tar/test/fixtures.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f1676023afa2bba2aa18b5508c92f03e1d0816c6 GIT binary patch literal 19352 zcmdS9Wm8?>6E%oKa0>)?hoHgXLLj)iOK^9Wixb@4-2;JO!GpWILvVM$XZZb}7gIGe zUtnIH+O<#h+1^?)mpt7>+4-uRLlz3qxI~Dff#Gk#6 z`g-rTn_<`NkGgSqh`9%iyIO+RJMIEk@Q^cjEPzS$QFJLbkvahQFp1Gi?M1xtX z_d_3jPIjl>+%+o^H;key?OVfX3E8v2FgIk&q5@J)^5h?H8?w4%1l*k;@LW8A*KOPe z2m})_YIt^yV27?Sb9o}&8YLHw}wmBaI#s5;w$~1gL}Yl8$kSfR+T&Wf?T=;vdl4$nrcnE0Smw^kG$rI+igCu zLr{XYa&G{kKrnW&uV)Zm056SzBh^q4DFok3neK>2dnOF*v9)P(VIXSxruX3R_(6<} zOZDyM+Urp`x)%;WHfqw~UlV|((9x}_0fV6Gd7)s-8b8Iyj6dV=FE|k7SbKGn(HT^^ z)#XFd>jGa=?AGFLS4E*@QNW1Z$Q|ykv(g=BFX*Wsx?zg(0`LaBgj=IE_Wi($#wNW= zsOzqY_94)b9n`KM(7@!i*G@qTGS7a5nPO`&8Hxx?HJ_Gs!6KRIcU9CIXw9oVS zaHGn2ODfpk4(T4xmN)?#5wf70ksW$_I+pa)A=&N+ErhZ;zaOTE3v1zIS}$30$99_@ zb#iRJNa!r%r72#Uo2unZQ3}G@roGZvMz_6UPggT$oZ&9C#MNJTEnx0o>7^3(ga*-0 z&|(RQ5v%!l@f?}!_P4aUe|2XDn?Mi3*r3P46Qlh9V>}CRA zNt_D6UCg|6b#Tv={{aM$OtzmQ$i&Yf7iIx&i#I_l@h5^OhV5nYfI{AjKXEfz1ce5@z7!Ei78)mBhq_n%2+n=ux$t?fCf*hcr8^+}NV~}t0I|P;l~Dfy z!P1AX08Kyxu($y+Y>8+@)w&bh(9{}u_Nj(4Ujc>yYM_@la&?%B6_turyY$u2@C7Ki z>{{J++UgDrJ_)=BW)`g6JJY#8KLD>o53tw3D;snh2o7LH?m=^eY+@U^sAij6@eoCg zkH_?3)Vt4Z*h_A7gvEms*^r9@fY@H{SLyQhOQ~PLr_8c^m+W6 zlrdDj_DAr1kbw4f7X2lu)tdOTJ+eBX@l1;u?E88w$R9$A)^86lIoi1RR&Q1rArGd{eH6$HSpvF zphwMqYsS@TeAefy_J-C#%>?2!(}CsK(bvhQe_#uM6`q@?pN%Z91eOzx%h4)7d56K} z)Y>XP9eIg+MkFab6~VjxnM+BoY1%4Zx=r3HKSCDP%_@HsDh**J8G*6><~JvS-j5}W zzN>y}rrh9r%-$m-a*1~eCCjaY{4WI0Chrb*X9B!|^Ez45U3nMx9@%|hqVgKF`s-r!h3v08+ywa|;0oDPc?XrN()H-=WDK=y zYaai@>}TjqOax|hLM@tiXH#C5pD3I`W*?@g?R}KHX+&_+UXGkWX;7aZlAJxXSl*cx zS*GW$`UZnO^uK)BKz6l^dSx}sl1Qpa^#+1uSF~LmnY(|A(wN?|1xcWw5zz3P!XGbX!q*-V*b{#S=Ws@+bDjMqk5mR zjb|;MQs=`KY3kmnTUYzAgWsv)(G8PGVimd8_qS2d+csIGooYB7qs$E z8qKum8fe9z76`L9-#PvjK?QY-b|}l)`zd|C4?)Yy-$!6Y;d`A+A@xA{o}Vktxsgwy zoqqc4KkmMe6m5e2jhguA|+(eH*iS?hzyIMn+ z*2>F;9VRY<+KhECR6w;$kdWCzOCC^eK?4a7Uxwsj*i2qfYtIB9Ji+y%+tD{y;QP1e z`|!*1-wv?f5AXS?iz0#SV`herWGe_@YUeXDa_PUs2~Rq~;?TQPYo3Kf3i zz<-779Bf06Qb8L<@Y$qZ9>^Q%l>Ue4G>6=*i}+H@LkU9n%wtq2r4 z&#xwgbmf|^$iYsa7@p&r=mtL$WkG}?rn(krh*giCv#S|G{h4&`XCJoOfL<32oY8zO zQlQ29&yX7?JdBB2^7R5-gfm$|)W%Ck|I|qwjDe&U21RC{5t3J}t$P|NmVocL+8ZvX z@9;*5@cyf>rQ9^-5z1!?ZOk|`D=IEEySb!I_CoH@KUfDyXp$Gk+r;Rra`-! zj0UZ?_`V$-(;BbcvphCA{EylZO-QQovUdy|4w*%v^%Nm=LAB>D*I!)3##;t#V zcQ1#fZS3oy&zBIV+ORF3FXyeVT?^mfJ%lTndN~%rZbdF^7%edU-&fNIfy*>DMkS=5 zB2JS}KyEh((s@kEt3{)RqWQTnruDh&O#P7zMN=62AnH)=<3cv@ruC`+=v~dLMa^zo z%Sa1g^ap9J&UN(pNxev6GfRK3Kx;9=fZr_ixV z(x3w`A`sma*0_xyvpxGm3S4%GwwrjDz(NP{m-A>O{M5bxY7Pzaiyj2SuXY45KD`E| z!eE4+X$r+XeEdHucqp6>k^Cp#T$t&NHUI;>gt0=sE1&ED2uMo_%uEi!-|vGfHc@{01*RPWf;3OmcKDu@q4D`r~G_ z(cEfdB8)Dxe8|Rcw$&nDOk;}!Y+gW~kii^451AKm=;+x4SMvd&f3I;Fc=G>fCJHGY zv93XawV43cpe67!%BJw191>o~x=y17u+AJ`0N-_20YniO;WGecsI%O=*cuEYTNie# z)1u!4c5u7z{(%;Nh{C2QfCXNI1x);os8>UWsq3y)G6$A&v^7Xv2j5j5l!KIP5H-cq zh2#bm)_D|wCx&uy_%g7I zhQO3;_N&K#5-&8U3GnvX;2+0JbarZeLmcoY-vt@N#Pv-;bSZ7^BaMZHWf6}{AIHbh zrg}Px@lB<@8%BSEaa-=tE+27*iMCAsoaCGXVZdb&_Ul5p2ej^zzZOq-5!>U1tbIo( z%H{qV6h^G^=)*3(+=_v~wQl;y|9YjlvvG?FVRnAF zx-snu-~?f$))jXqriYcbVp;Lai=f z7LWwI%QDBh-25|8bwe;s6!)8egGnwV?GC_ZjizE1c_TyYYy+$qE|o_7|EJmKo7;AG|CH~k3w3D?x9E0F z3KI8Ac*p&BPG3Zxxbzx&kO7^nM^H6MWAo~CbWI!?x_!>;g-Ky^%Ijv>rl8D&<}ko+ ze8>LO)zPs7y@`dSoEow>+JpZ~@!z;KL@Q%HAB? z?p;$|4`WPDlLU^H;3-~PzR?twcq6r^GPayPVaXZ$5P@VzCtq7SNSZ`Cc~VsD;f+V> zOHgm8(cKe^_Z*r}tA1;a;}YuSPG$y=-cZ0R3-J1qy@k-WBn9{O5N}cx2lw^#^7FRy z#udOhocCr;-VyfG&bsQU~7jK=$3BDXX#V z5|YBb^8=U__EqasEAjr`GGkhAyP)o#v)+}CZOW)}8{VqNcL-u&zmwmGn@2K8;KI=-m!&T{tS+)ga26y*a5X?0&iWY?>yGgvkxeHcLrci?Y$}zH1+|a zNVc1$H+j;h=U^S=z2`+mk-33|yeD9{a zci$n8{f>Xx%33GVpxAqN1`_N&_y=%wFN06eKoby*W$>@GzII^u7Em#|hhS7f?qi!( zzaXv%i2AC#bSt`l_3X)j1u?(!zJO?faD&x(us$;H+eLREEaJ%reu#jKfFYeW`|_U` zZb3m@vdLQD5HaCG(iC`+zLo0p*i7NCZiOtKfDF3-%C_u04?^$z(SBF~N07DM86q6s z85)rr<-U=5sskV^#Ls{W1JsEKq^mSohn)PnsmRm9Vvq+GTC|-+Li)D}@9QU|fKZ#> z89U7#DC4<%_a>puerSK*^6HnbD=nP>S)=~j=3c-JutPA}tNxfe~;2BRqT5#}dMsM5r|8?n=XVw51`#Q*3`Pl-PV5$y+?;#JpXb66s zuK`r@o!+m~ssC*o6aRTX^OzQJuCMZ+sexC+W=K?c#tArlW9x1abQRQH18{65-gR*z zxAZ(CChP(w-6bcWKScj62Xj{eUF0!sK;RdgLmedIoy-yUe}XUWaUI|89DE{@0NFsM zYOufVe=mmz{>Sw{e?yw1KWrGi^+3CxbfLb7ZBRI>lvChz(hz%ElDPlU_Lv*j78+RLYcK15!Fyrw!z6z$$w`>R-O&B|%F{bhq5hog z04W$UeDp7_!8Q?HhwhEE{c7|;=n()KS{df@p@eSH46p|Amudq35H+=@vU2kn+SwAj zE4&0p(S<%bw>)UKKizKko)0#Me;01|d^_&{=?QpU9Hhlz#JPiHKYPC-1D=E=fVxNa642WUvph;I>V8~GfQLR^emR^tS?_)0nWH#e zJ-4_!dFfbh_IYNtk-Ah)aEl-7bK)NA8l8w#)jG2sTS8oJwpBXvTDCcDn!kX8iyN8< zocN=i#-6Qm7hJgE=a1vl_^>*?G1%b*{vPnxuUjB^`K^`kijzO)i$u0(*`|!G0Pr z{1+;^@g$>2+9CXSyFa;Ob&5DCe!xXimh+*Su=-fIX0p^2T8maoCPJMOt`v_g?lvNz zdE!}22fk4I@Gm*2=bRHkYhb*+xx$-?RT=!b?_t*eVD9+spO5`5ruV?7SXSD#TlU|a zotQvYjLQztfs3i+QOAQn1lqNQD}`p|xTS4840q&&uczdt4VrVdh8i8X*z1)GSOSfH zL>smDyHHd(LSwi}`6&V?=ND}22{YM!ka0|6(mhdt5P(oh#Xf9YI8hob4Th7yvGmFp z;kkYNxfAaE%MlG_{$sJ_90OJMqqKjbC}`j@OR0!f8I==;5s_5%3#~+AeII0jE+MYo zDH0CFMOu}CEEK`;w2QEFX$5SCMk;aXx0cu4;zb(3_}rT$YHo$)OKAhI5;J9}2wNjD z!fpH{j28Gwfw};#;lq&Asq+w|Pz!O8frkgAm^?7L~UGScl-?lo9__q4Y(A47B zpAJ_zT}^kjueFbwSv}rwwo@e;sb53I(QX?yttxn$9@D@(=5-kD!pK~Esfqyuf@=WA zTgZjiJe~j36VFKm??(BTo9)@v;EuTCgtL_g!+TZ$vYvfW06Xw-r%dd}`|S7x>j3e! zY*ZSodqMw~A2et>DqMPpc`KmUC?!Svac8qHsmn_-vy>Qp-uCw4DIsfvNS;<}|UqE1v1L5t(E0Zf+zv7>t?j)BRv`v89t0CVGmO=E&Mli>C zS!nCy<+GeO)r;yZQAR9$MdLo*bp7{^TDt{SskIRzs3OJU;9)CaA-<1q5$^O*7N9Z~lZ(I&w`Y4jg4DnaUm_ zn$q-85%$sxEyk6;y0f3Ta4gU~!;=$JVK8(VV_4*$$V(OYj}?suJhqS6XL1IL zI-f8ImvB!n<;~Vj4~mjA=`OIxavM+~8uu*N$Ct&YzWxY!l-5bOsMRn?*TeTXzf)AM zY6qRo|Xx!Lp#{p33m01t-HZw~2f7we9*ssbILy%RT$N?Devedw-hN zmAF0M#h=c}jS+7K;h|0aK$0?lIFzDXY4G`7He~MslRI*Sn;P6FO+^`bTwZX-S@>qW z0lywtK(O^U8SgmbQ$1A`Nq~eaVxDlPz!D&Zx19vy{1Z2&?SIGBuTA!^4o^!39e%GG znvxQ=39~R*7E_v<)8e={Ex72-5Ht-V{A7f*vYqS|j2Sd6B#HrJs(#f7`np(%MdU8M zjIAil(WHpzV1<<+_lqa=F)e90Z))bt+NgwWc-N`FaI((UFog+~_c=bXFHs;(`tW0q zS#ZdemGSLAO^FcF-i2mgsN61Wkr%pNVm|N>)M%34D;}y>mB?ngt}jE}-%J#hsb8PJ zg<|G?sjO8~m=j+}LWSX>tG`SXl&)KrP!T*F1>uvKuiFF7Hbn{{G}$M&ynuObi4&+1GJ>z4JkX_I5AxKSjk1d= z(9~6Oh;a}{YBrnqPLL5*j#xioG7m9lhMTNhtk8cNY+BuzVoB0 zhir`hasHztJ!ptjHv30W6qZg~lh}H+SOyJE3}$Q-ugoAF!8f7l+8Qep8)3HCn>N(h zsQ@TRDBh9u$+cfnZqIGVe;p-*sBybSI{0JlgNMKF{7M+GB8~$@Ai#3h@yBtcmX!(i8g_ke4V56?ZEzGLR8k1ghRaTHS&5_x?g$ z#Qvk~W|MENd;nYG*JEg>(dfT86(lWQbC|7e!E_-}KRL_#zXYH@+kK9-<>>jacqVtfd~w70vFyopsz0`P^V+|8jqp^S zT~JBkxJG`-F@u&F)f0d0#(4j!y)}qltWbOP@ zAJTksj6=pJv)9d>GYnIo_QE?Ob|d%G`VzROz2|6k z6l-NpVtAXHu_O;7d6z;~o1U7?{}Q;*F^gCK1jjKpZ8aIke{q*s4N|!rkunY*8ut;Z zL$_>4yZ$tXS!(df&}J-bSkhP~nhy|V@9EyOjDKE!Dwe)pC4o!ec^10NdY)mO^OtU< zqu0*o{LU{vA+To}zM|AN+t3iT$w$%ick;^o=7a^ehFmsxM{_d0HSm?60F;IPOxMfF zIbatnUSgUuC6s#)Q3Fq@gu%TIm&6e@So(f%zXtbDXDx#Nbg1L8%rd?Zs7B7*KnN@o zm4$PQ2aP@}vJIoinIc1vt`p^uYlcmHspz3c>9ti~cImcMEoLUrwRW+LaBuz;E_2A( z+(b`>#px%qWK=)t@+`|h_8M|?dZ~)1`$|wYG2D`9OKZFZ1j%Z0V6 z$XWk~^;0mR6hd_Q;PDfHc)!_gX+`erEyKU-|>^{|+m*+&>F2P~+ubElv&U+s; zMOT;j`(EF#-|hcKD5t|pQn3(uDllY-t&_pRD*Rd&>*Wh#IPVs`(jzhK?u++PJ?nFk zsKQxNQAVBF`E9#CVppX=7?%)6hcn3Nhks<5Y|Meq-1I~_mM)aITOCfslr1Q4`k4Vn zo_FL>Mxadlp;a!UHxw!v;2cL@VG&^!Pm++mETuJhL`P_m6a3dfQ=uEg%Z{(Sa>TJ% zH%h(4b>L^vU?r-`;&R~XY?y*lUiHs7_2nWmZq&Cc+5N_o4*hcVpY?V2KUd4pInoBw z*Dv#EGKstlA9Oj1YUTM9qnq@Y`u!w)Hh=#LlF{TVN6{Z9A+jg}4up}QZsY_JKR)L(fx%d$j-tX>- zDaxr;2{IYl$t%Aj+7Yw(wb@-;A3nz*$3%E1E)?9N5FCBDUoX|yY1kr zfWQ{f>0_j8AgNcqau@?YJ<>3bmWCRbAHtBEc%7TAupMYDyhiPwj8m+t>4`~YjtlR_wW9rJw#o-CuSAhgo)2pHC-F*A&z*s{N2g~rsor5|9DN$wLrN^N`zCH{## z0!?mI(KswjWMRQjGM5e)D94iW;~(YPc$$j@sB|^F$EgsP`T4UwX-tfb#bdRV;A$iBXvzM3@=aFWUEX%|J*ygV$I^db3N@n%O(m^UGhrL383yT z`fv;-6G}Tyb0jxdo-VRPD4t6A6~20;OzN{o`~VT_EKfnk*OdTvp(I=Wfd(rJuN0O9 zO!GR!ejfTqa_mEeZsh=hh@cN17>xfY(q1`jc*iLJrU%ZwePcLUG8cuF9c85<0GuNi z3WV88IL`xuI(Lo|b{+i2=;sN%!mtpSZM3E>f84c|fLsfKIyqQKB30N*kg6!{>z%d!r1){}Y= z8j0E&5CNZpIxi^}5Sn1wbAZF_+NJ+Ai-(Ns2gvm9w}n*FUK(2NQqgolH{>4;uS z_{_9R8KALTb#FaqsieTzXtWcGq7xAt6VZ{>xUWac#oNPr_}$r68O4**_s*#OQ)6-p z(V`NGQa4{5iI@16BlsnU>F8v|N7$xtRfv?}?efaczWPd@%d10)C9D|Yc3dLyJ|uoc z9J|^xt&=e}f%E)4AG-vM{O~a=B=V)OLLL#be+<}xKazE+tEionvTi0Yfi9u3BIf^{ z6UXt~)3)y18FhrztLv<*S@cUWB;M{@Z-Wx!2~mVdsl~{bj3CKea9T#?kE(L{2g~@% zhPGsu%JKch+FVb?WNAjl=wwoqp3iJBc?8?Nz7j2El*Z4tiVbv@@b0doV?g8`+VL0u z+va-7wsHNhFK}_OV9ktOs&vX&f_gB=U)A1)3L=vlRPm2#SFPj+ldfpf-w1IBAZ#=B zfq{y4Gm$gYqfaGT0jQdKPum>mN{C4*LhdDmJx&#+ck4+3>6y% z&s8(>scOiSKIas!i}Vn4orh&_(p3a~&ukYeTH~50X}t}L=t085xv}kvOuO#Wel?03W#B+I5zE`mmtNej&8T)u4H zT6JUpm*}aKgs+2W;sM$>81aVq(M%JG6er@Gm^OroJNgB(JvQ1VxDg#hxc*HSjE2-P-IvS38)>j0J~r-4EMVr0D9wX7ONy7J7};c@0ixt4`}QXi9= z69xU^G6hn%YI%~2;0@E2TjF`Mb@c<8@p$gY|tS%CF&IzAJ z0-{;AvH`_1l4np-Nv@u-jYH&c5_fr6DIh}CN>96-f%K)l<59m@70pPTCae-$F1s;X zxgE43SW5K+s$q1Xm|kWUE2_))v5&aL`HDA6&C7Jfq{=tiJY_qJ{Y4gWCo&b>ztQ|} z$Sf6z$Q}1U%rm$kE$@<>tu&Y#76I^Ge>01rPU@%8rr&1hOEiu<16U4L)W^9hh`!-#dYW<& zrTqDTS>G_V_Eptq3WY3gi}=!V)y_isvd=Tr zDmb)dZg9`DDnfRp;TI38hX&NbsK}~V97!Cj!!nMCMAMFu5ggD>34ZkqIb&wGO8~qGk&OP&Czw7>2bj=cw?jRLV2V)~clR z(ql!59qI)^FUt@bPi0PP`7tmP(zQ*gsNS#fTwj-zt{TKtx_(41LWR$Pw#3sjCkd!b z{`2*K@gOi%o~XI-ho2DFV-=`aNYz|Moje#qi*8+rnK<01Q77dNaM>xTNim9B!(eK=HML^A)x3%H+M7O|#ks`KF@1WTf11NaDF#O3w6;G^ zT414+x~Qn&4dg_9D4lZZYTe~mPENYEU1+q$^b$O`-hZSq59z?Z$0ZyTWzsL8mVM4v z6>vIGO-yRshj=1Qi6{g&Lk@9sBeYEksGV+B~^hc#-$OB(9oM6oU=_4G&{z;S#+Flj4tNFw%yhtD;xMtB;UiY z(O^1E$l>b^)S0U*jCPl7u4CrmMz^g_@O+kAb+8;LmMq?jh|W|XM%!txx0;*AGBV=Y zvndnZ%T|-SGJeHnjI7Z5iHol>8~*5M=;Hvbd2MoL`kYF8g^ZP%c`!&F2A>vgnjp-! z?`|<*(sieWAeKpOre}>;NjhBKKkCe;0$Za=nVu724r(}L2M!e$>%=_MZ{%cq4qc-z z9eapX^OQJ>KlvMfL*qU-qb^noJeT%K(f1l-Z92>^2oXZxIMTH$h9r_dxb5|LhG_4| zPPcPkm5CADQ~et+oIc$t*!M3ASwwvh%?SI*XM-Xbz2o;<*fBaY7EY^1wD+uv;0@N2 zQ&Lp=>!XUQ;z6wmlVYj$y#d>-xSDg^=5tEKQNEP}rHiC2PGY37DuduZ)cGFYcJ$jQ2T$qFN1R~j)R z*iow<%zeGs<^w?{7lp(@+zMtvT%#(pt3@^284;4y?pKWPxxW8gJ9OckTf7!WBFpG) zL`EtPu1!Tv(G+7RR%Y_uj!jnP922WVWxg}$U$5JzVbidm`wR!&6!6A}x6JCvpy;nF zBEXAMh?j;Zx*V>N25d0w^a~-lT{p&S^TARz|Ds6eQ-5)&|3OWX9he%|pitR-HxkNa zCh6B?X~fT79b7n$i`->hV5GjsG$Ibd7sxyC(b7l&w@fYLZr3b6R=^M*Z)2ydA;{(}^Sj*9>93*Q8ZbBv;x=vvVu& zA8wL+z#>vR&1B@;G`rtwWey2z$`Pm03V9%zMT=OKXO>S;BkttPc4$ktYPg1!P9E!T z-Pz%dkfem`VJta|_72Y94Ywr8VvLwfu=?}kuFMTKljaTKru`u-hE|31{MC8ftK%<> zYVm15tMl`J{%QH!f?MqFg7PtUfg1HO!}D`acJp42-~h94K|S<^S8`X?c9*a7wK$$< zptP4Hkqx7vkK*9O)5QZnIE(#y)=d1oCN^fw`s7wxTW%j2ZLH5%r}vcITqNk1NGK-D z->TSsmeub1zfYhiO{>}hJ~k4ErNU~H$&!JpG#52If>jcHGub?UjV_rWWjj5rRf@f4 z!^rctY(p ze*P>EP=@pF709C>gwG1JKCWI~xm>XZ59hH_#eRoff@U7B0;Tf&n-eZO`*v3$Zoh%? z{h5_v;G#hRK;<1>6X0YOGe+fTR$2~C%2tqbjzu6i!1f`iN>^i(GUH*W7mdU4&M`NG zgGDLtVV$3)7$9dr>6OwL^h3}lj6|nPSP%Q$<>xl#=}Uaa6BT54}ucX2MhdqzujElZsA9FIEh=8R(FK2=V%N(UAJk}LCzOY?5d?N_riEKjCCJM@nPrcJ z2$eXoJ0&9$vo*1P(A8)NU?|*;NxxbN)bv`@)KE72_Bhfn6XSLi!?Ls@ugdb$(lSz* zV6kRZQzH=0CYS$MAo#OWR-JW%ZlFYKU-nYL2WPUk^jq2H;1R_6_GbTHv4nt@Wl_hQ z<>PTdBgM@b#v8G|AE!_%U0~lZFUj}hDo|@(P3XYe*Q3268(z6^FWA_63s-qrZmUBg z(%)<(t$xL-L@)!RLg^(bZY40ClRB zFUny;U6kwYsS3@ma9Dh#Z7zk3bJET!p*3EVHy6jmRgs43O$Req!^w)u56iqtFe3QU zygRPEDe!vnWrh*DnSN4kv27o5HE2*mJY@!#(NHTV0{FhV7u&c@qGhaU*Qftu;~$v7 z|By({5usl35jMvC-Y3}xC7T4HKsuq7!0EGWxak2sEQ)D~e{5U_x)8n;&rmfb|)$&Jai0u(|?f#W{ zgJe{6m2JP`p0}no=bLWhAMCV^9;;C8FTGZpWpG9z&9_+uvw1Lwjd<#GRw| z3=;4DXsmH~l?y74_kP!vA8vpE*D-EphDMoXT&+AOQFqTZFJFI=w^rWGYJdAis7)~- zvxVQEhRvJEIf6|sbBNSXEnSsaVRS25VPWPr8(R@Mv*VoXhdDSK(c#B2flysH@`-8h za8H29Np(PTzO)nfP6aJ*`O|vT~?fQr_ zCnil$`PU9^*_=C~>PJ_ziAI zgjUL`!Y`O9>U{J8(hNBiR&{IjIYy_f(;FX^4R5v^ZrdK)YGy_U+Us*e>^tS+OA00f(%Zcd*t*9co@s+l$UqLf} z{ru;)QBWS&03mET>Q@}r98Z0HL$j8}+4NSau8EM-*xB6kw(sP462tHcjc)>vO?v#aFEqkcDk=pTb%S3V~!g#GMlXtQ_M`r}yarJjf8 zt4O0e{1NVXu#t%;@wF*oGs(S8!;W{qU9T+qp`q|@Oh@apt!OwtTx5STa!wt#MWrh9 z&&2Oc=9{*$K9$zTDXSJ@TEvl5cT4KO(Pxx=aeA|^@uUS+1Mv>7cmZTqKp}<1l>0cT zO9%_lK0~%ANlCFD^*iHmIpigC&C@nM)Y&w|hJU-AeSCRxc}DZ(e6wozg5X4R-NO*C zx?J(VeuJILgoHQ<9T?Ji2?q>IR)eqv4A3UEb$s`JDrG`{UlZIc|8XWmQRrH3Sy?QW zD;0PQ=KZC(r2I|y4^B)!NlEghlgj5d36CEm<%}qA2kwp%8h!+hb)Pb9T@oEqV|wW& zsD4(<9;h+^8!}ZgT_tbO_VB{^e}0cE>BPI5XgRHr4GTM`PJ2XuQg7!}@-bwoXw*%2 zZ!R?<(Mg4qFEe#A<$66DI@L-_KTrFppw@ZcCrn1A%e6<^_|`7>E9n5Eg;PuOcQC4F zc1212(Lr-laGEz+j(3IHE^p&e^)cpNv@&JOpVjYN6Y{;#4Kyej=3?j}%TQ**&cyL} z(D3>VRddzHOx4s~6*^y^MW#`uEuspvA(^&&_V7Qgn$~y%nO^+quorP#Rjlm^Rc_iP zkk;+*YZ72Cb>J{_LY+YLFKvuX)?0_N9D^>Br4c#?vg6WjzWb5AR`vQOn^o8VTffc` z*aFRuhX-%0-XRfPPPd-R+%+?gwDM=ga8_AzjYf3c=d3;UlH?uh}ewaGIN>366b9ET0w?`)3c#{le=nU5?~9w@2$&l0T$YQA?}G zmXM}qPYYN5L^tdU7E{ZL7-uqZxRgV&i=tAW;xM)nyQ3GjiR8H>wXTb@{a*U1u`<)Z zLA$JZ)-)?*?NN>)TFOX@A@~V-N-Bn0M)>xs~vpA7LY5wvp&AT>RzCjOU zMLRxIA_d|eSHUM4-_Y>y;o_cx&Kpv98$5B}>}%>Qp7$UrQf%^JDpK5TNtvb_)XDU< zz0n^$+=Yy?C$3B8EwFS|uDY0zFpVx^94J*#L&3r(2KhO+%M=q<6fYnoR>;KalL{!9 zD;fm|*g4F-ggKq>C?b9Fb?%KEz_xh z!`sU9S7ah=9S z0XRmaZ_Tr^rrxSgq&nJq1D477zF%N8g-rRzoQL#~7?L`fl4u16g~U-Kjh^igaVq|} zCZ*A!R~E%*oG0BDxAXj@@cmX+H`4yFt7le^bEu4qH?Dl-R@ow^$#a-*l7Pk`3>mJL zLG(iQ`#hK2;T+ua&$%j>A>44J{r-7?Y;bn(n;maLso>x`g1(xD*;kJjA(z~}H+|FU zw?+Fey}zAPlj00Upl(YyBbPD9mT#Ji;Eq!asmY(YomCVjKO^Ml3dNOxXm>(irQn|kxMx4Yi*B&k(r zCPQe}@~1Ej%`WMOle=x*^C?jcms-bF3EW=L&?*jvlZxy9% z7J;oor9fV#d%tVBOrLd*^1Z26SEmSjy?%`k9jxxujk`xWP*QkCWyr6o=pzJBTr1XmtA9*a zdwav9s^QQ7468(C)Y>`F?4C+9Ph*TMtt=eYZiNXe^mQ8jQ@76@z6-z9 z)xFahF*Y|Mb&t^uk4s=^$+NiP95sEPS^y%YFB@)jkHg2W*)guIBYaVGRgeIC5yL-C zKX|C^ir)B`I+?1`%V)EjZGq;FxNMX#Fly9kwKT`HSfbWef~za?u`PP(?4ONz&+dQS zbMTDm%4ThX4yjdtnZ2q++ z;e>r0Daoz8m7<|GpDto%bIOQ)OvM-@?EDDlo)VEcL0i)9md$;1iefcmwQl$0e&J(z zxLWyKez6GC@h>i;eMF`4A}U7H)?2jJ?N`ff%AioOk`e23dV1DE1siZrHquS$ip<+j zGHb@aTh^)x58mTtELR!VvVJMHajK!8nb6J2D{((htC}uWSK}cyFhN%P|4v0b8VNh3 zHL56TcUqLHxDGKVe7mU_BTdz&0%B@2zX+&281y62xjXArEZ_AiH+ylE%Rj&TZU zl3(f)(TsMv4O4Tr-um?_SCLrny!6zxiO*5oJNW&4SaH27^3y5D)+tPl#*wZ^+x2X3 zr|KK?t0viD&Jp+&S+nZ=a+o5BUEEUOZ4;(r^;$F0xkrCLTKB7FIWty>06XqPUU@ER z=VmZbe+sR<{9t9Ze)#v3u2({~;5uaY7ZFkd!FJGbX;6Z<1wG_1_Wu>?2^IEHc0u=< ztyE(Lc*9(SQX|-{-amIyl2y(618p^9d%%oWlh~%1qD)t>n$$>MKwR3cH)M1(?%72m zDZ%ryK4XbyYG{|MHS;-#r%eT)pGo~S%QdYOsg`qpj>lK@(M0Pw4Xb*v2%W^{a z;tq=M@`__Bg`FC&j_c}9;$&H|PcAB3-e^sUoBgxC9qQqtz@nV{7iGO6Rq7VdtAUm0 z!SR5X>6*}evqD``Q;m|-Cw#^Wt*VRX%vCdV$qWLMGpMpe$JrTHT|+|crQbNc#w6Iu zc#1XCVaYkwrP?D7it2OiYK$g%fPQH{KltR`6T0N*iU$ep=&rd;cC9<(+$0W?ZqT4p zMQY91b$D{}L>45&(_1so5*7{T2SK0DP)H3CY^DfZb&6xj#?JWdO~B>f7^H@&_mj#) zB+b*r*Djx$Ws3+nMo&bf0`vYz#actah^P<&s;t;hmZ)>?2L`+;d0;YOl(>U%*X z|9EDK{TY)e>Iahf&dc&L*P-D;L6fo}UD1`V;HX`N%g=Dq9Xm@zKa9k*!u@?Nht_J(i}@4PiS z8+=!rxhG*u$u!}E%`Q0h*KD?1MQqjy5I6?L%9y3CLQGe{+v5}?k} zR_^QlVW%lm%Z_M zDIy&PVCs?A&v5<1DPBQf23ROC!UtH3VLE~(25KCqWy(W7tZc2r({^6>+00etbnKfg ztR;r*X*3Ij$c%5|pYrk?b68xC{Aar=0$!Vnm!NjdN7YSrGL1>1Hd-?+d0E<@AG$Q_ zgUKZww5T|8HW=}h>SdX8IznYfih37Xb(Xu=%E%bJ@4W zRLBRTAmH!aIRR14E;GAN-h?J=pw6b}DGJ1I+2GE5L|6?UygYJ;d4=%6TSUc=F)J5m zU^~?IgXEn6m`Geq%4@R9(|TS@;^G#)8G0WJJaD!jNe}xa-+a{c0i|>$X4I8$Q%(#9 zVpDg{;z_i;14BgHci6FyC}6TYMJ(l%c#U%)g2ncMx}ZiY+c#6)bXg&F)*@}Vema#2 z-Q9BPC~k3)PslmB z(i-+FSLqt5jr2XIK^daixLVsdCRAB8vaeBR1Lg8DXkeDC`jYkN2-saF7t9>BpFD4JkrKp$KA zAL@2H+T7=td2fHniTr5BwPpvVCMvwr99iMeii$Xu81{Q=%fuK83Ql;>8VHJl^6Di6 zgXC9gTW)iu(+NC1;Zq!F;2}a;0!js>P0lSt(?5I^=bFJVp1g$yBn^6zPK{Q8ij1;J zE&M7U)lFBkhp=D%55F2SV`}D>*@rI&NBiQ}PX}KDL z@n)2OSK9)#-C5m?+XI9Lho1~2=GPxT9qk>?`0n+WceB3Q{c`jktEiS=-cmaRo`L@} z{BQT|+s}K4hp#q1q{FBFGrU%DG$rTo8<%^cE#eocI0d8O<>S-IWc1V4*7xtyvZ}3r{Jk|fpWMC;&-0Qf5|6yN z-A;Ugf8)j~{Y$_5zVQ7d@j@>S!ccgD7l+X!aen)z=L6kR4PEIMY1%1fKL?NXdY9ng zp$Pr&Jpq_*ys6-2oep^QHv&)4eIhUY$lH$Mot+&YKTG+uFo?IqD2aA9f>4#s>t^3x z`boRp4*YH7CgH?j&|89T0Re*`KfHr_1+Oc;T|9ip@!giD-L6RiE|4};x{*M>X oml~`&|2uHtz<~n?4jede;J|?c2M!!Kc-Zj&1MZ2imH?Oo0D?ENMF0Q* literal 0 HcmV?d00001 diff --git a/node_modules/tar/test/header.js b/node_modules/tar/test/header.js new file mode 100644 index 0000000000..8ea6f79500 --- /dev/null +++ b/node_modules/tar/test/header.js @@ -0,0 +1,183 @@ +var tap = require("tap") +var TarHeader = require("../lib/header.js") +var tar = require("../tar.js") +var fs = require("fs") + + +var headers = + { "a.txt file header": + [ "612e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303430312031313635313336303333332030313234353100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + , { cksumValid: true + , path: 'a.txt' + , mode: 420 + , uid: 24561 + , gid: 20 + , size: 257 + , mtime: 1319493851 + , cksum: 5417 + , type: '0' + , linkpath: '' + , ustar: 'ustar\0' + , ustarver: '00' + , uname: 'isaacs' + , gname: 'staff' + , devmaj: 0 + , devmin: 0 + , fill: '' } + ] + + , "omega pax": // the extended header from omega tar. + [ "5061784865616465722fcea92e74787400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303137302031313534333731303631312030313530353100207800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + , { cksumValid: true + , path: 'PaxHeader/Ω.txt' + , mode: 420 + , uid: 24561 + , gid: 20 + , size: 120 + , mtime: 1301254537 + , cksum: 6697 + , type: 'x' + , linkpath: '' + , ustar: 'ustar\0' + , ustarver: '00' + , uname: 'isaacs' + , gname: 'staff' + , devmaj: 0 + , devmin: 0 + , fill: '' } ] + + , "omega file header": + [ "cea92e7478740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030322031313534333731303631312030313330373200203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + , { cksumValid: true + , path: 'Ω.txt' + , mode: 420 + , uid: 24561 + , gid: 20 + , size: 2 + , mtime: 1301254537 + , cksum: 5690 + , type: '0' + , linkpath: '' + , ustar: 'ustar\0' + , ustarver: '00' + , uname: 'isaacs' + , gname: 'staff' + , devmaj: 0 + , devmin: 0 + , fill: '' } ] + + , "foo.js file header": + [ "666f6f2e6a730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030342031313534333637303734312030313236313700203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + , { cksumValid: true + , path: 'foo.js' + , mode: 420 + , uid: 24561 + , gid: 20 + , size: 4 + , mtime: 1301246433 + , cksum: 5519 + , type: '0' + , linkpath: '' + , ustar: 'ustar\0' + , ustarver: '00' + , uname: 'isaacs' + , gname: 'staff' + , devmaj: 0 + , devmin: 0 + , fill: '' } + ] + + , "b.txt file header": + [ "622e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030313030302031313635313336303637372030313234363100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + , { cksumValid: true + , path: 'b.txt' + , mode: 420 + , uid: 24561 + , gid: 20 + , size: 512 + , mtime: 1319494079 + , cksum: 5425 + , type: '0' + , linkpath: '' + , ustar: 'ustar\0' + , ustarver: '00' + , uname: 'isaacs' + , gname: 'staff' + , devmaj: 0 + , devmin: 0 + , fill: '' } + ] + + , "deep nested file": + [ "636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363633030303634342000303537373631200030303030323420003030303030303030313434203131363532313531353333203034333331340020300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075737461720030306973616163730000000000000000000000000000000000000000000000000000737461666600000000000000000000000000000000000000000000000000000030303030303020003030303030302000722f652f612f6c2f6c2f792f2d2f642f652f652f702f2d2f662f6f2f6c2f642f652f722f2d2f702f612f742f680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + , { cksumValid: true, + path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' + , mode: 420 + , uid: 24561 + , gid: 20 + , size: 100 + , mtime: 1319687003 + , cksum: 18124 + , type: '0' + , linkpath: '' + , ustar: 'ustar\0' + , ustarver: '00' + , uname: 'isaacs' + , gname: 'staff' + , devmaj: 0 + , devmin: 0 + , fill: '' } + ] + } + +tap.test("parsing", function (t) { + Object.keys(headers).forEach(function (name) { + var h = headers[name] + , header = new Buffer(h[0], "hex") + , expect = h[1] + , parsed = new TarHeader(header) + + // console.error(parsed) + t.has(parsed, expect, "parse " + name) + }) + t.end() +}) + +tap.test("encoding", function (t) { + Object.keys(headers).forEach(function (name) { + var h = headers[name] + , expect = new Buffer(h[0], "hex") + , encoded = TarHeader.encode(h[1]) + + // might have slightly different bytes, since the standard + // isn't very strict, but should have the same semantics + // checkSum will be different, but cksumValid will be true + + var th = new TarHeader(encoded) + delete h[1].block + delete h[1].needExtended + delete h[1].cksum + t.has(th, h[1], "fields "+name) + }) + t.end() +}) + +// test these manually. they're a bit rare to find in the wild +tap.test("parseNumeric tests", function (t) { + var parseNumeric = TarHeader.parseNumeric + , numbers = + { "303737373737373700": 2097151 + , "30373737373737373737373700": 8589934591 + , "303030303036343400": 420 + , "800000ffffffffffff": 281474976710655 + , "ffffff000000000001": -281474976710654 + , "ffffff000000000000": -281474976710655 + , "800000000000200000": 2097152 + , "8000000000001544c5": 1393861 + , "ffffffffffff1544c5": -15383354 } + Object.keys(numbers).forEach(function (n) { + var b = new Buffer(n, "hex") + t.equal(parseNumeric(b), numbers[n], n + " === " + numbers[n]) + }) + t.end() +}) diff --git a/node_modules/tar/test/link-file-entry-collision.js b/node_modules/tar/test/link-file-entry-collision.js new file mode 100644 index 0000000000..cb3e2d5e4e --- /dev/null +++ b/node_modules/tar/test/link-file-entry-collision.js @@ -0,0 +1,39 @@ +// Set the umask, so that it works the same everywhere. +process.umask(parseInt('22', 8)) + +var tap = require("tap") + , tar = require("../tar.js") + , fs = require("fs") + , path = require("path") + , file = path.resolve(__dirname, "link-file-entry-collision/bad-link.tar") + , target = path.resolve(__dirname, "tmp/link-file-entry-collision") + , index = 0 + , fstream = require("fstream") + , mkdirp = require("mkdirp") + , rimraf = require("rimraf") + +tap.test("preclean", function (t) { + rimraf.sync(target) + t.pass("cleaned!") + t.end() +}) + +tap.test("extract test", function (t) { + var extract = tar.Extract(target) + var inp = fs.createReadStream(file) + inp.pipe(extract) + + extract.on("end", function () { + t.equal(fs.readFileSync(target + "/bad-link-target", "utf8"), + "this should remain the same\n") + t.equal(fs.readFileSync(target + "/a.txt", "utf8"), + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") + t.end() + }) +}) + +tap.test("cleanup", function (t) { + rimraf.sync(target) + t.pass("cleaned!") + t.end() +}) diff --git a/node_modules/tar/test/link-file-entry-collision/bad-link.hex b/node_modules/tar/test/link-file-entry-collision/bad-link.hex new file mode 100644 index 0000000000..99f5db0db0 --- /dev/null +++ b/node_modules/tar/test/link-file-entry-collision/bad-link.hex @@ -0,0 +1,25 @@ +-- header for the link target -- +6261642d6c696e6b2d74617267657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000303030363434200030303037363520003030303032342000303030303030303030333420313334363636353530353620303134333731002030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # bad-link-target.....................................................................................000644..000765..000024..00000000034.13466655056.014371..0................................................................................................... +00757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # .ustar.00isaacs..........................staff...........................000000..000000......................................................................................................................................................................... + +-- link target file contents (should not be overwritten) -- +746869732073686f756c642072656d61696e207468652073616d650a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # this.should.remain.the.same..................................................................................................................................................................................................................................... +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # ................................................................................................................................................................................................................................................................ + +-- header for the link named a.txt -- +612e74787400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003030303634342000303030373635200030303030323420003030303030303030303030203133343636363535303536203031353334320020316261642d6c696e6b2d746172676574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # a.txt...............................................................................................000644..000765..000024..00000000000.13466655056.015342..1bad-link-target.................................................................................... +00757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # .ustar.00isaacs..........................staff...........................000000..000000......................................................................................................................................................................... + +-- header for file entry which attempts to overwrite the link -- +612e7478740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000303030363434200030353737363120003030303032342000303030303030303034303120313136353133363033333320303132343531002030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # a.txt...............................................................................................000644..057761..000024..00000000401.11651360333.012451..0................................................................................................... +00757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # .ustar.00isaacs..........................staff...........................000000..000000......................................................................................................................................................................... + +-- contents that threaten to overwrite the link target -- +61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # a............................................................................................................................................................................................................................................................... + +-- tar eof -- +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # ................................................................................................................................................................................................................................................................ +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # ................................................................................................................................................................................................................................................................ +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # ................................................................................................................................................................................................................................................................ +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 # ................................................................................................................................................................................................................................................................ diff --git a/node_modules/tar/test/link-file-entry-collision/bad-link.tar b/node_modules/tar/test/link-file-entry-collision/bad-link.tar new file mode 100644 index 0000000000000000000000000000000000000000..be0b0d2f73a2cdca26771554090aca269bfcfc69 GIT binary patch literal 3584 zcmeHH+X{m)4E1?mksoj*wvFFYr%stVuod?C3-dvyu%}f7o0r^5I638{uw~k{!z1-} zyjMO6VTj0DLn1zB^YNI?xs=3|22z@tjX}eJq*YD{UmvH zFX<+lH<_11giZgT1>dv|T=Sf|62_{x?Et>1z}ddK929bd^+yKm)xW~1egP@c_^p4@ z%eVfG(pdsj>~Ne;uK!*C-{d*d_Wo-mAYwy`Q7I+&Khq}O|3yFnBYSoW$ZZ@Q8Hfx- I29C_Y8xFy>h5!Hn literal 0 HcmV?d00001 diff --git a/node_modules/tar/test/pack-no-proprietary.js b/node_modules/tar/test/pack-no-proprietary.js new file mode 100644 index 0000000000..d4b03a1fe9 --- /dev/null +++ b/node_modules/tar/test/pack-no-proprietary.js @@ -0,0 +1,886 @@ +// This is exactly like test/pack.js, except that it's excluding +// any proprietary headers. +// +// This loses some information about the filesystem, but creates +// tarballs that are supported by more versions of tar, especially +// old non-spec-compliant copies of gnutar. + +// the symlink file is excluded from git, because it makes +// windows freak the hell out. +var fs = require("fs") + , path = require("path") + , symlink = path.resolve(__dirname, "fixtures/symlink") +try { fs.unlinkSync(symlink) } catch (e) {} +fs.symlinkSync("./hardlink-1", symlink) +process.on("exit", function () { + fs.unlinkSync(symlink) +}) + +var tap = require("tap") + , tar = require("../tar.js") + , pkg = require("../package.json") + , Pack = tar.Pack + , fstream = require("fstream") + , Reader = fstream.Reader + , Writer = fstream.Writer + , input = path.resolve(__dirname, "fixtures/") + , target = path.resolve(__dirname, "tmp/pack.tar") + , uid = process.getuid ? process.getuid() : 0 + , gid = process.getgid ? process.getgid() : 0 + + , entries = + + // the global header and root fixtures/ dir are going to get + // a different date each time, so omit that bit. + // Also, dev/ino values differ across machines, so that's not + // included. + [ [ 'entry', + { path: 'fixtures/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'extendedHeader', + { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: uid, + gid: gid, + type: 'x', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' }, + { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + uid: uid, + gid: gid, + size: 200 } ] + + , [ 'entry', + { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: uid, + gid: gid, + size: 200, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/a.txt', + mode: 420, + uid: uid, + gid: gid, + size: 257, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/b.txt', + mode: 420, + uid: uid, + gid: gid, + size: 512, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/c.txt', + mode: 420, + uid: uid, + gid: gid, + size: 513, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/cc.txt', + mode: 420, + uid: uid, + gid: gid, + size: 513, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/dir/', + mode: 488, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/dir/sub/', + mode: 488, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/foo.js', + mode: 420, + uid: uid, + gid: gid, + size: 4, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/hardlink-1', + mode: 420, + uid: uid, + gid: gid, + size: 200, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/hardlink-2', + mode: 420, + uid: uid, + gid: gid, + size: 0, + type: '1', + linkpath: 'fixtures/hardlink-1', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/omega.txt', + mode: 420, + uid: uid, + gid: gid, + size: 2, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/packtest/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/packtest/omega.txt', + mode: 420, + uid: uid, + gid: gid, + size: 2, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/packtest/star.4.html', + mode: 420, + uid: uid, + gid: gid, + size: 54081, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'extendedHeader', + { path: 'PaxHeader/fixtures/packtest/Ω.txt', + mode: 420, + uid: uid, + gid: gid, + type: 'x', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' }, + { path: 'fixtures/packtest/Ω.txt', + uid: uid, + gid: gid, + size: 2 } ] + + , [ 'entry', + { path: 'fixtures/packtest/Ω.txt', + mode: 420, + uid: uid, + gid: gid, + size: 2, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: uid, + gid: gid, + size: 100, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/symlink', + uid: uid, + gid: gid, + size: 0, + type: '2', + linkpath: 'hardlink-1', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'extendedHeader', + { path: 'PaxHeader/fixtures/Ω.txt', + mode: 420, + uid: uid, + gid: gid, + type: 'x', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' }, + { path: "fixtures/Ω.txt" + , uid: uid + , gid: gid + , size: 2 } ] + + , [ 'entry', + { path: 'fixtures/Ω.txt', + mode: 420, + uid: uid, + gid: gid, + size: 2, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + ] + + +// first, make sure that the hardlinks are actually hardlinks, or this +// won't work. Git has a way of replacing them with a copy. +var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") + , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") + , fs = require("fs") + +try { fs.unlinkSync(hard2) } catch (e) {} +fs.linkSync(hard1, hard2) + +tap.test("with global header", { timeout: 10000 }, function (t) { + runTest(t, true) +}) + +tap.test("without global header", { timeout: 10000 }, function (t) { + runTest(t, false) +}) + +function alphasort (a, b) { + return a === b ? 0 + : a.toLowerCase() > b.toLowerCase() ? 1 + : a.toLowerCase() < b.toLowerCase() ? -1 + : a > b ? 1 + : -1 +} + + +function runTest (t, doGH) { + var reader = Reader({ path: input + , filter: function () { + return !this.path.match(/\.(tar|hex)$/) + } + , sort: alphasort + }) + + var props = doGH ? pkg : {} + props.noProprietary = true + var pack = Pack(props) + var writer = Writer(target) + + // global header should be skipped regardless, since it has no content. + var entry = 0 + + t.ok(reader, "reader ok") + t.ok(pack, "pack ok") + t.ok(writer, "writer ok") + + pack.pipe(writer) + + var parse = tar.Parse() + t.ok(parse, "parser should be ok") + + pack.on("data", function (c) { + // console.error("PACK DATA") + if (c.length !== 512) { + // this one is too noisy, only assert if it'll be relevant + t.equal(c.length, 512, "parser should emit data in 512byte blocks") + } + parse.write(c) + }) + + pack.on("end", function () { + // console.error("PACK END") + t.pass("parser ends") + parse.end() + }) + + pack.on("error", function (er) { + t.fail("pack error", er) + }) + + parse.on("error", function (er) { + t.fail("parse error", er) + }) + + writer.on("error", function (er) { + t.fail("writer error", er) + }) + + reader.on("error", function (er) { + t.fail("reader error", er) + }) + + parse.on("*", function (ev, e) { + var wanted = entries[entry++] + if (!wanted) { + t.fail("unexpected event: "+ev) + return + } + t.equal(ev, wanted[0], "event type should be "+wanted[0]) + + if (ev !== wanted[0] || e.path !== wanted[1].path) { + console.error("wanted", wanted) + console.error([ev, e.props]) + e.on("end", function () { + console.error(e.fields) + throw "break" + }) + } + + t.has(e.props, wanted[1], "properties "+wanted[1].path) + if (wanted[2]) { + e.on("end", function () { + if (!e.fields) { + t.ok(e.fields, "should get fields") + } else { + t.has(e.fields, wanted[2], "should get expected fields") + } + }) + } + }) + + reader.pipe(pack) + + writer.on("close", function () { + t.equal(entry, entries.length, "should get all expected entries") + t.pass("it finished") + t.end() + }) + +} diff --git a/node_modules/tar/test/pack.js b/node_modules/tar/test/pack.js new file mode 100644 index 0000000000..0f16c07bb0 --- /dev/null +++ b/node_modules/tar/test/pack.js @@ -0,0 +1,952 @@ + +// the symlink file is excluded from git, because it makes +// windows freak the hell out. +var fs = require("fs") + , path = require("path") + , symlink = path.resolve(__dirname, "fixtures/symlink") +try { fs.unlinkSync(symlink) } catch (e) {} +fs.symlinkSync("./hardlink-1", symlink) +process.on("exit", function () { + fs.unlinkSync(symlink) +}) + + +var tap = require("tap") + , tar = require("../tar.js") + , pkg = require("../package.json") + , Pack = tar.Pack + , fstream = require("fstream") + , Reader = fstream.Reader + , Writer = fstream.Writer + , input = path.resolve(__dirname, "fixtures/") + , target = path.resolve(__dirname, "tmp/pack.tar") + , uid = process.getuid ? process.getuid() : 0 + , gid = process.getgid ? process.getgid() : 0 + + , entries = + + // the global header and root fixtures/ dir are going to get + // a different date each time, so omit that bit. + // Also, dev/ino values differ across machines, so that's not + // included. + [ [ 'globalExtendedHeader', + { path: 'PaxHeader/', + mode: 438, + uid: 0, + gid: 0, + type: 'g', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' }, + { "NODETAR.author": pkg.author, + "NODETAR.name": pkg.name, + "NODETAR.description": pkg.description, + "NODETAR.version": pkg.version, + "NODETAR.repository.type": pkg.repository.type, + "NODETAR.repository.url": pkg.repository.url, + "NODETAR.main": pkg.main, + "NODETAR.scripts.test": pkg.scripts.test } ] + + , [ 'entry', + { path: 'fixtures/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'extendedHeader', + { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: uid, + gid: gid, + type: 'x', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' }, + { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + 'NODETAR.depth': '1', + 'NODETAR.type': 'File', + nlink: 1, + uid: uid, + gid: gid, + size: 200, + 'NODETAR.blksize': '4096', + 'NODETAR.blocks': '8' } ] + + , [ 'entry', + { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: uid, + gid: gid, + size: 200, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '', + 'NODETAR.depth': '1', + 'NODETAR.type': 'File', + nlink: 1, + 'NODETAR.blksize': '4096', + 'NODETAR.blocks': '8' } ] + + , [ 'entry', + { path: 'fixtures/a.txt', + mode: 420, + uid: uid, + gid: gid, + size: 257, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/b.txt', + mode: 420, + uid: uid, + gid: gid, + size: 512, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/c.txt', + mode: 420, + uid: uid, + gid: gid, + size: 513, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/cc.txt', + mode: 420, + uid: uid, + gid: gid, + size: 513, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/dir/', + mode: 488, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/dir/sub/', + mode: 488, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + + , [ 'entry', + { path: 'fixtures/foo.js', + mode: 420, + uid: uid, + gid: gid, + size: 4, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/hardlink-1', + mode: 420, + uid: uid, + gid: gid, + size: 200, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/hardlink-2', + mode: 420, + uid: uid, + gid: gid, + size: 0, + type: '1', + linkpath: 'fixtures/hardlink-1', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/omega.txt', + mode: 420, + uid: uid, + gid: gid, + size: 2, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/packtest/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/packtest/omega.txt', + mode: 420, + uid: uid, + gid: gid, + size: 2, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/packtest/star.4.html', + mode: 420, + uid: uid, + gid: gid, + size: 54081, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'extendedHeader', + { path: 'PaxHeader/fixtures/packtest/Ω.txt', + mode: 420, + uid: uid, + gid: gid, + type: 'x', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' }, + { path: 'fixtures/packtest/Ω.txt', + 'NODETAR.depth': '2', + 'NODETAR.type': 'File', + nlink: 1, + uid: uid, + gid: gid, + size: 2, + 'NODETAR.blksize': '4096', + 'NODETAR.blocks': '8' } ] + + , [ 'entry', + { path: 'fixtures/packtest/Ω.txt', + mode: 420, + uid: uid, + gid: gid, + size: 2, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '', + 'NODETAR.depth': '2', + 'NODETAR.type': 'File', + nlink: 1, + 'NODETAR.blksize': '4096', + 'NODETAR.blocks': '8' } ] + + , [ 'entry', + { path: 'fixtures/r/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', + mode: 493, + uid: uid, + gid: gid, + size: 0, + type: '5', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: uid, + gid: gid, + size: 100, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'entry', + { path: 'fixtures/symlink', + uid: uid, + gid: gid, + size: 0, + type: '2', + linkpath: 'hardlink-1', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' } ] + + , [ 'extendedHeader', + { path: 'PaxHeader/fixtures/Ω.txt', + mode: 420, + uid: uid, + gid: gid, + type: 'x', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '' }, + { path: "fixtures/Ω.txt" + , "NODETAR.depth": "1" + , "NODETAR.type": "File" + , nlink: 1 + , uid: uid + , gid: gid + , size: 2 + , "NODETAR.blksize": "4096" + , "NODETAR.blocks": "8" } ] + + , [ 'entry', + { path: 'fixtures/Ω.txt', + mode: 420, + uid: uid, + gid: gid, + size: 2, + type: '0', + linkpath: '', + ustar: 'ustar\u0000', + ustarver: '00', + uname: '', + gname: '', + devmaj: 0, + devmin: 0, + fill: '', + 'NODETAR.depth': '1', + 'NODETAR.type': 'File', + nlink: 1, + 'NODETAR.blksize': '4096', + 'NODETAR.blocks': '8' } ] + ] + + +// first, make sure that the hardlinks are actually hardlinks, or this +// won't work. Git has a way of replacing them with a copy. +var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") + , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") + , fs = require("fs") + +try { fs.unlinkSync(hard2) } catch (e) {} +fs.linkSync(hard1, hard2) + +tap.test("with global header", { timeout: 10000 }, function (t) { + runTest(t, true) +}) + +tap.test("without global header", { timeout: 10000 }, function (t) { + runTest(t, false) +}) + +tap.test("with from base", { timeout: 10000 }, function (t) { + runTest(t, true, true) +}) + +function alphasort (a, b) { + return a === b ? 0 + : a.toLowerCase() > b.toLowerCase() ? 1 + : a.toLowerCase() < b.toLowerCase() ? -1 + : a > b ? 1 + : -1 +} + + +function runTest (t, doGH, doFromBase) { + var reader = Reader({ path: input + , filter: function () { + return !this.path.match(/\.(tar|hex)$/) + } + , sort: alphasort + }) + + var props = doGH ? pkg : {} + if(doFromBase) props.fromBase = true; + + var pack = Pack(props) + var writer = Writer(target) + + // skip the global header if we're not doing that. + var entry = doGH ? 0 : 1 + + t.ok(reader, "reader ok") + t.ok(pack, "pack ok") + t.ok(writer, "writer ok") + + pack.pipe(writer) + + var parse = tar.Parse() + t.ok(parse, "parser should be ok") + + pack.on("data", function (c) { + // console.error("PACK DATA") + if (c.length !== 512) { + // this one is too noisy, only assert if it'll be relevant + t.equal(c.length, 512, "parser should emit data in 512byte blocks") + } + parse.write(c) + }) + + pack.on("end", function () { + // console.error("PACK END") + t.pass("parser ends") + parse.end() + }) + + pack.on("error", function (er) { + t.fail("pack error", er) + }) + + parse.on("error", function (er) { + t.fail("parse error", er) + }) + + writer.on("error", function (er) { + t.fail("writer error", er) + }) + + reader.on("error", function (er) { + t.fail("reader error", er) + }) + + parse.on("*", function (ev, e) { + var wanted = entries[entry++] + if (!wanted) { + t.fail("unexpected event: "+ev) + return + } + t.equal(ev, wanted[0], "event type should be "+wanted[0]) + + if(doFromBase) { + if(wanted[1].path.indexOf('fixtures/') && wanted[1].path.length == 100) + wanted[1].path = wanted[1].path.replace('fixtures/', '') + 'ccccccccc' + + if(wanted[1]) wanted[1].path = wanted[1].path.replace('fixtures/', '').replace('//', '/') + if(wanted[1].path == '') wanted[1].path = '/' + if(wanted[2] && wanted[2].path) wanted[2].path = wanted[2].path.replace('fixtures', '').replace(/^\//, '') + + wanted[1].linkpath = wanted[1].linkpath.replace('fixtures/', '') + } + + if (ev !== wanted[0] || e.path !== wanted[1].path) { + console.error("wanted", wanted) + console.error([ev, e.props]) + e.on("end", function () { + console.error(e.fields) + throw "break" + }) + } + + + t.has(e.props, wanted[1], "properties "+wanted[1].path) + if (wanted[2]) { + e.on("end", function () { + if (!e.fields) { + t.ok(e.fields, "should get fields") + } else { + t.has(e.fields, wanted[2], "should get expected fields") + } + }) + } + }) + + reader.pipe(pack) + + writer.on("close", function () { + t.equal(entry, entries.length, "should get all expected entries") + t.pass("it finished") + t.end() + }) + +} diff --git a/node_modules/tar/test/parse-discard.js b/node_modules/tar/test/parse-discard.js new file mode 100644 index 0000000000..da01a65ccc --- /dev/null +++ b/node_modules/tar/test/parse-discard.js @@ -0,0 +1,29 @@ +var tap = require("tap") + , tar = require("../tar.js") + , fs = require("fs") + , path = require("path") + , file = path.resolve(__dirname, "fixtures/c.tar") + +tap.test("parser test", function (t) { + var parser = tar.Parse() + var total = 0 + var dataTotal = 0 + + parser.on("end", function () { + + t.equals(total-513,dataTotal,'should have discarded only c.txt') + + t.end() + }) + + fs.createReadStream(file) + .pipe(parser) + .on('entry',function(entry){ + if(entry.path === 'c.txt') entry.abort() + + total += entry.size; + entry.on('data',function(data){ + dataTotal += data.length + }) + }) +}) diff --git a/node_modules/tar/test/parse.js b/node_modules/tar/test/parse.js new file mode 100644 index 0000000000..f765a50129 --- /dev/null +++ b/node_modules/tar/test/parse.js @@ -0,0 +1,359 @@ +var tap = require("tap") + , tar = require("../tar.js") + , fs = require("fs") + , path = require("path") + , file = path.resolve(__dirname, "fixtures/c.tar") + , index = 0 + + , expect = +[ [ 'entry', + { path: 'c.txt', + mode: 420, + uid: 24561, + gid: 20, + size: 513, + mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'), + cksum: 5422, + type: '0', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '' }, + undefined ], + [ 'entry', + { path: 'cc.txt', + mode: 420, + uid: 24561, + gid: 20, + size: 513, + mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'), + cksum: 5525, + type: '0', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '' }, + undefined ], + [ 'entry', + { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: 24561, + gid: 20, + size: 100, + mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'), + cksum: 18124, + type: '0', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '' }, + undefined ], + [ 'entry', + { path: 'Ω.txt', + mode: 420, + uid: 24561, + gid: 20, + size: 2, + mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), + cksum: 5695, + type: '0', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '' }, + undefined ], + [ 'extendedHeader', + { path: 'PaxHeader/Ω.txt', + mode: 420, + uid: 24561, + gid: 20, + size: 120, + mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), + cksum: 6702, + type: 'x', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '' }, + { path: 'Ω.txt', + ctime: 1319737909, + atime: 1319739061, + dev: 234881026, + ino: 51693379, + nlink: 1 } ], + [ 'entry', + { path: 'Ω.txt', + mode: 420, + uid: 24561, + gid: 20, + size: 2, + mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), + cksum: 5695, + type: '0', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '', + ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), + atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'), + dev: 234881026, + ino: 51693379, + nlink: 1 }, + undefined ], + [ 'extendedHeader', + { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: 24561, + gid: 20, + size: 353, + mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), + cksum: 14488, + type: 'x', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '' }, + { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + ctime: 1319686868, + atime: 1319741254, + 'LIBARCHIVE.creationtime': '1319686852', + dev: 234881026, + ino: 51681874, + nlink: 1 } ], + [ 'entry', + { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: 24561, + gid: 20, + size: 200, + mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), + cksum: 14570, + type: '0', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '', + ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), + atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'), + 'LIBARCHIVE.creationtime': '1319686852', + dev: 234881026, + ino: 51681874, + nlink: 1 }, + undefined ], + [ 'longPath', + { path: '././@LongLink', + mode: 0, + uid: 0, + gid: 0, + size: 201, + mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), + cksum: 4976, + type: 'L', + linkpath: '', + ustar: false }, + '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], + [ 'entry', + { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: 1000, + gid: 1000, + size: 201, + mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'), + cksum: 14086, + type: '0', + linkpath: '', + ustar: false }, + undefined ], + [ 'longLinkpath', + { path: '././@LongLink', + mode: 0, + uid: 0, + gid: 0, + size: 201, + mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), + cksum: 4975, + type: 'K', + linkpath: '', + ustar: false }, + '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], + [ 'longPath', + { path: '././@LongLink', + mode: 0, + uid: 0, + gid: 0, + size: 201, + mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), + cksum: 4976, + type: 'L', + linkpath: '', + ustar: false }, + '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ], + [ 'entry', + { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', + mode: 511, + uid: 1000, + gid: 1000, + size: 0, + mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'), + cksum: 21603, + type: '2', + linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + ustar: false }, + undefined ], + [ 'extendedHeader', + { path: 'PaxHeader/200-hard', + mode: 420, + uid: 24561, + gid: 20, + size: 143, + mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), + cksum: 6533, + type: 'x', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '' }, + { ctime: 1320617144, + atime: 1320617232, + 'LIBARCHIVE.creationtime': '1319686852', + dev: 234881026, + ino: 51681874, + nlink: 2 } ], + [ 'entry', + { path: '200-hard', + mode: 420, + uid: 24561, + gid: 20, + size: 200, + mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), + cksum: 5526, + type: '0', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '', + ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), + atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'), + 'LIBARCHIVE.creationtime': '1319686852', + dev: 234881026, + ino: 51681874, + nlink: 2 }, + undefined ], + [ 'extendedHeader', + { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: 24561, + gid: 20, + size: 353, + mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), + cksum: 14488, + type: 'x', + linkpath: '', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '' }, + { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + ctime: 1320617144, + atime: 1320617406, + 'LIBARCHIVE.creationtime': '1319686852', + dev: 234881026, + ino: 51681874, + nlink: 2 } ], + [ 'entry', + { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', + mode: 420, + uid: 24561, + gid: 20, + size: 0, + mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), + cksum: 15173, + type: '1', + linkpath: '200-hard', + ustar: 'ustar\0', + ustarver: '00', + uname: 'isaacs', + gname: 'staff', + devmaj: 0, + devmin: 0, + fill: '', + ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), + atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'), + 'LIBARCHIVE.creationtime': '1319686852', + dev: 234881026, + ino: 51681874, + nlink: 2 }, + undefined ] ] + + +tap.test("parser test", function (t) { + var parser = tar.Parse() + + parser.on("end", function () { + t.equal(index, expect.length, "saw all expected events") + t.end() + }) + + fs.createReadStream(file) + .pipe(parser) + .on("*", function (ev, entry) { + var wanted = expect[index] + if (!wanted) { + return t.fail("Unexpected event: " + ev) + } + var result = [ev, entry.props] + entry.on("end", function () { + result.push(entry.fields || entry.body) + + t.equal(ev, wanted[0], index + " event type") + t.equivalent(entry.props, wanted[1], wanted[1].path + " entry properties") + if (wanted[2]) { + t.equivalent(result[2], wanted[2], "metadata values") + } + index ++ + }) + }) +}) diff --git a/node_modules/tar/test/zz-cleanup.js b/node_modules/tar/test/zz-cleanup.js new file mode 100644 index 0000000000..a00ff7faa0 --- /dev/null +++ b/node_modules/tar/test/zz-cleanup.js @@ -0,0 +1,20 @@ +// clean up the fixtures + +var tap = require("tap") +, rimraf = require("rimraf") +, test = tap.test +, path = require("path") + +test("clean fixtures", function (t) { + rimraf(path.resolve(__dirname, "fixtures"), function (er) { + t.ifError(er, "rimraf ./fixtures/") + t.end() + }) +}) + +test("clean tmp", function (t) { + rimraf(path.resolve(__dirname, "tmp"), function (er) { + t.ifError(er, "rimraf ./tmp/") + t.end() + }) +}) diff --git a/node_modules/through2/.npmignore b/node_modules/through2/.npmignore new file mode 100644 index 0000000000..1e1dcab34c --- /dev/null +++ b/node_modules/through2/.npmignore @@ -0,0 +1,3 @@ +test +.jshintrc +.travis.yml \ No newline at end of file diff --git a/node_modules/through2/LICENSE b/node_modules/through2/LICENSE new file mode 100644 index 0000000000..f6a0029de1 --- /dev/null +++ b/node_modules/through2/LICENSE @@ -0,0 +1,39 @@ +Copyright 2013, Rod Vagg (the "Original Author") +All rights reserved. + +MIT +no-false-attribs License + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +Distributions of all or part of the Software intended to be used +by the recipients as they would use the unmodified Software, +containing modifications that substantially alter, remove, or +disable functionality of the Software, outside of the documented +configuration mechanisms provided by the Software, shall be +modified such that the Original Author's bug reporting email +addresses and urls are either replaced with the contact information +of the parties responsible for the changes, or removed entirely. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +Except where noted, this license applies to any and all software +programs and associated documentation files created by the +Original Author, when distributed with the Software. \ No newline at end of file diff --git a/node_modules/through2/README.md b/node_modules/through2/README.md new file mode 100644 index 0000000000..11259a5f71 --- /dev/null +++ b/node_modules/through2/README.md @@ -0,0 +1,132 @@ +# through2 + +[![NPM](https://nodei.co/npm/through2.png?downloads&downloadRank)](https://nodei.co/npm/through2/) + +**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** + +Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. + +Note: A **Streams3** version of through2 is available in npm with the tag `"1.0"` rather than `"latest"` so an `npm install through2` will get you the current Streams2 version (version number is 0.x.x). To use a Streams3 version use `npm install through2@1` to fetch the latest version 1.x.x. More information about Streams2 vs Streams3 and recommendations see the article **[Why I don't use Node's core 'stream' module](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html)**. + +```js +fs.createReadStream('ex.txt') + .pipe(through2(function (chunk, enc, callback) { + for (var i = 0; i < chunk.length; i++) + if (chunk[i] == 97) + chunk[i] = 122 // swap 'a' for 'z' + + this.push(chunk) + + callback() + })) + .pipe(fs.createWriteStream('out.txt')) +``` + +Or object streams: + +```js +var all = [] + +fs.createReadStream('data.csv') + .pipe(csv2()) + .pipe(through2.obj(function (chunk, enc, callback) { + var data = { + name : chunk[0] + , address : chunk[3] + , phone : chunk[10] + } + this.push(data) + + callback() + })) + .on('data', function (data) { + all.push(data) + }) + .on('end', function () { + doSomethingSpecial(all) + }) +``` + +Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. + +## API + +through2([ options, ] [ transformFunction ] [, flushFunction ]) + +Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). + +### options + +The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). + +The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: + +```js +fs.createReadStream('/tmp/important.dat') + .pipe(through2({ objectMode: true, allowHalfOpen: false }, + function (chunk, enc, cb) { + cb(null, 'wut?') // note we can use the second argument on the callback + // to provide data as an alternative to this.push('wut?') + } + ) + .pipe(fs.createWriteStream('/tmp/wut.txt')) +``` + +### transformFunction + +The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. + +To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. + +Alternatively, you may use `callback(err, chunk)` as shorthand for emitting a single chunk or an error. + +If you **do not provide a `transformFunction`** then you will get a simple pass-through stream. + +### flushFunction + +The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. + +```js +fs.createReadStream('/tmp/important.dat') + .pipe(through2( + function (chunk, enc, cb) { cb(null, chunk) }, // transform is a noop + function (cb) { // flush function + this.push('tacking on an extra buffer to the end'); + cb(); + } + )) + .pipe(fs.createWriteStream('/tmp/wut.txt')); +``` + +through2.ctor([ options, ] transformFunction[, flushFunction ]) + +Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. + +```js +var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { + if (record.temp != null && record.unit = "F") { + record.temp = ( ( record.temp - 32 ) * 5 ) / 9 + record.unit = "C" + } + this.push(record) + callback() +}) + +// Create instances of FToC like so: +var converter = new FToC() +// Or: +var converter = FToC() +// Or specify/override options when you instantiate, if you prefer: +var converter = FToC({objectMode: true}) +``` + +## See Also + + - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams. + - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams. + - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams. + - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies. + +## License + +**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/node_modules/through2/node_modules/readable-stream/.npmignore b/node_modules/through2/node_modules/readable-stream/.npmignore new file mode 100644 index 0000000000..38344f87a6 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/.npmignore @@ -0,0 +1,5 @@ +build/ +test/ +examples/ +fs.js +zlib.js \ No newline at end of file diff --git a/node_modules/through2/node_modules/readable-stream/LICENSE b/node_modules/through2/node_modules/readable-stream/LICENSE new file mode 100644 index 0000000000..e3d4e695a4 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/LICENSE @@ -0,0 +1,18 @@ +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/node_modules/through2/node_modules/readable-stream/README.md b/node_modules/through2/node_modules/readable-stream/README.md new file mode 100644 index 0000000000..3fb3e8023e --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/README.md @@ -0,0 +1,15 @@ +# readable-stream + +***Node-core streams for userland*** + +[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) +[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) + +This package is a mirror of the Streams2 and Streams3 implementations in Node-core. + +If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. + +**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. + +**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` + diff --git a/node_modules/through2/node_modules/readable-stream/duplex.js b/node_modules/through2/node_modules/readable-stream/duplex.js new file mode 100644 index 0000000000..ca807af876 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/duplex.js @@ -0,0 +1 @@ +module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js new file mode 100644 index 0000000000..b513d61a96 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js @@ -0,0 +1,89 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +module.exports = Duplex; + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; +} +/**/ + + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); + +util.inherits(Duplex, Readable); + +forEach(objectKeys(Writable.prototype), function(method) { + if (!Duplex.prototype[method]) + Duplex.prototype[method] = Writable.prototype[method]; +}); + +function Duplex(options) { + if (!(this instanceof Duplex)) + return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) + this.readable = false; + + if (options && options.writable === false) + this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) + this.allowHalfOpen = false; + + this.once('end', onend); +} + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) + return; + + // no more data can be written. + // But allow more writes to happen in this tick. + process.nextTick(this.end.bind(this)); +} + +function forEach (xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} diff --git a/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js new file mode 100644 index 0000000000..895ca50a1d --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js @@ -0,0 +1,46 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) + return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function(chunk, encoding, cb) { + cb(null, chunk); +}; diff --git a/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js new file mode 100644 index 0000000000..630722099e --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js @@ -0,0 +1,982 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Readable; + +/**/ +var isArray = require('isarray'); +/**/ + + +/**/ +var Buffer = require('buffer').Buffer; +/**/ + +Readable.ReadableState = ReadableState; + +var EE = require('events').EventEmitter; + +/**/ +if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +var Stream = require('stream'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +var StringDecoder; + +util.inherits(Readable, Stream); + +function ReadableState(options, stream) { + options = options || {}; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; + + // cast to ints. + this.highWaterMark = ~~this.highWaterMark; + + this.buffer = []; + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = false; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // In streams that never have any data, and do push(null) right away, + // the consumer can miss the 'end' event if they do some I/O before + // consuming the stream. So, we don't emit('end') until some reading + // happens. + this.calledRead = false; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, becuase any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // when piping, we only care about 'readable' events that happen + // after read()ing all the bytes and not getting any pushback. + this.ranOut = false; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) + StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + if (!(this instanceof Readable)) + return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + Stream.call(this); +} + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function(chunk, encoding) { + var state = this._readableState; + + if (typeof chunk === 'string' && !state.objectMode) { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = new Buffer(chunk, encoding); + encoding = ''; + } + } + + return readableAddChunk(this, state, chunk, encoding, false); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function(chunk) { + var state = this._readableState; + return readableAddChunk(this, state, chunk, '', true); +}; + +function readableAddChunk(stream, state, chunk, encoding, addToFront) { + var er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (chunk === null || chunk === undefined) { + state.reading = false; + if (!state.ended) + onEofChunk(stream, state); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (state.ended && !addToFront) { + var e = new Error('stream.push() after EOF'); + stream.emit('error', e); + } else if (state.endEmitted && addToFront) { + var e = new Error('stream.unshift() after end event'); + stream.emit('error', e); + } else { + if (state.decoder && !addToFront && !encoding) + chunk = state.decoder.write(chunk); + + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) { + state.buffer.unshift(chunk); + } else { + state.reading = false; + state.buffer.push(chunk); + } + + if (state.needReadable) + emitReadable(stream); + + maybeReadMore(stream, state); + } + } else if (!addToFront) { + state.reading = false; + } + + return needMoreData(state); +} + + + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && + (state.needReadable || + state.length < state.highWaterMark || + state.length === 0); +} + +// backwards compatibility. +Readable.prototype.setEncoding = function(enc) { + if (!StringDecoder) + StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; +}; + +// Don't raise the hwm > 128MB +var MAX_HWM = 0x800000; +function roundUpToNextPowerOf2(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 + n--; + for (var p = 1; p < 32; p <<= 1) n |= n >> p; + n++; + } + return n; +} + +function howMuchToRead(n, state) { + if (state.length === 0 && state.ended) + return 0; + + if (state.objectMode) + return n === 0 ? 0 : 1; + + if (n === null || isNaN(n)) { + // only flow one buffer at a time + if (state.flowing && state.buffer.length) + return state.buffer[0].length; + else + return state.length; + } + + if (n <= 0) + return 0; + + // If we're asking for more than the target buffer level, + // then raise the water mark. Bump up to the next highest + // power of 2, to prevent increasing it excessively in tiny + // amounts. + if (n > state.highWaterMark) + state.highWaterMark = roundUpToNextPowerOf2(n); + + // don't have that much. return null, unless we've ended. + if (n > state.length) { + if (!state.ended) { + state.needReadable = true; + return 0; + } else + return state.length; + } + + return n; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function(n) { + var state = this._readableState; + state.calledRead = true; + var nOrig = n; + var ret; + + if (typeof n !== 'number' || n > 0) + state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && + state.needReadable && + (state.length >= state.highWaterMark || state.ended)) { + emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + ret = null; + + // In cases where the decoder did not receive enough data + // to produce a full chunk, then immediately received an + // EOF, state.buffer will contain [, ]. + // howMuchToRead will see this and coerce the amount to + // read to zero (because it's looking at the length of the + // first in state.buffer), and we'll end up here. + // + // This can only happen via state.decoder -- no other venue + // exists for pushing a zero-length chunk into state.buffer + // and triggering this behavior. In this case, we return our + // remaining data and end the stream, if appropriate. + if (state.length > 0 && state.decoder) { + ret = fromList(n, state); + state.length -= ret.length; + } + + if (state.length === 0) + endReadable(this); + + return ret; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + + // if we currently have less than the highWaterMark, then also read some + if (state.length - n <= state.highWaterMark) + doRead = true; + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) + doRead = false; + + if (doRead) { + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) + state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + } + + // If _read called its callback synchronously, then `reading` + // will be false, and we need to re-evaluate how much data we + // can return to the user. + if (doRead && !state.reading) + n = howMuchToRead(nOrig, state); + + if (n > 0) + ret = fromList(n, state); + else + ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } + + state.length -= n; + + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (state.length === 0 && !state.ended) + state.needReadable = true; + + // If we happened to read() exactly the remaining amount in the + // buffer, and the EOF has been seen at this point, then make sure + // that we emit 'end' on the very next tick. + if (state.ended && !state.endEmitted && state.length === 0) + endReadable(this); + + return ret; +}; + +function chunkInvalid(state, chunk) { + var er = null; + if (!Buffer.isBuffer(chunk) && + 'string' !== typeof chunk && + chunk !== null && + chunk !== undefined && + !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + + +function onEofChunk(stream, state) { + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // if we've ended and we have some data left, then emit + // 'readable' now to make sure it gets picked up. + if (state.length > 0) + emitReadable(stream); + else + endReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (state.emittedReadable) + return; + + state.emittedReadable = true; + if (state.sync) + process.nextTick(function() { + emitReadable_(stream); + }); + else + emitReadable_(stream); +} + +function emitReadable_(stream) { + stream.emit('readable'); +} + + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(function() { + maybeReadMore_(stream, state); + }); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && + state.length < state.highWaterMark) { + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break; + else + len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function(n) { + this.emit('error', new Error('not implemented')); +}; + +Readable.prototype.pipe = function(dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && + dest !== process.stdout && + dest !== process.stderr; + + var endFn = doEnd ? onend : cleanup; + if (state.endEmitted) + process.nextTick(endFn); + else + src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable) { + if (readable !== src) return; + cleanup(); + } + + function onend() { + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + function cleanup() { + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', cleanup); + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (!dest._writableState || dest._writableState.needDrain) + ondrain(); + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + unpipe(); + dest.removeListener('error', onerror); + if (EE.listenerCount(dest, 'error') === 0) + dest.emit('error', er); + } + // This is a brutally ugly hack to make sure that our error handler + // is attached before any userland ones. NEVER DO THIS. + if (!dest._events || !dest._events.error) + dest.on('error', onerror); + else if (isArray(dest._events.error)) + dest._events.error.unshift(onerror); + else + dest._events.error = [onerror, dest._events.error]; + + + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + // the handler that waits for readable events after all + // the data gets sucked out in flow. + // This would be easier to follow with a .once() handler + // in flow(), but that is too slow. + this.on('readable', pipeOnReadable); + + state.flowing = true; + process.nextTick(function() { + flow(src); + }); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function() { + var dest = this; + var state = src._readableState; + state.awaitDrain--; + if (state.awaitDrain === 0) + flow(src); + }; +} + +function flow(src) { + var state = src._readableState; + var chunk; + state.awaitDrain = 0; + + function write(dest, i, list) { + var written = dest.write(chunk); + if (false === written) { + state.awaitDrain++; + } + } + + while (state.pipesCount && null !== (chunk = src.read())) { + + if (state.pipesCount === 1) + write(state.pipes, 0, null); + else + forEach(state.pipes, write); + + src.emit('data', chunk); + + // if anyone needs a drain, then we have to wait for that. + if (state.awaitDrain > 0) + return; + } + + // if every destination was unpiped, either before entering this + // function, or in the while loop, then stop flowing. + // + // NB: This is a pretty rare edge case. + if (state.pipesCount === 0) { + state.flowing = false; + + // if there were data event listeners added, then switch to old mode. + if (EE.listenerCount(src, 'data') > 0) + emitDataEvents(src); + return; + } + + // at this point, no one needed a drain, so we just ran out of data + // on the next readable event, start it over again. + state.ranOut = true; +} + +function pipeOnReadable() { + if (this._readableState.ranOut) { + this._readableState.ranOut = false; + flow(this); + } +} + + +Readable.prototype.unpipe = function(dest) { + var state = this._readableState; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) + return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) + return this; + + if (!dest) + dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + this.removeListener('readable', pipeOnReadable); + state.flowing = false; + if (dest) + dest.emit('unpipe', this); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + this.removeListener('readable', pipeOnReadable); + state.flowing = false; + + for (var i = 0; i < len; i++) + dests[i].emit('unpipe', this); + return this; + } + + // try to find the right one. + var i = indexOf(state.pipes, dest); + if (i === -1) + return this; + + state.pipes.splice(i, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) + state.pipes = state.pipes[0]; + + dest.emit('unpipe', this); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function(ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data' && !this._readableState.flowing) + emitDataEvents(this); + + if (ev === 'readable' && this.readable) { + var state = this._readableState; + if (!state.readableListening) { + state.readableListening = true; + state.emittedReadable = false; + state.needReadable = true; + if (!state.reading) { + this.read(0); + } else if (state.length) { + emitReadable(this, state); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function() { + emitDataEvents(this); + this.read(0); + this.emit('resume'); +}; + +Readable.prototype.pause = function() { + emitDataEvents(this, true); + this.emit('pause'); +}; + +function emitDataEvents(stream, startPaused) { + var state = stream._readableState; + + if (state.flowing) { + // https://github.com/isaacs/readable-stream/issues/16 + throw new Error('Cannot switch to old mode now.'); + } + + var paused = startPaused || false; + var readable = false; + + // convert to an old-style stream. + stream.readable = true; + stream.pipe = Stream.prototype.pipe; + stream.on = stream.addListener = Stream.prototype.on; + + stream.on('readable', function() { + readable = true; + + var c; + while (!paused && (null !== (c = stream.read()))) + stream.emit('data', c); + + if (c === null) { + readable = false; + stream._readableState.needReadable = true; + } + }); + + stream.pause = function() { + paused = true; + this.emit('pause'); + }; + + stream.resume = function() { + paused = false; + if (readable) + process.nextTick(function() { + stream.emit('readable'); + }); + else + this.read(0); + this.emit('resume'); + }; + + // now make it start, just in case it hadn't already. + stream.emit('readable'); +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function(stream) { + var state = this._readableState; + var paused = false; + + var self = this; + stream.on('end', function() { + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) + self.push(chunk); + } + + self.push(null); + }); + + stream.on('data', function(chunk) { + if (state.decoder) + chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + //if (state.objectMode && util.isNullOrUndefined(chunk)) + if (state.objectMode && (chunk === null || chunk === undefined)) + return; + else if (!state.objectMode && (!chunk || !chunk.length)) + return; + + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (typeof stream[i] === 'function' && + typeof this[i] === 'undefined') { + this[i] = function(method) { return function() { + return stream[method].apply(stream, arguments); + }}(i); + } + } + + // proxy certain important events. + var events = ['error', 'close', 'destroy', 'pause', 'resume']; + forEach(events, function(ev) { + stream.on(ev, self.emit.bind(self, ev)); + }); + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function(n) { + if (paused) { + paused = false; + stream.resume(); + } + }; + + return self; +}; + + + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +function fromList(n, state) { + var list = state.buffer; + var length = state.length; + var stringMode = !!state.decoder; + var objectMode = !!state.objectMode; + var ret; + + // nothing in the list, definitely empty. + if (list.length === 0) + return null; + + if (length === 0) + ret = null; + else if (objectMode) + ret = list.shift(); + else if (!n || n >= length) { + // read it all, truncate the array. + if (stringMode) + ret = list.join(''); + else + ret = Buffer.concat(list, length); + list.length = 0; + } else { + // read just some of it. + if (n < list[0].length) { + // just take a part of the first list item. + // slice is the same for buffers and strings. + var buf = list[0]; + ret = buf.slice(0, n); + list[0] = buf.slice(n); + } else if (n === list[0].length) { + // first list is a perfect match + ret = list.shift(); + } else { + // complex case. + // we have enough to cover it, but it spans past the first buffer. + if (stringMode) + ret = ''; + else + ret = new Buffer(n); + + var c = 0; + for (var i = 0, l = list.length; i < l && c < n; i++) { + var buf = list[0]; + var cpy = Math.min(n - c, buf.length); + + if (stringMode) + ret += buf.slice(0, cpy); + else + buf.copy(ret, c, 0, cpy); + + if (cpy < buf.length) + list[0] = buf.slice(cpy); + else + list.shift(); + + c += cpy; + } + } + } + + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) + throw new Error('endReadable called on non-empty stream'); + + if (!state.endEmitted && state.calledRead) { + state.ended = true; + process.nextTick(function() { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } + }); + } +} + +function forEach (xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} + +function indexOf (xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} diff --git a/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js new file mode 100644 index 0000000000..eb188df3e8 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js @@ -0,0 +1,210 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + +module.exports = Transform; + +var Duplex = require('./_stream_duplex'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +util.inherits(Transform, Duplex); + + +function TransformState(options, stream) { + this.afterTransform = function(er, data) { + return afterTransform(stream, er, data); + }; + + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; +} + +function afterTransform(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) + return stream.emit('error', new Error('no writecb in Transform class')); + + ts.writechunk = null; + ts.writecb = null; + + if (data !== null && data !== undefined) + stream.push(data); + + if (cb) + cb(er); + + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); + } +} + + +function Transform(options) { + if (!(this instanceof Transform)) + return new Transform(options); + + Duplex.call(this, options); + + var ts = this._transformState = new TransformState(options, this); + + // when the writable side finishes, then flush out anything remaining. + var stream = this; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + this.once('finish', function() { + if ('function' === typeof this._flush) + this._flush(function(er) { + done(stream, er); + }); + else + done(stream); + }); +} + +Transform.prototype.push = function(chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function(chunk, encoding, cb) { + throw new Error('not implemented'); +}; + +Transform.prototype._write = function(chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || + rs.needReadable || + rs.length < rs.highWaterMark) + this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function(n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + + +function done(stream, er) { + if (er) + return stream.emit('error', er); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var rs = stream._readableState; + var ts = stream._transformState; + + if (ws.length) + throw new Error('calling transform done when ws.length != 0'); + + if (ts.transforming) + throw new Error('calling transform done when still transforming'); + + return stream.push(null); +} diff --git a/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js new file mode 100644 index 0000000000..4bdaa4fa49 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js @@ -0,0 +1,386 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, cb), and it'll handle all +// the drain event emission and buffering. + +module.exports = Writable; + +/**/ +var Buffer = require('buffer').Buffer; +/**/ + +Writable.WritableState = WritableState; + + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +var Stream = require('stream'); + +util.inherits(Writable, Stream); + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; +} + +function WritableState(options, stream) { + options = options || {}; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + // cast to ints. + this.highWaterMark = ~~this.highWaterMark; + + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, becuase any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function(er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.buffer = []; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; +} + +function Writable(options) { + var Duplex = require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, though they're not + // instanceof Writable, they're instanceof Readable. + if (!(this instanceof Writable) && !(this instanceof Duplex)) + return new Writable(options); + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function() { + this.emit('error', new Error('Cannot pipe. Not readable.')); +}; + + +function writeAfterEnd(stream, state, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + process.nextTick(function() { + cb(er); + }); +} + +// If we get something that is not a buffer, string, null, or undefined, +// and we're not in objectMode, then that's an error. +// Otherwise stream chunks are all considered to be of length=1, and the +// watermarks determine how many objects to keep in the buffer, rather than +// how many bytes or characters. +function validChunk(stream, state, chunk, cb) { + var valid = true; + if (!Buffer.isBuffer(chunk) && + 'string' !== typeof chunk && + chunk !== null && + chunk !== undefined && + !state.objectMode) { + var er = new TypeError('Invalid non-string/buffer chunk'); + stream.emit('error', er); + process.nextTick(function() { + cb(er); + }); + valid = false; + } + return valid; +} + +Writable.prototype.write = function(chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (Buffer.isBuffer(chunk)) + encoding = 'buffer'; + else if (!encoding) + encoding = state.defaultEncoding; + + if (typeof cb !== 'function') + cb = function() {}; + + if (state.ended) + writeAfterEnd(this, state, cb); + else if (validChunk(this, state, chunk, cb)) + ret = writeOrBuffer(this, state, chunk, encoding, cb); + + return ret; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && + state.decodeStrings !== false && + typeof chunk === 'string') { + chunk = new Buffer(chunk, encoding); + } + return chunk; +} + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, chunk, encoding, cb) { + chunk = decodeChunk(state, chunk, encoding); + if (Buffer.isBuffer(chunk)) + encoding = 'buffer'; + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) + state.needDrain = true; + + if (state.writing) + state.buffer.push(new WriteReq(chunk, encoding, cb)); + else + doWrite(stream, state, len, chunk, encoding, cb); + + return ret; +} + +function doWrite(stream, state, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + if (sync) + process.nextTick(function() { + cb(er); + }); + else + cb(er); + + stream._writableState.errorEmitted = true; + stream.emit('error', er); +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) + onwriteError(stream, state, sync, er, cb); + else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(stream, state); + + if (!finished && !state.bufferProcessing && state.buffer.length) + clearBuffer(stream, state); + + if (sync) { + process.nextTick(function() { + afterWrite(stream, state, finished, cb); + }); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) + onwriteDrain(stream, state); + cb(); + if (finished) + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + + for (var c = 0; c < state.buffer.length; c++) { + var entry = state.buffer[c]; + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, len, chunk, encoding, cb); + + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + c++; + break; + } + } + + state.bufferProcessing = false; + if (c < state.buffer.length) + state.buffer = state.buffer.slice(c); + else + state.buffer.length = 0; +} + +Writable.prototype._write = function(chunk, encoding, cb) { + cb(new Error('not implemented')); +}; + +Writable.prototype.end = function(chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (typeof chunk !== 'undefined' && chunk !== null) + this.write(chunk, encoding); + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) + endWritable(this, state, cb); +}; + + +function needFinish(stream, state) { + return (state.ending && + state.length === 0 && + !state.finished && + !state.writing); +} + +function finishMaybe(stream, state) { + var need = needFinish(stream, state); + if (need) { + state.finished = true; + stream.emit('finish'); + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) + process.nextTick(cb); + else + stream.once('finish', cb); + } + state.ended = true; +} diff --git a/node_modules/through2/node_modules/readable-stream/package.json b/node_modules/through2/node_modules/readable-stream/package.json new file mode 100644 index 0000000000..b550f6ce48 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/package.json @@ -0,0 +1,32 @@ +{ + "name": "readable-stream", + "version": "1.0.34", + "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", + "main": "readable.js", + "dependencies": { + "core-util-is": "~1.0.0", + "isarray": "0.0.1", + "string_decoder": "~0.10.x", + "inherits": "~2.0.1" + }, + "devDependencies": { + "tap": "~0.2.6" + }, + "scripts": { + "test": "tap test/simple/*.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/isaacs/readable-stream" + }, + "keywords": [ + "readable", + "stream", + "pipe" + ], + "browser": { + "util": false + }, + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "MIT" +} diff --git a/node_modules/through2/node_modules/readable-stream/passthrough.js b/node_modules/through2/node_modules/readable-stream/passthrough.js new file mode 100644 index 0000000000..27e8d8a551 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/passthrough.js @@ -0,0 +1 @@ +module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/through2/node_modules/readable-stream/readable.js b/node_modules/through2/node_modules/readable-stream/readable.js new file mode 100644 index 0000000000..26511e87b9 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/readable.js @@ -0,0 +1,11 @@ +var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = Stream; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); +if (!process.browser && process.env.READABLE_STREAM === 'disable') { + module.exports = require('stream'); +} diff --git a/node_modules/through2/node_modules/readable-stream/transform.js b/node_modules/through2/node_modules/readable-stream/transform.js new file mode 100644 index 0000000000..5d482f0780 --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/transform.js @@ -0,0 +1 @@ +module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/through2/node_modules/readable-stream/writable.js b/node_modules/through2/node_modules/readable-stream/writable.js new file mode 100644 index 0000000000..e1e9efdf3c --- /dev/null +++ b/node_modules/through2/node_modules/readable-stream/writable.js @@ -0,0 +1 @@ +module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/through2/package.json b/node_modules/through2/package.json new file mode 100644 index 0000000000..8c4439a946 --- /dev/null +++ b/node_modules/through2/package.json @@ -0,0 +1,31 @@ +{ + "name": "through2", + "version": "0.6.5", + "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", + "main": "through2.js", + "scripts": { + "test": "node test/test.js", + "test-local": "brtapsauce-local test/basic-test.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/rvagg/through2.git" + }, + "keywords": [ + "stream", + "streams2", + "through", + "transform" + ], + "author": "Rod Vagg (https://github.com/rvagg)", + "license": "MIT", + "dependencies": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + }, + "devDependencies": { + "bl": ">=0.9.0 <0.10.0-0", + "stream-spigot": ">=3.0.4 <3.1.0-0", + "tape": ">=2.14.0 <2.15.0-0" + } +} diff --git a/node_modules/through2/through2.js b/node_modules/through2/through2.js new file mode 100644 index 0000000000..5b7a880e82 --- /dev/null +++ b/node_modules/through2/through2.js @@ -0,0 +1,96 @@ +var Transform = require('readable-stream/transform') + , inherits = require('util').inherits + , xtend = require('xtend') + +function DestroyableTransform(opts) { + Transform.call(this, opts) + this._destroyed = false +} + +inherits(DestroyableTransform, Transform) + +DestroyableTransform.prototype.destroy = function(err) { + if (this._destroyed) return + this._destroyed = true + + var self = this + process.nextTick(function() { + if (err) + self.emit('error', err) + self.emit('close') + }) +} + +// a noop _transform function +function noop (chunk, enc, callback) { + callback(null, chunk) +} + + +// create a new export function, used by both the main export and +// the .ctor export, contains common logic for dealing with arguments +function through2 (construct) { + return function (options, transform, flush) { + if (typeof options == 'function') { + flush = transform + transform = options + options = {} + } + + if (typeof transform != 'function') + transform = noop + + if (typeof flush != 'function') + flush = null + + return construct(options, transform, flush) + } +} + + +// main export, just make me a transform stream! +module.exports = through2(function (options, transform, flush) { + var t2 = new DestroyableTransform(options) + + t2._transform = transform + + if (flush) + t2._flush = flush + + return t2 +}) + + +// make me a reusable prototype that I can `new`, or implicitly `new` +// with a constructor call +module.exports.ctor = through2(function (options, transform, flush) { + function Through2 (override) { + if (!(this instanceof Through2)) + return new Through2(override) + + this.options = xtend(options, override) + + DestroyableTransform.call(this, this.options) + } + + inherits(Through2, DestroyableTransform) + + Through2.prototype._transform = transform + + if (flush) + Through2.prototype._flush = flush + + return Through2 +}) + + +module.exports.obj = through2(function (options, transform, flush) { + var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options)) + + t2._transform = transform + + if (flush) + t2._flush = flush + + return t2 +}) diff --git a/node_modules/tmp/CHANGELOG.md b/node_modules/tmp/CHANGELOG.md new file mode 100644 index 0000000000..0aa5488224 --- /dev/null +++ b/node_modules/tmp/CHANGELOG.md @@ -0,0 +1,288 @@ + + +## v0.2.1 (2020-04-28) + +#### :rocket: Enhancement +* [#252](https://github.com/raszi/node-tmp/pull/252) Closes [#250](https://github.com/raszi/node-tmp/issues/250): introduce tmpdir option for overriding the system tmp dir ([@silkentrance](https://github.com/silkentrance)) + +#### :house: Internal +* [#253](https://github.com/raszi/node-tmp/pull/253) Closes [#191](https://github.com/raszi/node-tmp/issues/191): generate changelog from pull requests using lerna-changelog ([@silkentrance](https://github.com/silkentrance)) + +#### Committers: 1 +- Carsten Klein ([@silkentrance](https://github.com/silkentrance)) + + +## v0.2.0 (2020-04-25) + +#### :rocket: Enhancement +* [#234](https://github.com/raszi/node-tmp/pull/234) feat: stabilize tmp for v0.2.0 release ([@silkentrance](https://github.com/silkentrance)) + +#### :bug: Bug Fix +* [#231](https://github.com/raszi/node-tmp/pull/231) Closes [#230](https://github.com/raszi/node-tmp/issues/230): regression after fix for #197 ([@silkentrance](https://github.com/silkentrance)) +* [#220](https://github.com/raszi/node-tmp/pull/220) Closes [#197](https://github.com/raszi/node-tmp/issues/197): return sync callback when using the sync interface, otherwise return the async callback ([@silkentrance](https://github.com/silkentrance)) +* [#193](https://github.com/raszi/node-tmp/pull/193) Closes [#192](https://github.com/raszi/node-tmp/issues/192): tmp must not exit the process on its own ([@silkentrance](https://github.com/silkentrance)) + +#### :memo: Documentation +* [#221](https://github.com/raszi/node-tmp/pull/221) Gh 206 document name option ([@silkentrance](https://github.com/silkentrance)) + +#### :house: Internal +* [#226](https://github.com/raszi/node-tmp/pull/226) Closes [#212](https://github.com/raszi/node-tmp/issues/212): enable direct name option test ([@silkentrance](https://github.com/silkentrance)) +* [#225](https://github.com/raszi/node-tmp/pull/225) Closes [#211](https://github.com/raszi/node-tmp/issues/211): existing tests must clean up after themselves ([@silkentrance](https://github.com/silkentrance)) +* [#224](https://github.com/raszi/node-tmp/pull/224) Closes [#217](https://github.com/raszi/node-tmp/issues/217): name tests must use tmpName ([@silkentrance](https://github.com/silkentrance)) +* [#223](https://github.com/raszi/node-tmp/pull/223) Closes [#214](https://github.com/raszi/node-tmp/issues/214): refactor tests and lib ([@silkentrance](https://github.com/silkentrance)) +* [#198](https://github.com/raszi/node-tmp/pull/198) Update dependencies to latest versions ([@matsev](https://github.com/matsev)) + +#### Committers: 2 +- Carsten Klein ([@silkentrance](https://github.com/silkentrance)) +- Mattias Severson ([@matsev](https://github.com/matsev)) + + +## v0.1.0 (2019-03-20) + +#### :rocket: Enhancement +* [#177](https://github.com/raszi/node-tmp/pull/177) fix: fail early if there is no tmp dir specified ([@silkentrance](https://github.com/silkentrance)) +* [#159](https://github.com/raszi/node-tmp/pull/159) Closes [#121](https://github.com/raszi/node-tmp/issues/121) ([@silkentrance](https://github.com/silkentrance)) +* [#161](https://github.com/raszi/node-tmp/pull/161) Closes [#155](https://github.com/raszi/node-tmp/issues/155) ([@silkentrance](https://github.com/silkentrance)) +* [#166](https://github.com/raszi/node-tmp/pull/166) fix: avoid relying on Node’s internals ([@addaleax](https://github.com/addaleax)) +* [#144](https://github.com/raszi/node-tmp/pull/144) prepend opts.dir || tmpDir to template if no path is given ([@silkentrance](https://github.com/silkentrance)) + +#### :bug: Bug Fix +* [#183](https://github.com/raszi/node-tmp/pull/183) Closes [#182](https://github.com/raszi/node-tmp/issues/182) fileSync takes empty string postfix option ([@gutte](https://github.com/gutte)) +* [#130](https://github.com/raszi/node-tmp/pull/130) Closes [#129](https://github.com/raszi/node-tmp/issues/129) install process listeners safely ([@silkentrance](https://github.com/silkentrance)) + +#### :memo: Documentation +* [#188](https://github.com/raszi/node-tmp/pull/188) HOTCloses [#187](https://github.com/raszi/node-tmp/issues/187): restore behaviour for #182 ([@silkentrance](https://github.com/silkentrance)) +* [#180](https://github.com/raszi/node-tmp/pull/180) fix gh-179: template no longer accepts arbitrary paths ([@silkentrance](https://github.com/silkentrance)) +* [#175](https://github.com/raszi/node-tmp/pull/175) docs: add `unsafeCleanup` option to jsdoc ([@kerimdzhanov](https://github.com/kerimdzhanov)) +* [#151](https://github.com/raszi/node-tmp/pull/151) docs: fix link to tmp-promise ([@silkentrance](https://github.com/silkentrance)) + +#### :house: Internal +* [#184](https://github.com/raszi/node-tmp/pull/184) test: add missing tests for #182 ([@silkentrance](https://github.com/silkentrance)) +* [#171](https://github.com/raszi/node-tmp/pull/171) chore: drop old NodeJS support ([@poppinlp](https://github.com/poppinlp)) +* [#170](https://github.com/raszi/node-tmp/pull/170) chore: update dependencies ([@raszi](https://github.com/raszi)) +* [#165](https://github.com/raszi/node-tmp/pull/165) test: add missing tests ([@raszi](https://github.com/raszi)) +* [#163](https://github.com/raszi/node-tmp/pull/163) chore: add lint npm task ([@raszi](https://github.com/raszi)) +* [#107](https://github.com/raszi/node-tmp/pull/107) chore: add coverage report ([@raszi](https://github.com/raszi)) +* [#141](https://github.com/raszi/node-tmp/pull/141) test: refactor tests for mocha ([@silkentrance](https://github.com/silkentrance)) +* [#154](https://github.com/raszi/node-tmp/pull/154) chore: change Travis configuration ([@raszi](https://github.com/raszi)) +* [#152](https://github.com/raszi/node-tmp/pull/152) fix: drop Node v0.6.0 ([@raszi](https://github.com/raszi)) + +#### Committers: 6 +- Anna Henningsen ([@addaleax](https://github.com/addaleax)) +- Carsten Klein ([@silkentrance](https://github.com/silkentrance)) +- Dan Kerimdzhanov ([@kerimdzhanov](https://github.com/kerimdzhanov)) +- Gustav Klingstedt ([@gutte](https://github.com/gutte)) +- KARASZI István ([@raszi](https://github.com/raszi)) +- PoppinL ([@poppinlp](https://github.com/poppinlp)) + + +## v0.0.33 (2017-08-12) + +#### :rocket: Enhancement +* [#147](https://github.com/raszi/node-tmp/pull/147) fix: with name option try at most once to get a unique tmp name ([@silkentrance](https://github.com/silkentrance)) + +#### :bug: Bug Fix +* [#149](https://github.com/raszi/node-tmp/pull/149) fix(fileSync): must honor detachDescriptor and discardDescriptor options ([@silkentrance](https://github.com/silkentrance)) +* [#119](https://github.com/raszi/node-tmp/pull/119) Closes [#115](https://github.com/raszi/node-tmp/issues/115) ([@silkentrance](https://github.com/silkentrance)) + +#### :memo: Documentation +* [#128](https://github.com/raszi/node-tmp/pull/128) Closes [#127](https://github.com/raszi/node-tmp/issues/127) add reference to tmp-promise ([@silkentrance](https://github.com/silkentrance)) + +#### :house: Internal +* [#135](https://github.com/raszi/node-tmp/pull/135) Closes [#133](https://github.com/raszi/node-tmp/issues/133), #134 ([@silkentrance](https://github.com/silkentrance)) +* [#123](https://github.com/raszi/node-tmp/pull/123) docs: update tmp.js MIT license header to 2017 ([@madnight](https://github.com/madnight)) +* [#122](https://github.com/raszi/node-tmp/pull/122) chore: add issue template ([@silkentrance](https://github.com/silkentrance)) + +#### Committers: 2 +- Carsten Klein ([@silkentrance](https://github.com/silkentrance)) +- Fabian Beuke ([@madnight](https://github.com/madnight)) + + +## v0.0.32 (2017-03-24) + +#### :memo: Documentation +* [#106](https://github.com/raszi/node-tmp/pull/106) doc: add proper JSDoc documentation ([@raszi](https://github.com/raszi)) + +#### :house: Internal +* [#111](https://github.com/raszi/node-tmp/pull/111) test: add Windows tests ([@binki](https://github.com/binki)) +* [#110](https://github.com/raszi/node-tmp/pull/110) chore: add AppVeyor ([@binki](https://github.com/binki)) +* [#105](https://github.com/raszi/node-tmp/pull/105) chore: use const where possible ([@raszi](https://github.com/raszi)) +* [#104](https://github.com/raszi/node-tmp/pull/104) style: fix various style issues ([@raszi](https://github.com/raszi)) + +#### Committers: 2 +- KARASZI István ([@raszi](https://github.com/raszi)) +- Nathan Phillip Brink ([@binki](https://github.com/binki)) + + +## v0.0.31 (2016-11-21) + +#### :rocket: Enhancement +* [#99](https://github.com/raszi/node-tmp/pull/99) feat: add next callback functionality ([@silkentrance](https://github.com/silkentrance)) +* [#94](https://github.com/raszi/node-tmp/pull/94) feat: add options to control descriptor management ([@pabigot](https://github.com/pabigot)) + +#### :house: Internal +* [#101](https://github.com/raszi/node-tmp/pull/101) fix: Include files in the package.json ([@raszi](https://github.com/raszi)) + +#### Committers: 3 +- Carsten Klein ([@silkentrance](https://github.com/silkentrance)) +- KARASZI István ([@raszi](https://github.com/raszi)) +- Peter A. Bigot ([@pabigot](https://github.com/pabigot)) + + +## v0.0.30 (2016-11-01) + +#### :bug: Bug Fix +* [#96](https://github.com/raszi/node-tmp/pull/96) fix: constants for Node 6 ([@jnj16180340](https://github.com/jnj16180340)) +* [#98](https://github.com/raszi/node-tmp/pull/98) fix: garbage collector ([@Ari-H](https://github.com/Ari-H)) + +#### Committers: 2 +- Nate Johnson ([@jnj16180340](https://github.com/jnj16180340)) +- [@Ari-H](https://github.com/Ari-H) + + +## v0.0.29 (2016-09-18) + +#### :rocket: Enhancement +* [#87](https://github.com/raszi/node-tmp/pull/87) fix: replace calls to deprecated fs API functions ([@OlliV](https://github.com/OlliV)) + +#### :bug: Bug Fix +* [#70](https://github.com/raszi/node-tmp/pull/70) fix: prune `_removeObjects` correctly ([@joliss](https://github.com/joliss)) +* [#71](https://github.com/raszi/node-tmp/pull/71) Fix typo ([@gcampax](https://github.com/gcampax)) + +#### :memo: Documentation +* [#77](https://github.com/raszi/node-tmp/pull/77) docs: change mkstemps to mkstemp ([@thefourtheye](https://github.com/thefourtheye)) + +#### :house: Internal +* [#92](https://github.com/raszi/node-tmp/pull/92) chore: add Travis CI support for Node 6 ([@amilajack](https://github.com/amilajack)) +* [#79](https://github.com/raszi/node-tmp/pull/79) fix: remove unneeded require statement ([@whmountains](https://github.com/whmountains)) + +#### Committers: 6 +- Amila Welihinda ([@amilajack](https://github.com/amilajack)) +- Caleb Whiting ([@whmountains](https://github.com/whmountains)) +- Giovanni Campagna ([@gcampax](https://github.com/gcampax)) +- Jo Liss ([@joliss](https://github.com/joliss)) +- Olli Vanhoja ([@OlliV](https://github.com/OlliV)) +- Sakthipriyan Vairamani ([@thefourtheye](https://github.com/thefourtheye)) + + +## v0.0.28 (2015-09-27) + +#### :bug: Bug Fix +* [#63](https://github.com/raszi/node-tmp/pull/63) fix: delete for _rmdirRecursiveSync ([@voltrevo](https://github.com/voltrevo)) + +#### :memo: Documentation +* [#64](https://github.com/raszi/node-tmp/pull/64) docs: fix typo in the README ([@JTKnox91](https://github.com/JTKnox91)) + +#### :house: Internal +* [#67](https://github.com/raszi/node-tmp/pull/67) test: add node v4.0 v4.1 to travis config ([@raszi](https://github.com/raszi)) +* [#66](https://github.com/raszi/node-tmp/pull/66) chore(deps): update deps ([@raszi](https://github.com/raszi)) + +#### Committers: 3 +- Andrew Morris ([@voltrevo](https://github.com/voltrevo)) +- John T. Knox ([@JTKnox91](https://github.com/JTKnox91)) +- KARASZI István ([@raszi](https://github.com/raszi)) + + +## v0.0.27 (2015-08-15) + +#### :bug: Bug Fix +* [#60](https://github.com/raszi/node-tmp/pull/60) fix: unlinking when the file has been already removed ([@silkentrance](https://github.com/silkentrance)) + +#### :memo: Documentation +* [#55](https://github.com/raszi/node-tmp/pull/55) docs(README): update README ([@raszi](https://github.com/raszi)) + +#### :house: Internal +* [#56](https://github.com/raszi/node-tmp/pull/56) style(jshint): fix JSHint error ([@raszi](https://github.com/raszi)) +* [#53](https://github.com/raszi/node-tmp/pull/53) chore: update license attribute ([@pdehaan](https://github.com/pdehaan)) + +#### Committers: 3 +- Carsten Klein ([@silkentrance](https://github.com/silkentrance)) +- KARASZI István ([@raszi](https://github.com/raszi)) +- Peter deHaan ([@pdehaan](https://github.com/pdehaan)) + + +## v0.0.26 (2015-05-12) + +#### :rocket: Enhancement +* [#40](https://github.com/raszi/node-tmp/pull/40) Fix for #39 ([@silkentrance](https://github.com/silkentrance)) +* [#42](https://github.com/raszi/node-tmp/pull/42) Fix for #17 ([@silkentrance](https://github.com/silkentrance)) +* [#41](https://github.com/raszi/node-tmp/pull/41) Fix for #37 ([@silkentrance](https://github.com/silkentrance)) +* [#32](https://github.com/raszi/node-tmp/pull/32) add ability to customize file/dir names ([@shime](https://github.com/shime)) +* [#29](https://github.com/raszi/node-tmp/pull/29) tmp.file have responsibility to close file, not only unlink file ([@vhain](https://github.com/vhain)) + +#### :bug: Bug Fix +* [#51](https://github.com/raszi/node-tmp/pull/51) fix(windows): fix tempDir on windows ([@raszi](https://github.com/raszi)) +* [#49](https://github.com/raszi/node-tmp/pull/49) remove object from _removeObjects if cleanup fn is called Closes [#48](https://github.com/raszi/node-tmp/issues/48) ([@bmeck](https://github.com/bmeck)) + +#### :memo: Documentation +* [#45](https://github.com/raszi/node-tmp/pull/45) Fix for #44 ([@silkentrance](https://github.com/silkentrance)) + +#### :house: Internal +* [#34](https://github.com/raszi/node-tmp/pull/34) Create LICENSE ([@ScottWeinstein](https://github.com/ScottWeinstein)) + +#### Committers: 6 +- Bradley Farias ([@bmeck](https://github.com/bmeck)) +- Carsten Klein ([@silkentrance](https://github.com/silkentrance)) +- Hrvoje Šimić ([@shime](https://github.com/shime)) +- Juwan Yoo ([@vhain](https://github.com/vhain)) +- KARASZI István ([@raszi](https://github.com/raszi)) +- Scott Weinstein ([@ScottWeinstein](https://github.com/ScottWeinstein)) + + +## v0.0.24 (2014-07-11) + +#### :rocket: Enhancement +* [#25](https://github.com/raszi/node-tmp/pull/25) Added removeCallback passing ([@foxel](https://github.com/foxel)) + +#### Committers: 1 +- Andrey Kupreychik ([@foxel](https://github.com/foxel)) + + +## v0.0.23 (2013-12-03) + +#### :rocket: Enhancement +* [#21](https://github.com/raszi/node-tmp/pull/21) If we are not on node 0.8, don't register an uncaughtException handler ([@wibblymat](https://github.com/wibblymat)) + +#### Committers: 1 +- Mat Scales ([@wibblymat](https://github.com/wibblymat)) + + +## v0.0.22 (2013-11-29) + +#### :rocket: Enhancement +* [#19](https://github.com/raszi/node-tmp/pull/19) Rethrow only on node v0.8. ([@mcollina](https://github.com/mcollina)) + +#### Committers: 1 +- Matteo Collina ([@mcollina](https://github.com/mcollina)) + + +## v0.0.21 (2013-08-07) + +#### :bug: Bug Fix +* [#16](https://github.com/raszi/node-tmp/pull/16) Fix bug where we delete contents of symlinks ([@lightsofapollo](https://github.com/lightsofapollo)) + +#### Committers: 1 +- James Lal ([@lightsofapollo](https://github.com/lightsofapollo)) + + +## v0.0.17 (2013-04-09) + +#### :rocket: Enhancement +* [#9](https://github.com/raszi/node-tmp/pull/9) add recursive remove option ([@oscar-broman](https://github.com/oscar-broman)) + +#### Committers: 1 +- [@oscar-broman](https://github.com/oscar-broman) + + +## v0.0.14 (2012-08-26) + +#### :rocket: Enhancement +* [#5](https://github.com/raszi/node-tmp/pull/5) Export _getTmpName for temporary file name creation ([@joscha](https://github.com/joscha)) + +#### Committers: 1 +- Joscha Feth ([@joscha](https://github.com/joscha)) + + +## Previous Releases < v0.0.14 + +- no information available diff --git a/node_modules/tmp/LICENSE b/node_modules/tmp/LICENSE new file mode 100644 index 0000000000..72418bd9d3 --- /dev/null +++ b/node_modules/tmp/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 KARASZI István + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/tmp/README.md b/node_modules/tmp/README.md new file mode 100644 index 0000000000..bb20fb7be3 --- /dev/null +++ b/node_modules/tmp/README.md @@ -0,0 +1,365 @@ +# Tmp + +A simple temporary file and directory creator for [node.js.][1] + +[![Build Status](https://travis-ci.org/raszi/node-tmp.svg?branch=master)](https://travis-ci.org/raszi/node-tmp) +[![Dependencies](https://david-dm.org/raszi/node-tmp.svg)](https://david-dm.org/raszi/node-tmp) +[![npm version](https://badge.fury.io/js/tmp.svg)](https://badge.fury.io/js/tmp) +[![API documented](https://img.shields.io/badge/API-documented-brightgreen.svg)](https://raszi.github.io/node-tmp/) +[![Known Vulnerabilities](https://snyk.io/test/npm/tmp/badge.svg)](https://snyk.io/test/npm/tmp) + +## About + +This is a [widely used library][2] to create temporary files and directories +in a [node.js][1] environment. + +Tmp offers both an asynchronous and a synchronous API. For all API calls, all +the parameters are optional. There also exists a promisified version of the +API, see [tmp-promise][5]. + +Tmp uses crypto for determining random file names, or, when using templates, +a six letter random identifier. And just in case that you do not have that much +entropy left on your system, Tmp will fall back to pseudo random numbers. + +You can set whether you want to remove the temporary file on process exit or +not. + +If you do not want to store your temporary directories and files in the +standard OS temporary directory, then you are free to override that as well. + +## An Important Note on Compatibility + +See the [CHANGELOG](./CHANGELOG.md) for more information. + +### Version 0.1.0 + +Since version 0.1.0, all support for node versions < 0.10.0 has been dropped. + +Most importantly, any support for earlier versions of node-tmp was also dropped. + +If you still require node versions < 0.10.0, then you must limit your node-tmp +dependency to versions below 0.1.0. + +### Version 0.0.33 + +Since version 0.0.33, all support for node versions < 0.8 has been dropped. + +If you still require node version 0.8, then you must limit your node-tmp +dependency to version 0.0.33. + +For node versions < 0.8 you must limit your node-tmp dependency to +versions < 0.0.33. + +## How to install + +```bash +npm install tmp +``` + +## Usage + +Please also check [API docs][4]. + +### Asynchronous file creation + +Simple temporary file creation, the file will be closed and unlinked on process exit. + +```javascript +const tmp = require('tmp'); + +tmp.file(function _tempFileCreated(err, path, fd, cleanupCallback) { + if (err) throw err; + + console.log('File: ', path); + console.log('Filedescriptor: ', fd); + + // If we don't need the file anymore we could manually call the cleanupCallback + // But that is not necessary if we didn't pass the keep option because the library + // will clean after itself. + cleanupCallback(); +}); +``` + +### Synchronous file creation + +A synchronous version of the above. + +```javascript +const tmp = require('tmp'); + +const tmpobj = tmp.fileSync(); +console.log('File: ', tmpobj.name); +console.log('Filedescriptor: ', tmpobj.fd); + +// If we don't need the file anymore we could manually call the removeCallback +// But that is not necessary if we didn't pass the keep option because the library +// will clean after itself. +tmpobj.removeCallback(); +``` + +Note that this might throw an exception if either the maximum limit of retries +for creating a temporary name fails, or, in case that you do not have the permission +to write to the directory where the temporary file should be created in. + +### Asynchronous directory creation + +Simple temporary directory creation, it will be removed on process exit. + +If the directory still contains items on process exit, then it won't be removed. + +```javascript +const tmp = require('tmp'); + +tmp.dir(function _tempDirCreated(err, path, cleanupCallback) { + if (err) throw err; + + console.log('Dir: ', path); + + // Manual cleanup + cleanupCallback(); +}); +``` + +If you want to cleanup the directory even when there are entries in it, then +you can pass the `unsafeCleanup` option when creating it. + +### Synchronous directory creation + +A synchronous version of the above. + +```javascript +const tmp = require('tmp'); + +const tmpobj = tmp.dirSync(); +console.log('Dir: ', tmpobj.name); +// Manual cleanup +tmpobj.removeCallback(); +``` + +Note that this might throw an exception if either the maximum limit of retries +for creating a temporary name fails, or, in case that you do not have the permission +to write to the directory where the temporary directory should be created in. + +### Asynchronous filename generation + +It is possible with this library to generate a unique filename in the specified +directory. + +```javascript +const tmp = require('tmp'); + +tmp.tmpName(function _tempNameGenerated(err, path) { + if (err) throw err; + + console.log('Created temporary filename: ', path); +}); +``` + +### Synchronous filename generation + +A synchronous version of the above. + +```javascript +const tmp = require('tmp'); + +const name = tmp.tmpNameSync(); +console.log('Created temporary filename: ', name); +``` + +## Advanced usage + +### Asynchronous file creation + +Creates a file with mode `0644`, prefix will be `prefix-` and postfix will be `.txt`. + +```javascript +const tmp = require('tmp'); + +tmp.file({ mode: 0o644, prefix: 'prefix-', postfix: '.txt' }, function _tempFileCreated(err, path, fd) { + if (err) throw err; + + console.log('File: ', path); + console.log('Filedescriptor: ', fd); +}); +``` + +### Synchronous file creation + +A synchronous version of the above. + +```javascript +const tmp = require('tmp'); + +const tmpobj = tmp.fileSync({ mode: 0o644, prefix: 'prefix-', postfix: '.txt' }); +console.log('File: ', tmpobj.name); +console.log('Filedescriptor: ', tmpobj.fd); +``` + +### Controlling the Descriptor + +As a side effect of creating a unique file `tmp` gets a file descriptor that is +returned to the user as the `fd` parameter. The descriptor may be used by the +application and is closed when the `removeCallback` is invoked. + +In some use cases the application does not need the descriptor, needs to close it +without removing the file, or needs to remove the file without closing the +descriptor. Two options control how the descriptor is managed: + +* `discardDescriptor` - if `true` causes `tmp` to close the descriptor after the file + is created. In this case the `fd` parameter is undefined. +* `detachDescriptor` - if `true` causes `tmp` to return the descriptor in the `fd` + parameter, but it is the application's responsibility to close it when it is no + longer needed. + +```javascript +const tmp = require('tmp'); + +tmp.file({ discardDescriptor: true }, function _tempFileCreated(err, path, fd, cleanupCallback) { + if (err) throw err; + // fd will be undefined, allowing application to use fs.createReadStream(path) + // without holding an unused descriptor open. +}); +``` + +```javascript +const tmp = require('tmp'); + +tmp.file({ detachDescriptor: true }, function _tempFileCreated(err, path, fd, cleanupCallback) { + if (err) throw err; + + cleanupCallback(); + // Application can store data through fd here; the space used will automatically + // be reclaimed by the operating system when the descriptor is closed or program + // terminates. +}); +``` + +### Asynchronous directory creation + +Creates a directory with mode `0755`, prefix will be `myTmpDir_`. + +```javascript +const tmp = require('tmp'); + +tmp.dir({ mode: 0o750, prefix: 'myTmpDir_' }, function _tempDirCreated(err, path) { + if (err) throw err; + + console.log('Dir: ', path); +}); +``` + +### Synchronous directory creation + +Again, a synchronous version of the above. + +```javascript +const tmp = require('tmp'); + +const tmpobj = tmp.dirSync({ mode: 0750, prefix: 'myTmpDir_' }); +console.log('Dir: ', tmpobj.name); +``` + +### mkstemp like, asynchronously + +Creates a new temporary directory with mode `0700` and filename like `/tmp/tmp-nk2J1u`. + +IMPORTANT NOTE: template no longer accepts a path. Use the dir option instead if you +require tmp to create your temporary filesystem object in a different place than the +default `tmp.tmpdir`. + +```javascript +const tmp = require('tmp'); + +tmp.dir({ template: 'tmp-XXXXXX' }, function _tempDirCreated(err, path) { + if (err) throw err; + + console.log('Dir: ', path); +}); +``` + +### mkstemp like, synchronously + +This will behave similarly to the asynchronous version. + +```javascript +const tmp = require('tmp'); + +const tmpobj = tmp.dirSync({ template: 'tmp-XXXXXX' }); +console.log('Dir: ', tmpobj.name); +``` + +### Asynchronous filename generation + +Using `tmpName()` you can create temporary file names asynchronously. +The function accepts all standard options, e.g. `prefix`, `postfix`, `dir`, and so on. + +You can also leave out the options altogether and just call the function with a callback as first parameter. + +```javascript +const tmp = require('tmp'); + +const options = {}; + +tmp.tmpName(options, function _tempNameGenerated(err, path) { + if (err) throw err; + + console.log('Created temporary filename: ', path); +}); +``` + +### Synchronous filename generation + +The `tmpNameSync()` function works similarly to `tmpName()`. +Again, you can leave out the options altogether and just invoke the function without any parameters. + +```javascript +const tmp = require('tmp'); +const options = {}; +const tmpname = tmp.tmpNameSync(options); +console.log('Created temporary filename: ', tmpname); +``` + +## Graceful cleanup + +If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the +temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary +object removal. + +To enforce this, you can call the `setGracefulCleanup()` method: + +```javascript +const tmp = require('tmp'); + +tmp.setGracefulCleanup(); +``` + +## Options + +All options are optional :) + + * `name`: a fixed name that overrides random name generation, the name must be relative and must not contain path segments + * `mode`: the file mode to create with, falls back to `0o600` on file creation and `0o700` on directory creation + * `prefix`: the optional prefix, defaults to `tmp` + * `postfix`: the optional postfix + * `template`: [`mkstemp`][3] like filename template, no default, can be either an absolute or a relative path that resolves + to a relative path of the system's default temporary directory, must include `XXXXXX` once for random name generation, e.g. + 'foo/bar/XXXXXX'. Absolute paths are also fine as long as they are relative to os.tmpdir(). + Any directories along the so specified path must exist, otherwise a ENOENT error will be thrown upon access, + as tmp will not check the availability of the path, nor will it establish the requested path for you. + * `dir`: the optional temporary directory that must be relative to the system's default temporary directory. + absolute paths are fine as long as they point to a location under the system's default temporary directory. + Any directories along the so specified path must exist, otherwise a ENOENT error will be thrown upon access, + as tmp will not check the availability of the path, nor will it establish the requested path for you. + * `tmpdir`: allows you to override the system's root tmp directory + * `tries`: how many times should the function try to get a unique filename before giving up, default `3` + * `keep`: signals that the temporary file or directory should not be deleted on exit, default is `false` + * In order to clean up, you will have to call the provided `cleanupCallback` function manually. + * `unsafeCleanup`: recursively removes the created temporary directory, even when it's not empty. default is `false` + * `detachDescriptor`: detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection + * `discardDescriptor`: discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection + +[1]: http://nodejs.org/ +[2]: https://www.npmjs.com/browse/depended/tmp +[3]: http://www.kernel.org/doc/man-pages/online/pages/man3/mkstemp.3.html +[4]: https://raszi.github.io/node-tmp/ +[5]: https://github.com/benjamingr/tmp-promise diff --git a/node_modules/tmp/lib/tmp.js b/node_modules/tmp/lib/tmp.js new file mode 100644 index 0000000000..b41c29d4aa --- /dev/null +++ b/node_modules/tmp/lib/tmp.js @@ -0,0 +1,780 @@ +/*! + * Tmp + * + * Copyright (c) 2011-2017 KARASZI Istvan + * + * MIT Licensed + */ + +/* + * Module dependencies. + */ +const fs = require('fs'); +const os = require('os'); +const path = require('path'); +const crypto = require('crypto'); +const _c = { fs: fs.constants, os: os.constants }; +const rimraf = require('rimraf'); + +/* + * The working inner variables. + */ +const + // the random characters to choose from + RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', + + TEMPLATE_PATTERN = /XXXXXX/, + + DEFAULT_TRIES = 3, + + CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR), + + // constants are off on the windows platform and will not match the actual errno codes + IS_WIN32 = os.platform() === 'win32', + EBADF = _c.EBADF || _c.os.errno.EBADF, + ENOENT = _c.ENOENT || _c.os.errno.ENOENT, + + DIR_MODE = 0o700 /* 448 */, + FILE_MODE = 0o600 /* 384 */, + + EXIT = 'exit', + + // this will hold the objects need to be removed on exit + _removeObjects = [], + + // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback + FN_RMDIR_SYNC = fs.rmdirSync.bind(fs), + FN_RIMRAF_SYNC = rimraf.sync; + +let + _gracefulCleanup = false; + +/** + * Gets a temporary file name. + * + * @param {(Options|tmpNameCallback)} options options or callback + * @param {?tmpNameCallback} callback the callback function + */ +function tmpName(options, callback) { + const + args = _parseArguments(options, callback), + opts = args[0], + cb = args[1]; + + try { + _assertAndSanitizeOptions(opts); + } catch (err) { + return cb(err); + } + + let tries = opts.tries; + (function _getUniqueName() { + try { + const name = _generateTmpName(opts); + + // check whether the path exists then retry if needed + fs.stat(name, function (err) { + /* istanbul ignore else */ + if (!err) { + /* istanbul ignore else */ + if (tries-- > 0) return _getUniqueName(); + + return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name)); + } + + cb(null, name); + }); + } catch (err) { + cb(err); + } + }()); +} + +/** + * Synchronous version of tmpName. + * + * @param {Object} options + * @returns {string} the generated random name + * @throws {Error} if the options are invalid or could not generate a filename + */ +function tmpNameSync(options) { + const + args = _parseArguments(options), + opts = args[0]; + + _assertAndSanitizeOptions(opts); + + let tries = opts.tries; + do { + const name = _generateTmpName(opts); + try { + fs.statSync(name); + } catch (e) { + return name; + } + } while (tries-- > 0); + + throw new Error('Could not get a unique tmp filename, max tries reached'); +} + +/** + * Creates and opens a temporary file. + * + * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined + * @param {?fileCallback} callback + */ +function file(options, callback) { + const + args = _parseArguments(options, callback), + opts = args[0], + cb = args[1]; + + // gets a temporary filename + tmpName(opts, function _tmpNameCreated(err, name) { + /* istanbul ignore else */ + if (err) return cb(err); + + // create and open the file + fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) { + /* istanbu ignore else */ + if (err) return cb(err); + + if (opts.discardDescriptor) { + return fs.close(fd, function _discardCallback(possibleErr) { + // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only + return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false)); + }); + } else { + // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care + // about the descriptor + const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor; + cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false)); + } + }); + }); +} + +/** + * Synchronous version of file. + * + * @param {Options} options + * @returns {FileSyncObject} object consists of name, fd and removeCallback + * @throws {Error} if cannot create a file + */ +function fileSync(options) { + const + args = _parseArguments(options), + opts = args[0]; + + const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor; + const name = tmpNameSync(opts); + var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE); + /* istanbul ignore else */ + if (opts.discardDescriptor) { + fs.closeSync(fd); + fd = undefined; + } + + return { + name: name, + fd: fd, + removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true) + }; +} + +/** + * Creates a temporary directory. + * + * @param {(Options|dirCallback)} options the options or the callback function + * @param {?dirCallback} callback + */ +function dir(options, callback) { + const + args = _parseArguments(options, callback), + opts = args[0], + cb = args[1]; + + // gets a temporary filename + tmpName(opts, function _tmpNameCreated(err, name) { + /* istanbul ignore else */ + if (err) return cb(err); + + // create the directory + fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) { + /* istanbul ignore else */ + if (err) return cb(err); + + cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false)); + }); + }); +} + +/** + * Synchronous version of dir. + * + * @param {Options} options + * @returns {DirSyncObject} object consists of name and removeCallback + * @throws {Error} if it cannot create a directory + */ +function dirSync(options) { + const + args = _parseArguments(options), + opts = args[0]; + + const name = tmpNameSync(opts); + fs.mkdirSync(name, opts.mode || DIR_MODE); + + return { + name: name, + removeCallback: _prepareTmpDirRemoveCallback(name, opts, true) + }; +} + +/** + * Removes files asynchronously. + * + * @param {Object} fdPath + * @param {Function} next + * @private + */ +function _removeFileAsync(fdPath, next) { + const _handler = function (err) { + if (err && !_isENOENT(err)) { + // reraise any unanticipated error + return next(err); + } + next(); + }; + + if (0 <= fdPath[0]) + fs.close(fdPath[0], function () { + fs.unlink(fdPath[1], _handler); + }); + else fs.unlink(fdPath[1], _handler); +} + +/** + * Removes files synchronously. + * + * @param {Object} fdPath + * @private + */ +function _removeFileSync(fdPath) { + let rethrownException = null; + try { + if (0 <= fdPath[0]) fs.closeSync(fdPath[0]); + } catch (e) { + // reraise any unanticipated error + if (!_isEBADF(e) && !_isENOENT(e)) throw e; + } finally { + try { + fs.unlinkSync(fdPath[1]); + } + catch (e) { + // reraise any unanticipated error + if (!_isENOENT(e)) rethrownException = e; + } + } + if (rethrownException !== null) { + throw rethrownException; + } +} + +/** + * Prepares the callback for removal of the temporary file. + * + * Returns either a sync callback or a async callback depending on whether + * fileSync or file was called, which is expressed by the sync parameter. + * + * @param {string} name the path of the file + * @param {number} fd file descriptor + * @param {Object} opts + * @param {boolean} sync + * @returns {fileCallback | fileCallbackSync} + * @private + */ +function _prepareTmpFileRemoveCallback(name, fd, opts, sync) { + const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync); + const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync); + + if (!opts.keep) _removeObjects.unshift(removeCallbackSync); + + return sync ? removeCallbackSync : removeCallback; +} + +/** + * Prepares the callback for removal of the temporary directory. + * + * Returns either a sync callback or a async callback depending on whether + * tmpFileSync or tmpFile was called, which is expressed by the sync parameter. + * + * @param {string} name + * @param {Object} opts + * @param {boolean} sync + * @returns {Function} the callback + * @private + */ +function _prepareTmpDirRemoveCallback(name, opts, sync) { + const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs); + const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC; + const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync); + const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync); + if (!opts.keep) _removeObjects.unshift(removeCallbackSync); + + return sync ? removeCallbackSync : removeCallback; +} + +/** + * Creates a guarded function wrapping the removeFunction call. + * + * The cleanup callback is save to be called multiple times. + * Subsequent invocations will be ignored. + * + * @param {Function} removeFunction + * @param {string} fileOrDirName + * @param {boolean} sync + * @param {cleanupCallbackSync?} cleanupCallbackSync + * @returns {cleanupCallback | cleanupCallbackSync} + * @private + */ +function _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) { + let called = false; + + // if sync is true, the next parameter will be ignored + return function _cleanupCallback(next) { + + /* istanbul ignore else */ + if (!called) { + // remove cleanupCallback from cache + const toRemove = cleanupCallbackSync || _cleanupCallback; + const index = _removeObjects.indexOf(toRemove); + /* istanbul ignore else */ + if (index >= 0) _removeObjects.splice(index, 1); + + called = true; + if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) { + return removeFunction(fileOrDirName); + } else { + return removeFunction(fileOrDirName, next || function() {}); + } + } + }; +} + +/** + * The garbage collector. + * + * @private + */ +function _garbageCollector() { + /* istanbul ignore else */ + if (!_gracefulCleanup) return; + + // the function being called removes itself from _removeObjects, + // loop until _removeObjects is empty + while (_removeObjects.length) { + try { + _removeObjects[0](); + } catch (e) { + // already removed? + } + } +} + +/** + * Random name generator based on crypto. + * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript + * + * @param {number} howMany + * @returns {string} the generated random name + * @private + */ +function _randomChars(howMany) { + let + value = [], + rnd = null; + + // make sure that we do not fail because we ran out of entropy + try { + rnd = crypto.randomBytes(howMany); + } catch (e) { + rnd = crypto.pseudoRandomBytes(howMany); + } + + for (var i = 0; i < howMany; i++) { + value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]); + } + + return value.join(''); +} + +/** + * Helper which determines whether a string s is blank, that is undefined, or empty or null. + * + * @private + * @param {string} s + * @returns {Boolean} true whether the string s is blank, false otherwise + */ +function _isBlank(s) { + return s === null || _isUndefined(s) || !s.trim(); +} + +/** + * Checks whether the `obj` parameter is defined or not. + * + * @param {Object} obj + * @returns {boolean} true if the object is undefined + * @private + */ +function _isUndefined(obj) { + return typeof obj === 'undefined'; +} + +/** + * Parses the function arguments. + * + * This function helps to have optional arguments. + * + * @param {(Options|null|undefined|Function)} options + * @param {?Function} callback + * @returns {Array} parsed arguments + * @private + */ +function _parseArguments(options, callback) { + /* istanbul ignore else */ + if (typeof options === 'function') { + return [{}, options]; + } + + /* istanbul ignore else */ + if (_isUndefined(options)) { + return [{}, callback]; + } + + // copy options so we do not leak the changes we make internally + const actualOptions = {}; + for (const key of Object.getOwnPropertyNames(options)) { + actualOptions[key] = options[key]; + } + + return [actualOptions, callback]; +} + +/** + * Generates a new temporary name. + * + * @param {Object} opts + * @returns {string} the new random name according to opts + * @private + */ +function _generateTmpName(opts) { + + const tmpDir = opts.tmpdir; + + /* istanbul ignore else */ + if (!_isUndefined(opts.name)) + return path.join(tmpDir, opts.dir, opts.name); + + /* istanbul ignore else */ + if (!_isUndefined(opts.template)) + return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6)); + + // prefix and postfix + const name = [ + opts.prefix ? opts.prefix : 'tmp', + '-', + process.pid, + '-', + _randomChars(12), + opts.postfix ? '-' + opts.postfix : '' + ].join(''); + + return path.join(tmpDir, opts.dir, name); +} + +/** + * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing + * options. + * + * @param {Options} options + * @private + */ +function _assertAndSanitizeOptions(options) { + + options.tmpdir = _getTmpDir(options); + + const tmpDir = options.tmpdir; + + /* istanbul ignore else */ + if (!_isUndefined(options.name)) + _assertIsRelative(options.name, 'name', tmpDir); + /* istanbul ignore else */ + if (!_isUndefined(options.dir)) + _assertIsRelative(options.dir, 'dir', tmpDir); + /* istanbul ignore else */ + if (!_isUndefined(options.template)) { + _assertIsRelative(options.template, 'template', tmpDir); + if (!options.template.match(TEMPLATE_PATTERN)) + throw new Error(`Invalid template, found "${options.template}".`); + } + /* istanbul ignore else */ + if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0) + throw new Error(`Invalid tries, found "${options.tries}".`); + + // if a name was specified we will try once + options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1; + options.keep = !!options.keep; + options.detachDescriptor = !!options.detachDescriptor; + options.discardDescriptor = !!options.discardDescriptor; + options.unsafeCleanup = !!options.unsafeCleanup; + + // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to + options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir)); + options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir)); + // sanitize further if template is relative to options.dir + options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template); + + // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to + options.name = _isUndefined(options.name) ? undefined : _sanitizeName(options.name); + options.prefix = _isUndefined(options.prefix) ? '' : options.prefix; + options.postfix = _isUndefined(options.postfix) ? '' : options.postfix; +} + +/** + * Resolve the specified path name in respect to tmpDir. + * + * The specified name might include relative path components, e.g. ../ + * so we need to resolve in order to be sure that is is located inside tmpDir + * + * @param name + * @param tmpDir + * @returns {string} + * @private + */ +function _resolvePath(name, tmpDir) { + const sanitizedName = _sanitizeName(name); + if (sanitizedName.startsWith(tmpDir)) { + return path.resolve(sanitizedName); + } else { + return path.resolve(path.join(tmpDir, sanitizedName)); + } +} + +/** + * Sanitize the specified path name by removing all quote characters. + * + * @param name + * @returns {string} + * @private + */ +function _sanitizeName(name) { + if (_isBlank(name)) { + return name; + } + return name.replace(/["']/g, ''); +} + +/** + * Asserts whether specified name is relative to the specified tmpDir. + * + * @param {string} name + * @param {string} option + * @param {string} tmpDir + * @throws {Error} + * @private + */ +function _assertIsRelative(name, option, tmpDir) { + if (option === 'name') { + // assert that name is not absolute and does not contain a path + if (path.isAbsolute(name)) + throw new Error(`${option} option must not contain an absolute path, found "${name}".`); + // must not fail on valid . or .. or similar such constructs + let basename = path.basename(name); + if (basename === '..' || basename === '.' || basename !== name) + throw new Error(`${option} option must not contain a path, found "${name}".`); + } + else { // if (option === 'dir' || option === 'template') { + // assert that dir or template are relative to tmpDir + if (path.isAbsolute(name) && !name.startsWith(tmpDir)) { + throw new Error(`${option} option must be relative to "${tmpDir}", found "${name}".`); + } + let resolvedPath = _resolvePath(name, tmpDir); + if (!resolvedPath.startsWith(tmpDir)) + throw new Error(`${option} option must be relative to "${tmpDir}", found "${resolvedPath}".`); + } +} + +/** + * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows. + * + * @private + */ +function _isEBADF(error) { + return _isExpectedError(error, -EBADF, 'EBADF'); +} + +/** + * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows. + * + * @private + */ +function _isENOENT(error) { + return _isExpectedError(error, -ENOENT, 'ENOENT'); +} + +/** + * Helper to determine whether the expected error code matches the actual code and errno, + * which will differ between the supported node versions. + * + * - Node >= 7.0: + * error.code {string} + * error.errno {number} any numerical value will be negated + * + * CAVEAT + * + * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT + * is no different here. + * + * @param {SystemError} error + * @param {number} errno + * @param {string} code + * @private + */ +function _isExpectedError(error, errno, code) { + return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno; +} + +/** + * Sets the graceful cleanup. + * + * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the + * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary + * object removals. + */ +function setGracefulCleanup() { + _gracefulCleanup = true; +} + +/** + * Returns the currently configured tmp dir from os.tmpdir(). + * + * @private + * @param {?Options} options + * @returns {string} the currently configured tmp dir + */ +function _getTmpDir(options) { + return path.resolve(_sanitizeName(options && options.tmpdir || os.tmpdir())); +} + +// Install process exit listener +process.addListener(EXIT, _garbageCollector); + +/** + * Configuration options. + * + * @typedef {Object} Options + * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected + * @property {?number} tries the number of tries before give up the name generation + * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files + * @property {?string} template the "mkstemp" like filename template + * @property {?string} name fixed name relative to tmpdir or the specified dir option + * @property {?string} dir tmp directory relative to the root tmp directory in use + * @property {?string} prefix prefix for the generated name + * @property {?string} postfix postfix for the generated name + * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir + * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty + * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection + * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection + */ + +/** + * @typedef {Object} FileSyncObject + * @property {string} name the name of the file + * @property {string} fd the file descriptor or -1 if the fd has been discarded + * @property {fileCallback} removeCallback the callback function to remove the file + */ + +/** + * @typedef {Object} DirSyncObject + * @property {string} name the name of the directory + * @property {fileCallback} removeCallback the callback function to remove the directory + */ + +/** + * @callback tmpNameCallback + * @param {?Error} err the error object if anything goes wrong + * @param {string} name the temporary file name + */ + +/** + * @callback fileCallback + * @param {?Error} err the error object if anything goes wrong + * @param {string} name the temporary file name + * @param {number} fd the file descriptor or -1 if the fd had been discarded + * @param {cleanupCallback} fn the cleanup callback function + */ + +/** + * @callback fileCallbackSync + * @param {?Error} err the error object if anything goes wrong + * @param {string} name the temporary file name + * @param {number} fd the file descriptor or -1 if the fd had been discarded + * @param {cleanupCallbackSync} fn the cleanup callback function + */ + +/** + * @callback dirCallback + * @param {?Error} err the error object if anything goes wrong + * @param {string} name the temporary file name + * @param {cleanupCallback} fn the cleanup callback function + */ + +/** + * @callback dirCallbackSync + * @param {?Error} err the error object if anything goes wrong + * @param {string} name the temporary file name + * @param {cleanupCallbackSync} fn the cleanup callback function + */ + +/** + * Removes the temporary created file or directory. + * + * @callback cleanupCallback + * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed + */ + +/** + * Removes the temporary created file or directory. + * + * @callback cleanupCallbackSync + */ + +/** + * Callback function for function composition. + * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57} + * + * @callback simpleCallback + */ + +// exporting all the needed methods + +// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will +// allow users to reconfigure the temporary directory +Object.defineProperty(module.exports, 'tmpdir', { + enumerable: true, + configurable: false, + get: function () { + return _getTmpDir(); + } +}); + +module.exports.dir = dir; +module.exports.dirSync = dirSync; + +module.exports.file = file; +module.exports.fileSync = fileSync; + +module.exports.tmpName = tmpName; +module.exports.tmpNameSync = tmpNameSync; + +module.exports.setGracefulCleanup = setGracefulCleanup; diff --git a/node_modules/tmp/node_modules/.bin/rimraf b/node_modules/tmp/node_modules/.bin/rimraf new file mode 100644 index 0000000000..3cebd6e8ff --- /dev/null +++ b/node_modules/tmp/node_modules/.bin/rimraf @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../rimraf/bin.js" "$@" + ret=$? +else + node "$basedir/../rimraf/bin.js" "$@" + ret=$? +fi +exit $ret diff --git a/node_modules/tmp/node_modules/.bin/rimraf.cmd b/node_modules/tmp/node_modules/.bin/rimraf.cmd new file mode 100644 index 0000000000..9333ec64e1 --- /dev/null +++ b/node_modules/tmp/node_modules/.bin/rimraf.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\rimraf\bin.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\rimraf\bin.js" %* +) \ No newline at end of file diff --git a/node_modules/tmp/node_modules/rimraf/CHANGELOG.md b/node_modules/tmp/node_modules/rimraf/CHANGELOG.md new file mode 100644 index 0000000000..f116f1414d --- /dev/null +++ b/node_modules/tmp/node_modules/rimraf/CHANGELOG.md @@ -0,0 +1,65 @@ +# v3.0 + +- Add `--preserve-root` option to executable (default true) +- Drop support for Node.js below version 6 + +# v2.7 + +- Make `glob` an optional dependency + +# 2.6 + +- Retry on EBUSY on non-windows platforms as well +- Make `rimraf.sync` 10000% more reliable on Windows + +# 2.5 + +- Handle Windows EPERM when lstat-ing read-only dirs +- Add glob option to pass options to glob + +# 2.4 + +- Add EPERM to delay/retry loop +- Add `disableGlob` option + +# 2.3 + +- Make maxBusyTries and emfileWait configurable +- Handle weird SunOS unlink-dir issue +- Glob the CLI arg for better Windows support + +# 2.2 + +- Handle ENOENT properly on Windows +- Allow overriding fs methods +- Treat EPERM as indicative of non-empty dir +- Remove optional graceful-fs dep +- Consistently return null error instead of undefined on success +- win32: Treat ENOTEMPTY the same as EBUSY +- Add `rimraf` binary + +# 2.1 + +- Fix SunOS error code for a non-empty directory +- Try rmdir before readdir +- Treat EISDIR like EPERM +- Remove chmod +- Remove lstat polyfill, node 0.7 is not supported + +# 2.0 + +- Fix myGid call to check process.getgid +- Simplify the EBUSY backoff logic. +- Use fs.lstat in node >= 0.7.9 +- Remove gently option +- remove fiber implementation +- Delete files that are marked read-only + +# 1.0 + +- Allow ENOENT in sync method +- Throw when no callback is provided +- Make opts.gently an absolute path +- use 'stat' if 'lstat' is not available +- Consistent error naming, and rethrow non-ENOENT stat errors +- add fiber implementation diff --git a/node_modules/tmp/node_modules/rimraf/LICENSE b/node_modules/tmp/node_modules/rimraf/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/node_modules/tmp/node_modules/rimraf/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/tmp/node_modules/rimraf/README.md b/node_modules/tmp/node_modules/rimraf/README.md new file mode 100644 index 0000000000..423b8cf854 --- /dev/null +++ b/node_modules/tmp/node_modules/rimraf/README.md @@ -0,0 +1,101 @@ +[![Build Status](https://travis-ci.org/isaacs/rimraf.svg?branch=master)](https://travis-ci.org/isaacs/rimraf) [![Dependency Status](https://david-dm.org/isaacs/rimraf.svg)](https://david-dm.org/isaacs/rimraf) [![devDependency Status](https://david-dm.org/isaacs/rimraf/dev-status.svg)](https://david-dm.org/isaacs/rimraf#info=devDependencies) + +The [UNIX command](http://en.wikipedia.org/wiki/Rm_(Unix)) `rm -rf` for node. + +Install with `npm install rimraf`, or just drop rimraf.js somewhere. + +## API + +`rimraf(f, [opts], callback)` + +The first parameter will be interpreted as a globbing pattern for files. If you +want to disable globbing you can do so with `opts.disableGlob` (defaults to +`false`). This might be handy, for instance, if you have filenames that contain +globbing wildcard characters. + +The callback will be called with an error if there is one. Certain +errors are handled for you: + +* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of + `opts.maxBusyTries` times before giving up, adding 100ms of wait + between each attempt. The default `maxBusyTries` is 3. +* `ENOENT` - If the file doesn't exist, rimraf will return + successfully, since your desired outcome is already the case. +* `EMFILE` - Since `readdir` requires opening a file descriptor, it's + possible to hit `EMFILE` if too many file descriptors are in use. + In the sync case, there's nothing to be done for this. But in the + async case, rimraf will gradually back off with timeouts up to + `opts.emfileWait` ms, which defaults to 1000. + +## options + +* unlink, chmod, stat, lstat, rmdir, readdir, + unlinkSync, chmodSync, statSync, lstatSync, rmdirSync, readdirSync + + In order to use a custom file system library, you can override + specific fs functions on the options object. + + If any of these functions are present on the options object, then + the supplied function will be used instead of the default fs + method. + + Sync methods are only relevant for `rimraf.sync()`, of course. + + For example: + + ```javascript + var myCustomFS = require('some-custom-fs') + + rimraf('some-thing', myCustomFS, callback) + ``` + +* maxBusyTries + + If an `EBUSY`, `ENOTEMPTY`, or `EPERM` error code is encountered + on Windows systems, then rimraf will retry with a linear backoff + wait of 100ms longer on each try. The default maxBusyTries is 3. + + Only relevant for async usage. + +* emfileWait + + If an `EMFILE` error is encountered, then rimraf will retry + repeatedly with a linear backoff of 1ms longer on each try, until + the timeout counter hits this max. The default limit is 1000. + + If you repeatedly encounter `EMFILE` errors, then consider using + [graceful-fs](http://npm.im/graceful-fs) in your program. + + Only relevant for async usage. + +* glob + + Set to `false` to disable [glob](http://npm.im/glob) pattern + matching. + + Set to an object to pass options to the glob module. The default + glob options are `{ nosort: true, silent: true }`. + + Glob version 6 is used in this module. + + Relevant for both sync and async usage. + +* disableGlob + + Set to any non-falsey value to disable globbing entirely. + (Equivalent to setting `glob: false`.) + +## rimraf.sync + +It can remove stuff synchronously, too. But that's not so good. Use +the async API. It's better. + +## CLI + +If installed with `npm install rimraf -g` it can be used as a global +command `rimraf [ ...]` which is useful for cross platform support. + +## mkdirp + +If you need to create a directory recursively, check out +[mkdirp](https://github.com/substack/node-mkdirp). diff --git a/node_modules/tmp/node_modules/rimraf/bin.js b/node_modules/tmp/node_modules/rimraf/bin.js new file mode 100644 index 0000000000..023814cc93 --- /dev/null +++ b/node_modules/tmp/node_modules/rimraf/bin.js @@ -0,0 +1,68 @@ +#!/usr/bin/env node + +const rimraf = require('./') + +const path = require('path') + +const isRoot = arg => /^(\/|[a-zA-Z]:\\)$/.test(path.resolve(arg)) +const filterOutRoot = arg => { + const ok = preserveRoot === false || !isRoot(arg) + if (!ok) { + console.error(`refusing to remove ${arg}`) + console.error('Set --no-preserve-root to allow this') + } + return ok +} + +let help = false +let dashdash = false +let noglob = false +let preserveRoot = true +const args = process.argv.slice(2).filter(arg => { + if (dashdash) + return !!arg + else if (arg === '--') + dashdash = true + else if (arg === '--no-glob' || arg === '-G') + noglob = true + else if (arg === '--glob' || arg === '-g') + noglob = false + else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/)) + help = true + else if (arg === '--preserve-root') + preserveRoot = true + else if (arg === '--no-preserve-root') + preserveRoot = false + else + return !!arg +}).filter(arg => !preserveRoot || filterOutRoot(arg)) + +const go = n => { + if (n >= args.length) + return + const options = noglob ? { glob: false } : {} + rimraf(args[n], options, er => { + if (er) + throw er + go(n+1) + }) +} + +if (help || args.length === 0) { + // If they didn't ask for help, then this is not a "success" + const log = help ? console.log : console.error + log('Usage: rimraf [ ...]') + log('') + log(' Deletes all files and folders at "path" recursively.') + log('') + log('Options:') + log('') + log(' -h, --help Display this usage info') + log(' -G, --no-glob Do not expand glob patterns in arguments') + log(' -g, --glob Expand glob patterns in arguments (default)') + log(' --preserve-root Do not remove \'/\' (default)') + log(' --no-preserve-root Do not treat \'/\' specially') + log(' -- Stop parsing flags') + process.exit(help ? 0 : 1) +} else + go(0) diff --git a/node_modules/tmp/node_modules/rimraf/package.json b/node_modules/tmp/node_modules/rimraf/package.json new file mode 100644 index 0000000000..1bf8d5e387 --- /dev/null +++ b/node_modules/tmp/node_modules/rimraf/package.json @@ -0,0 +1,32 @@ +{ + "name": "rimraf", + "version": "3.0.2", + "main": "rimraf.js", + "description": "A deep deletion module for node (like `rm -rf`)", + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC", + "repository": "git://github.com/isaacs/rimraf.git", + "scripts": { + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --follow-tags", + "test": "tap test/*.js" + }, + "bin": "./bin.js", + "dependencies": { + "glob": "^7.1.3" + }, + "files": [ + "LICENSE", + "README.md", + "bin.js", + "rimraf.js" + ], + "devDependencies": { + "mkdirp": "^0.5.1", + "tap": "^12.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } +} diff --git a/node_modules/tmp/node_modules/rimraf/rimraf.js b/node_modules/tmp/node_modules/rimraf/rimraf.js new file mode 100644 index 0000000000..34da4171d7 --- /dev/null +++ b/node_modules/tmp/node_modules/rimraf/rimraf.js @@ -0,0 +1,360 @@ +const assert = require("assert") +const path = require("path") +const fs = require("fs") +let glob = undefined +try { + glob = require("glob") +} catch (_err) { + // treat glob as optional. +} + +const defaultGlobOpts = { + nosort: true, + silent: true +} + +// for EMFILE handling +let timeout = 0 + +const isWindows = (process.platform === "win32") + +const defaults = options => { + const methods = [ + 'unlink', + 'chmod', + 'stat', + 'lstat', + 'rmdir', + 'readdir' + ] + methods.forEach(m => { + options[m] = options[m] || fs[m] + m = m + 'Sync' + options[m] = options[m] || fs[m] + }) + + options.maxBusyTries = options.maxBusyTries || 3 + options.emfileWait = options.emfileWait || 1000 + if (options.glob === false) { + options.disableGlob = true + } + if (options.disableGlob !== true && glob === undefined) { + throw Error('glob dependency not found, set `options.disableGlob = true` if intentional') + } + options.disableGlob = options.disableGlob || false + options.glob = options.glob || defaultGlobOpts +} + +const rimraf = (p, options, cb) => { + if (typeof options === 'function') { + cb = options + options = {} + } + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert.equal(typeof cb, 'function', 'rimraf: callback function required') + assert(options, 'rimraf: invalid options argument provided') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + defaults(options) + + let busyTries = 0 + let errState = null + let n = 0 + + const next = (er) => { + errState = errState || er + if (--n === 0) + cb(errState) + } + + const afterGlob = (er, results) => { + if (er) + return cb(er) + + n = results.length + if (n === 0) + return cb() + + results.forEach(p => { + const CB = (er) => { + if (er) { + if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && + busyTries < options.maxBusyTries) { + busyTries ++ + // try again, with the same exact callback as this one. + return setTimeout(() => rimraf_(p, options, CB), busyTries * 100) + } + + // this one won't happen if graceful-fs is used. + if (er.code === "EMFILE" && timeout < options.emfileWait) { + return setTimeout(() => rimraf_(p, options, CB), timeout ++) + } + + // already gone + if (er.code === "ENOENT") er = null + } + + timeout = 0 + next(er) + } + rimraf_(p, options, CB) + }) + } + + if (options.disableGlob || !glob.hasMagic(p)) + return afterGlob(null, [p]) + + options.lstat(p, (er, stat) => { + if (!er) + return afterGlob(null, [p]) + + glob(p, options.glob, afterGlob) + }) + +} + +// Two possible strategies. +// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR +// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR +// +// Both result in an extra syscall when you guess wrong. However, there +// are likely far more normal files in the world than directories. This +// is based on the assumption that a the average number of files per +// directory is >= 1. +// +// If anyone ever complains about this, then I guess the strategy could +// be made configurable somehow. But until then, YAGNI. +const rimraf_ = (p, options, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + // sunos lets the root user unlink directories, which is... weird. + // so we have to lstat here and make sure it's not a dir. + options.lstat(p, (er, st) => { + if (er && er.code === "ENOENT") + return cb(null) + + // Windows can EPERM on stat. Life is suffering. + if (er && er.code === "EPERM" && isWindows) + fixWinEPERM(p, options, er, cb) + + if (st && st.isDirectory()) + return rmdir(p, options, er, cb) + + options.unlink(p, er => { + if (er) { + if (er.code === "ENOENT") + return cb(null) + if (er.code === "EPERM") + return (isWindows) + ? fixWinEPERM(p, options, er, cb) + : rmdir(p, options, er, cb) + if (er.code === "EISDIR") + return rmdir(p, options, er, cb) + } + return cb(er) + }) + }) +} + +const fixWinEPERM = (p, options, er, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.chmod(p, 0o666, er2 => { + if (er2) + cb(er2.code === "ENOENT" ? null : er) + else + options.stat(p, (er3, stats) => { + if (er3) + cb(er3.code === "ENOENT" ? null : er) + else if (stats.isDirectory()) + rmdir(p, options, er, cb) + else + options.unlink(p, cb) + }) + }) +} + +const fixWinEPERMSync = (p, options, er) => { + assert(p) + assert(options) + + try { + options.chmodSync(p, 0o666) + } catch (er2) { + if (er2.code === "ENOENT") + return + else + throw er + } + + let stats + try { + stats = options.statSync(p) + } catch (er3) { + if (er3.code === "ENOENT") + return + else + throw er + } + + if (stats.isDirectory()) + rmdirSync(p, options, er) + else + options.unlinkSync(p) +} + +const rmdir = (p, options, originalEr, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) + // if we guessed wrong, and it's not a directory, then + // raise the original error. + options.rmdir(p, er => { + if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) + rmkids(p, options, cb) + else if (er && er.code === "ENOTDIR") + cb(originalEr) + else + cb(er) + }) +} + +const rmkids = (p, options, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.readdir(p, (er, files) => { + if (er) + return cb(er) + let n = files.length + if (n === 0) + return options.rmdir(p, cb) + let errState + files.forEach(f => { + rimraf(path.join(p, f), options, er => { + if (errState) + return + if (er) + return cb(errState = er) + if (--n === 0) + options.rmdir(p, cb) + }) + }) + }) +} + +// this looks simpler, and is strictly *faster*, but will +// tie up the JavaScript thread and fail on excessively +// deep directory trees. +const rimrafSync = (p, options) => { + options = options || {} + defaults(options) + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert(options, 'rimraf: missing options') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + let results + + if (options.disableGlob || !glob.hasMagic(p)) { + results = [p] + } else { + try { + options.lstatSync(p) + results = [p] + } catch (er) { + results = glob.sync(p, options.glob) + } + } + + if (!results.length) + return + + for (let i = 0; i < results.length; i++) { + const p = results[i] + + let st + try { + st = options.lstatSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + + // Windows can EPERM on stat. Life is suffering. + if (er.code === "EPERM" && isWindows) + fixWinEPERMSync(p, options, er) + } + + try { + // sunos lets the root user unlink directories, which is... weird. + if (st && st.isDirectory()) + rmdirSync(p, options, null) + else + options.unlinkSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "EPERM") + return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) + if (er.code !== "EISDIR") + throw er + + rmdirSync(p, options, er) + } + } +} + +const rmdirSync = (p, options, originalEr) => { + assert(p) + assert(options) + + try { + options.rmdirSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "ENOTDIR") + throw originalEr + if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") + rmkidsSync(p, options) + } +} + +const rmkidsSync = (p, options) => { + assert(p) + assert(options) + options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) + + // We only end up here once we got ENOTEMPTY at least once, and + // at this point, we are guaranteed to have removed all the kids. + // So, we know that it won't be ENOENT or ENOTDIR or anything else. + // try really hard to delete stuff on windows, because it has a + // PROFOUNDLY annoying habit of not closing handles promptly when + // files are deleted, resulting in spurious ENOTEMPTY errors. + const retries = isWindows ? 100 : 1 + let i = 0 + do { + let threw = true + try { + const ret = options.rmdirSync(p, options) + threw = false + return ret + } finally { + if (++i < retries && threw) + continue + } + } while (true) +} + +module.exports = rimraf +rimraf.sync = rimrafSync diff --git a/node_modules/tmp/package.json b/node_modules/tmp/package.json new file mode 100644 index 0000000000..d98a9108f3 --- /dev/null +++ b/node_modules/tmp/package.json @@ -0,0 +1,58 @@ +{ + "name": "tmp", + "version": "0.2.1", + "description": "Temporary file and directory creator", + "author": "KARASZI István (http://raszi.hu/)", + "contributors": [ + "Carsten Klein (https://github.com/silkentrance)" + ], + "keywords": [ + "temporary", + "tmp", + "temp", + "tempdir", + "tempfile", + "tmpdir", + "tmpfile" + ], + "license": "MIT", + "repository": "https://github.com/raszi/node-tmp.git", + "homepage": "http://github.com/raszi/node-tmp", + "bugs": { + "url": "http://github.com/raszi/node-tmp/issues" + }, + "engines": { + "node": ">=8.17.0" + }, + "dependencies": { + "rimraf": "^3.0.0" + }, + "devDependencies": { + "eslint": "^6.3.0", + "eslint-plugin-mocha": "^6.1.1", + "istanbul": "^0.4.5", + "lerna-changelog": "^1.0.1", + "mocha": "^6.2.0" + }, + "main": "lib/tmp.js", + "files": [ + "lib/" + ], + "changelog": { + "labels": { + "breaking": ":boom: Breaking Change", + "enhancement": ":rocket: Enhancement", + "bug": ":bug: Bug Fix", + "documentation": ":memo: Documentation", + "internal": ":house: Internal" + }, + "cacheDir": ".changelog" + }, + "scripts": { + "changelog": "lerna-changelog", + "lint": "eslint lib --env mocha test", + "clean": "rm -Rf ./coverage", + "test": "npm run clean && istanbul cover ./node_modules/mocha/bin/_mocha --report none --print none --dir ./coverage/json -u exports -R test/*-test.js && istanbul report --root ./coverage/json html && istanbul report text-summary", + "doc": "jsdoc -c .jsdoc.json" + } +} diff --git a/node_modules/uid-number/LICENSE b/node_modules/uid-number/LICENSE new file mode 100644 index 0000000000..05eeeb88c2 --- /dev/null +++ b/node_modules/uid-number/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/uid-number/README.md b/node_modules/uid-number/README.md new file mode 100644 index 0000000000..81166753ab --- /dev/null +++ b/node_modules/uid-number/README.md @@ -0,0 +1,17 @@ +Use this module to convert a username/groupname to a uid/gid number. + +Usage: + +``` +npm install uid-number +``` + +Then, in your node program: + +```javascript +var uidNumber = require("uid-number") +uidNumber("isaacs", function (er, uid, gid) { + // gid is null because we didn't ask for a group name + // uid === 24561 because that's my number. +}) +``` diff --git a/node_modules/uid-number/get-uid-gid.js b/node_modules/uid-number/get-uid-gid.js new file mode 100644 index 0000000000..0b391748a9 --- /dev/null +++ b/node_modules/uid-number/get-uid-gid.js @@ -0,0 +1,24 @@ +if (module !== require.main) { + throw new Error("This file should not be loaded with require()") +} + +if (!process.getuid || !process.getgid) { + throw new Error("this file should not be called without uid/gid support") +} + +var argv = process.argv.slice(2) + , user = argv[0] || process.getuid() + , group = argv[1] || process.getgid() + +if (!isNaN(user)) user = +user +if (!isNaN(group)) group = +group + +console.error([user, group]) + +try { + process.setgid(group) + process.setuid(user) + console.log(JSON.stringify({uid:+process.getuid(), gid:+process.getgid()})) +} catch (ex) { + console.log(JSON.stringify({error:ex.message,errno:ex.errno})) +} diff --git a/node_modules/uid-number/package.json b/node_modules/uid-number/package.json new file mode 100644 index 0000000000..616223f68b --- /dev/null +++ b/node_modules/uid-number/package.json @@ -0,0 +1,18 @@ +{ + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "name": "uid-number", + "description": "Convert a username/group name to a uid/gid number", + "version": "0.0.6", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/uid-number.git" + }, + "main": "uid-number.js", + "dependencies": {}, + "devDependencies": {}, + "optionalDependencies": {}, + "engines": { + "node": "*" + }, + "license": "ISC" +} diff --git a/node_modules/uid-number/uid-number.js b/node_modules/uid-number/uid-number.js new file mode 100644 index 0000000000..bd62184fda --- /dev/null +++ b/node_modules/uid-number/uid-number.js @@ -0,0 +1,59 @@ +module.exports = uidNumber + +// This module calls into get-uid-gid.js, which sets the +// uid and gid to the supplied argument, in order to find out their +// numeric value. This can't be done in the main node process, +// because otherwise node would be running as that user from this +// point on. + +var child_process = require("child_process") + , path = require("path") + , uidSupport = process.getuid && process.setuid + , uidCache = {} + , gidCache = {} + +function uidNumber (uid, gid, cb) { + if (!uidSupport) return cb() + if (typeof cb !== "function") cb = gid, gid = null + if (typeof cb !== "function") cb = uid, uid = null + if (gid == null) gid = process.getgid() + if (uid == null) uid = process.getuid() + if (!isNaN(gid)) gid = gidCache[gid] = +gid + if (!isNaN(uid)) uid = uidCache[uid] = +uid + + if (uidCache.hasOwnProperty(uid)) uid = uidCache[uid] + if (gidCache.hasOwnProperty(gid)) gid = gidCache[gid] + + if (typeof gid === "number" && typeof uid === "number") { + return process.nextTick(cb.bind(null, null, uid, gid)) + } + + var getter = require.resolve("./get-uid-gid.js") + + child_process.execFile( process.execPath + , [getter, uid, gid] + , function (code, out, stderr) { + if (code) { + var er = new Error("could not get uid/gid\n" + stderr) + er.code = code + return cb(er) + } + + try { + out = JSON.parse(out+"") + } catch (ex) { + return cb(ex) + } + + if (out.error) { + var er = new Error(out.error) + er.errno = out.errno + return cb(er) + } + + if (isNaN(out.uid) || isNaN(out.gid)) return cb(new Error( + "Could not get uid/gid: "+JSON.stringify(out))) + + cb(null, uidCache[uid] = +out.uid, gidCache[gid] = +out.gid) + }) +} diff --git a/node_modules/underscore/LICENSE b/node_modules/underscore/LICENSE new file mode 100644 index 0000000000..0d6b8739d9 --- /dev/null +++ b/node_modules/underscore/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +Reporters & Editors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/underscore/README.md b/node_modules/underscore/README.md new file mode 100644 index 0000000000..c2ba2590c6 --- /dev/null +++ b/node_modules/underscore/README.md @@ -0,0 +1,22 @@ + __ + /\ \ __ + __ __ ___ \_\ \ __ _ __ ____ ___ ___ _ __ __ /\_\ ____ + /\ \/\ \ /' _ `\ /'_ \ /'__`\/\ __\/ ,__\ / ___\ / __`\/\ __\/'__`\ \/\ \ /',__\ + \ \ \_\ \/\ \/\ \/\ \ \ \/\ __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\ __/ __ \ \ \/\__, `\ + \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/ + \/___/ \/_/\/_/\/__,_ /\/____/ \/_/ \/___/ \/____/\/___/ \/_/ \/____/\/_//\ \_\ \/___/ + \ \____/ + \/___/ + +Underscore.js is a utility-belt library for JavaScript that provides +support for the usual functional suspects (each, map, reduce, filter...) +without extending any core JavaScript objects. + +For Docs, License, Tests, and pre-packed downloads, see: +http://underscorejs.org + +Underscore is an open-sourced component of DocumentCloud: +https://github.com/documentcloud + +Many thanks to our contributors: +https://github.com/jashkenas/underscore/contributors diff --git a/node_modules/underscore/package.json b/node_modules/underscore/package.json new file mode 100644 index 0000000000..86423edec0 --- /dev/null +++ b/node_modules/underscore/package.json @@ -0,0 +1,27 @@ +{ + "name" : "underscore", + "description" : "JavaScript's functional programming helper library.", + "homepage" : "http://underscorejs.org", + "keywords" : ["util", "functional", "server", "client", "browser"], + "author" : "Jeremy Ashkenas ", + "repository" : {"type": "git", "url": "git://github.com/jashkenas/underscore.git"}, + "main" : "underscore.js", + "version" : "1.6.0", + "devDependencies": { + "docco": "0.6.x", + "phantomjs": "1.9.0-1", + "uglify-js": "2.4.x" + }, + "scripts": { + "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true", + "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/ .*/\" -m --source-map underscore-min.map -o underscore-min.js", + "doc": "docco underscore.js" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://raw.github.com/jashkenas/underscore/master/LICENSE" + } + ], + "files" : ["underscore.js", "underscore-min.js", "LICENSE"] +} diff --git a/node_modules/underscore/underscore-min.js b/node_modules/underscore/underscore-min.js new file mode 100644 index 0000000000..3434d6c590 --- /dev/null +++ b/node_modules/underscore/underscore-min.js @@ -0,0 +1,6 @@ +// Underscore.js 1.6.0 +// http://underscorejs.org +// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. +(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,w=Object.keys,_=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.6.0";var A=j.each=j.forEach=function(n,t,e){if(null==n)return n;if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this); +//# sourceMappingURL=underscore-min.map \ No newline at end of file diff --git a/node_modules/underscore/underscore.js b/node_modules/underscore/underscore.js new file mode 100644 index 0000000000..9a4cabecf7 --- /dev/null +++ b/node_modules/underscore/underscore.js @@ -0,0 +1,1343 @@ +// Underscore.js 1.6.0 +// http://underscorejs.org +// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Establish the object that gets returned to break out of a loop iteration. + var breaker = {}; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + concat = ArrayProto.concat, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeForEach = ArrayProto.forEach, + nativeMap = ArrayProto.map, + nativeReduce = ArrayProto.reduce, + nativeReduceRight = ArrayProto.reduceRight, + nativeFilter = ArrayProto.filter, + nativeEvery = ArrayProto.every, + nativeSome = ArrayProto.some, + nativeIndexOf = ArrayProto.indexOf, + nativeLastIndexOf = ArrayProto.lastIndexOf, + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object via a string identifier, + // for Closure Compiler "advanced" mode. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.6.0'; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles objects with the built-in `forEach`, arrays, and raw objects. + // Delegates to **ECMAScript 5**'s native `forEach` if available. + var each = _.each = _.forEach = function(obj, iterator, context) { + if (obj == null) return obj; + if (nativeForEach && obj.forEach === nativeForEach) { + obj.forEach(iterator, context); + } else if (obj.length === +obj.length) { + for (var i = 0, length = obj.length; i < length; i++) { + if (iterator.call(context, obj[i], i, obj) === breaker) return; + } + } else { + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return; + } + } + return obj; + }; + + // Return the results of applying the iterator to each element. + // Delegates to **ECMAScript 5**'s native `map` if available. + _.map = _.collect = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); + each(obj, function(value, index, list) { + results.push(iterator.call(context, value, index, list)); + }); + return results; + }; + + var reduceError = 'Reduce of empty array with no initial value'; + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. + _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduce && obj.reduce === nativeReduce) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); + } + each(obj, function(value, index, list) { + if (!initial) { + memo = value; + initial = true; + } else { + memo = iterator.call(context, memo, value, index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // The right-associative version of reduce, also known as `foldr`. + // Delegates to **ECMAScript 5**'s native `reduceRight` if available. + _.reduceRight = _.foldr = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); + } + var length = obj.length; + if (length !== +length) { + var keys = _.keys(obj); + length = keys.length; + } + each(obj, function(value, index, list) { + index = keys ? keys[--length] : --length; + if (!initial) { + memo = obj[index]; + initial = true; + } else { + memo = iterator.call(context, memo, obj[index], index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var result; + any(obj, function(value, index, list) { + if (predicate.call(context, value, index, list)) { + result = value; + return true; + } + }); + return result; + }; + + // Return all the elements that pass a truth test. + // Delegates to **ECMAScript 5**'s native `filter` if available. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + if (obj == null) return results; + if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context); + each(obj, function(value, index, list) { + if (predicate.call(context, value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, function(value, index, list) { + return !predicate.call(context, value, index, list); + }, context); + }; + + // Determine whether all of the elements match a truth test. + // Delegates to **ECMAScript 5**'s native `every` if available. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate || (predicate = _.identity); + var result = true; + if (obj == null) return result; + if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context); + each(obj, function(value, index, list) { + if (!(result = result && predicate.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if at least one element in the object matches a truth test. + // Delegates to **ECMAScript 5**'s native `some` if available. + // Aliased as `any`. + var any = _.some = _.any = function(obj, predicate, context) { + predicate || (predicate = _.identity); + var result = false; + if (obj == null) return result; + if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context); + each(obj, function(value, index, list) { + if (result || (result = predicate.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if the array or object contains a given value (using `===`). + // Aliased as `include`. + _.contains = _.include = function(obj, target) { + if (obj == null) return false; + if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; + return any(obj, function(value) { + return value === target; + }); + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + return (isFunc ? method : value[method]).apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matches(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matches(attrs)); + }; + + // Return the maximum element or (element-based computation). + // Can't optimize arrays of integers longer than 65,535 elements. + // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797) + _.max = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.max.apply(Math, obj); + } + var result = -Infinity, lastComputed = -Infinity; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + if (computed > lastComputed) { + result = value; + lastComputed = computed; + } + }); + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.min.apply(Math, obj); + } + var result = Infinity, lastComputed = Infinity; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + if (computed < lastComputed) { + result = value; + lastComputed = computed; + } + }); + return result; + }; + + // Shuffle an array, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var rand; + var index = 0; + var shuffled = []; + each(obj, function(value) { + rand = _.random(index++); + shuffled[index - 1] = shuffled[rand]; + shuffled[rand] = value; + }); + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (obj.length !== +obj.length) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // An internal function to generate lookup iterators. + var lookupIterator = function(value) { + if (value == null) return _.identity; + if (_.isFunction(value)) return value; + return _.property(value); + }; + + // Sort the object's values by a criterion produced by an iterator. + _.sortBy = function(obj, iterator, context) { + iterator = lookupIterator(iterator); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iterator.call(context, value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iterator, context) { + var result = {}; + iterator = lookupIterator(iterator); + each(obj, function(value, index) { + var key = iterator.call(context, value, index, obj); + behavior(result, key, value); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, key, value) { + _.has(result, key) ? result[key].push(value) : result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, key, value) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, key) { + _.has(result, key) ? result[key]++ : result[key] = 1; + }); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iterator, context) { + iterator = lookupIterator(iterator); + var value = iterator.call(context, obj); + var low = 0, high = array.length; + while (low < high) { + var mid = (low + high) >>> 1; + iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; + } + return low; + }; + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (obj.length === +obj.length) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if ((n == null) || guard) return array[0]; + if (n < 0) return []; + return slice.call(array, 0, n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. The **guard** check allows it to work with + // `_.map`. + _.initial = function(array, n, guard) { + return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. The **guard** check allows it to work with `_.map`. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if ((n == null) || guard) return array[array.length - 1]; + return slice.call(array, Math.max(array.length - n, 0)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. The **guard** + // check allows it to work with `_.map`. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, (n == null) || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, output) { + if (shallow && _.every(input, _.isArray)) { + return concat.apply(output, input); + } + each(input, function(value) { + if (_.isArray(value) || _.isArguments(value)) { + shallow ? push.apply(output, value) : flatten(value, shallow, output); + } else { + output.push(value); + } + }); + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, []); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Split an array into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(array, predicate) { + var pass = [], fail = []; + each(array, function(elem) { + (predicate(elem) ? pass : fail).push(elem); + }); + return [pass, fail]; + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iterator, context) { + if (_.isFunction(isSorted)) { + context = iterator; + iterator = isSorted; + isSorted = false; + } + var initial = iterator ? _.map(array, iterator, context) : array; + var results = []; + var seen = []; + each(initial, function(value, index) { + if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { + seen.push(value); + results.push(array[index]); + } + }); + return results; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(_.flatten(arguments, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var rest = slice.call(arguments, 1); + return _.filter(_.uniq(array), function(item) { + return _.every(rest, function(other) { + return _.contains(other, item); + }); + }); + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); + return _.filter(array, function(value){ return !_.contains(rest, value); }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + var length = _.max(_.pluck(arguments, 'length').concat(0)); + var results = new Array(length); + for (var i = 0; i < length; i++) { + results[i] = _.pluck(arguments, '' + i); + } + return results; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + if (list == null) return {}; + var result = {}; + for (var i = 0, length = list.length; i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), + // we need this function. Return the position of the first occurrence of an + // item in an array, or -1 if the item is not included in the array. + // Delegates to **ECMAScript 5**'s native `indexOf` if available. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = function(array, item, isSorted) { + if (array == null) return -1; + var i = 0, length = array.length; + if (isSorted) { + if (typeof isSorted == 'number') { + i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted); + } else { + i = _.sortedIndex(array, item); + return array[i] === item ? i : -1; + } + } + if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); + for (; i < length; i++) if (array[i] === item) return i; + return -1; + }; + + // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. + _.lastIndexOf = function(array, item, from) { + if (array == null) return -1; + var hasIndex = from != null; + if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { + return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); + } + var i = (hasIndex ? from : array.length); + while (i--) if (array[i] === item) return i; + return -1; + }; + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (arguments.length <= 1) { + stop = start || 0; + start = 0; + } + step = arguments[2] || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var idx = 0; + var range = new Array(length); + + while(idx < length) { + range[idx++] = start; + start += step; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Reusable constructor function for prototype setting. + var ctor = function(){}; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + var args, bound; + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError; + args = slice.call(arguments, 2); + return bound = function() { + if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); + ctor.prototype = func.prototype; + var self = new ctor; + ctor.prototype = null; + var result = func.apply(self, args.concat(slice.call(arguments))); + if (Object(result) === result) return result; + return self; + }; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + return function() { + var position = 0; + var args = boundArgs.slice(); + for (var i = 0, length = args.length; i < length; i++) { + if (args[i] === _) args[i] = arguments[position++]; + } + while (position < arguments.length) args.push(arguments[position++]); + return func.apply(this, args); + }; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var funcs = slice.call(arguments, 1); + if (funcs.length === 0) throw new Error('bindAll must be passed function names'); + each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memo = {}; + hasher || (hasher = _.identity); + return function() { + var key = hasher.apply(this, arguments); + return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); + }; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ return func.apply(null, args); }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = function(func) { + return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); + }; + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + options || (options = {}); + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + if (last < wait) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) { + timeout = setTimeout(later, wait); + } + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = function(func) { + var ran = false, memo; + return function() { + if (ran) return memo; + ran = true; + memo = func.apply(this, arguments); + func = null; + return memo; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var funcs = arguments; + return function() { + var args = arguments; + for (var i = funcs.length - 1; i >= 0; i--) { + args = [funcs[i].apply(this, args)]; + } + return args[0]; + }; + }; + + // Returns a function that will only be executed after being called N times. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Object Functions + // ---------------- + + // Retrieve the names of an object's properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = new Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = new Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + each(keys, function(key) { + if (key in obj) copy[key] = obj[key]; + }); + return copy; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + for (var key in obj) { + if (!_.contains(keys, key)) copy[key] = obj[key]; + } + return copy; + }; + + // Fill in a given object with default properties. + _.defaults = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + if (obj[prop] === void 0) obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a == 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className != toString.call(b)) return false; + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') return false; + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) return bStack[length] == b; + } + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && + _.isFunction(bCtor) && (bCtor instanceof bCtor)) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0, result = true; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack))) break; + } + } + } else { + // Deep compare objects. + for (var key in a) { + if (_.has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (_.has(b, key) && !(size--)) break; + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return result; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b, [], []); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; + for (var key in obj) if (_.has(obj, key)) return false; + return true; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) == '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + return obj === Object(obj); + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. + each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) == '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return !!(obj && _.has(obj, 'callee')); + }; + } + + // Optimize `isFunction` if appropriate. + if (typeof (/./) !== 'function') { + _.isFunction = function(obj) { + return typeof obj === 'function'; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj != +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iterators. + _.identity = function(value) { + return value; + }; + + _.constant = function(value) { + return function () { + return value; + }; + }; + + _.property = function(key) { + return function(obj) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of `key:value` pairs. + _.matches = function(attrs) { + return function(obj) { + if (obj === attrs) return true; //avoid comparing an object to itself. + for (var key in attrs) { + if (attrs[key] !== obj[key]) + return false; + } + return true; + } + }; + + // Run a function **n** times. + _.times = function(n, iterator, context) { + var accum = Array(Math.max(0, n)); + for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { return new Date().getTime(); }; + + // List of HTML entities for escaping. + var entityMap = { + escape: { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + } + }; + entityMap.unescape = _.invert(entityMap.escape); + + // Regexes containing the keys and values listed immediately above. + var entityRegexes = { + escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), + unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') + }; + + // Functions for escaping and unescaping strings to/from HTML interpolation. + _.each(['escape', 'unescape'], function(method) { + _[method] = function(string) { + if (string == null) return ''; + return ('' + string).replace(entityRegexes[method], function(match) { + return entityMap[method][match]; + }); + }; + }); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property) { + if (object == null) return void 0; + var value = object[property]; + return _.isFunction(value) ? value.call(object) : value; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result.call(this, func.apply(_, args)); + }; + }); + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function, which will delegate to the wrapper. + _.chain = function(obj) { + return _(obj).chain(); + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(obj) { + return this._chain ? _(obj).chain() : obj; + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; + return result.call(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result.call(this, method.apply(this._wrapped, arguments)); + }; + }); + + _.extend(_.prototype, { + + // Start chaining a wrapped Underscore object. + chain: function() { + this._chain = true; + return this; + }, + + // Extracts the result from a wrapped and chained object. + value: function() { + return this._wrapped; + } + + }); + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}).call(this); diff --git a/node_modules/universalify/LICENSE b/node_modules/universalify/LICENSE new file mode 100644 index 0000000000..514e84e648 --- /dev/null +++ b/node_modules/universalify/LICENSE @@ -0,0 +1,20 @@ +(The MIT License) + +Copyright (c) 2017, Ryan Zimmerman + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the 'Software'), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/universalify/README.md b/node_modules/universalify/README.md new file mode 100644 index 0000000000..aa1247475c --- /dev/null +++ b/node_modules/universalify/README.md @@ -0,0 +1,76 @@ +# universalify + +[![Travis branch](https://img.shields.io/travis/RyanZim/universalify/master.svg)](https://travis-ci.org/RyanZim/universalify) +![Coveralls github branch](https://img.shields.io/coveralls/github/RyanZim/universalify/master.svg) +![npm](https://img.shields.io/npm/dm/universalify.svg) +![npm](https://img.shields.io/npm/l/universalify.svg) + +Make a callback- or promise-based function support both promises and callbacks. + +Uses the native promise implementation. + +## Installation + +```bash +npm install universalify +``` + +## API + +### `universalify.fromCallback(fn)` + +Takes a callback-based function to universalify, and returns the universalified function. + +Function must take a callback as the last parameter that will be called with the signature `(error, result)`. `universalify` does not support calling the callback with three or more arguments, and does not ensure that the callback is only called once. + +```js +function callbackFn (n, cb) { + setTimeout(() => cb(null, n), 15) +} + +const fn = universalify.fromCallback(callbackFn) + +// Works with Promises: +fn('Hello World!') +.then(result => console.log(result)) // -> Hello World! +.catch(error => console.error(error)) + +// Works with Callbacks: +fn('Hi!', (error, result) => { + if (error) return console.error(error) + console.log(result) + // -> Hi! +}) +``` + +### `universalify.fromPromise(fn)` + +Takes a promise-based function to universalify, and returns the universalified function. + +Function must return a valid JS promise. `universalify` does not ensure that a valid promise is returned. + +```js +function promiseFn (n) { + return new Promise(resolve => { + setTimeout(() => resolve(n), 15) + }) +} + +const fn = universalify.fromPromise(promiseFn) + +// Works with Promises: +fn('Hello World!') +.then(result => console.log(result)) // -> Hello World! +.catch(error => console.error(error)) + +// Works with Callbacks: +fn('Hi!', (error, result) => { + if (error) return console.error(error) + console.log(result) + // -> Hi! +}) +``` + +## License + +MIT diff --git a/node_modules/universalify/index.js b/node_modules/universalify/index.js new file mode 100644 index 0000000000..e7b5712ea2 --- /dev/null +++ b/node_modules/universalify/index.js @@ -0,0 +1,23 @@ +'use strict' + +exports.fromCallback = function (fn) { + return Object.defineProperty(function (...args) { + if (typeof args[args.length - 1] === 'function') fn.apply(this, args) + else { + return new Promise((resolve, reject) => { + fn.apply( + this, + args.concat([(err, res) => err ? reject(err) : resolve(res)]) + ) + }) + } + }, 'name', { value: fn.name }) +} + +exports.fromPromise = function (fn) { + return Object.defineProperty(function (...args) { + const cb = args[args.length - 1] + if (typeof cb !== 'function') return fn.apply(this, args) + else fn.apply(this, args.slice(0, -1)).then(r => cb(null, r), cb) + }, 'name', { value: fn.name }) +} diff --git a/node_modules/universalify/package.json b/node_modules/universalify/package.json new file mode 100644 index 0000000000..4ac07daf3e --- /dev/null +++ b/node_modules/universalify/package.json @@ -0,0 +1,34 @@ +{ + "name": "universalify", + "version": "1.0.0", + "description": "Make a callback- or promise-based function support both promises and callbacks.", + "keywords": [ + "callback", + "native", + "promise" + ], + "homepage": "https://github.com/RyanZim/universalify#readme", + "bugs": "https://github.com/RyanZim/universalify/issues", + "license": "MIT", + "author": "Ryan Zimmerman ", + "files": [ + "index.js" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/RyanZim/universalify.git" + }, + "scripts": { + "test": "standard && nyc tape test/*.js | colortape" + }, + "devDependencies": { + "colortape": "^0.1.2", + "coveralls": "^3.0.1", + "nyc": "^15.0.0", + "standard": "^14.3.1", + "tape": "^4.6.3" + }, + "engines": { + "node": ">= 10.0.0" + } +} diff --git a/node_modules/util-deprecate/History.md b/node_modules/util-deprecate/History.md new file mode 100644 index 0000000000..acc8675372 --- /dev/null +++ b/node_modules/util-deprecate/History.md @@ -0,0 +1,16 @@ + +1.0.2 / 2015-10-07 +================== + + * use try/catch when checking `localStorage` (#3, @kumavis) + +1.0.1 / 2014-11-25 +================== + + * browser: use `console.warn()` for deprecation calls + * browser: more jsdocs + +1.0.0 / 2014-04-30 +================== + + * initial commit diff --git a/node_modules/util-deprecate/LICENSE b/node_modules/util-deprecate/LICENSE new file mode 100644 index 0000000000..6a60e8c225 --- /dev/null +++ b/node_modules/util-deprecate/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/util-deprecate/README.md b/node_modules/util-deprecate/README.md new file mode 100644 index 0000000000..75622fa7c2 --- /dev/null +++ b/node_modules/util-deprecate/README.md @@ -0,0 +1,53 @@ +util-deprecate +============== +### The Node.js `util.deprecate()` function with browser support + +In Node.js, this module simply re-exports the `util.deprecate()` function. + +In the web browser (i.e. via browserify), a browser-specific implementation +of the `util.deprecate()` function is used. + + +## API + +A `deprecate()` function is the only thing exposed by this module. + +``` javascript +// setup: +exports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead'); + + +// users see: +foo(); +// foo() is deprecated, use bar() instead +foo(); +foo(); +``` + + +## License + +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/util-deprecate/browser.js b/node_modules/util-deprecate/browser.js new file mode 100644 index 0000000000..549ae2f065 --- /dev/null +++ b/node_modules/util-deprecate/browser.js @@ -0,0 +1,67 @@ + +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} diff --git a/node_modules/util-deprecate/node.js b/node_modules/util-deprecate/node.js new file mode 100644 index 0000000000..5e6fcff5dd --- /dev/null +++ b/node_modules/util-deprecate/node.js @@ -0,0 +1,6 @@ + +/** + * For Node.js, simply re-export the core `util.deprecate` function. + */ + +module.exports = require('util').deprecate; diff --git a/node_modules/util-deprecate/package.json b/node_modules/util-deprecate/package.json new file mode 100644 index 0000000000..2e79f89a90 --- /dev/null +++ b/node_modules/util-deprecate/package.json @@ -0,0 +1,27 @@ +{ + "name": "util-deprecate", + "version": "1.0.2", + "description": "The Node.js `util.deprecate()` function with browser support", + "main": "node.js", + "browser": "browser.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git://github.com/TooTallNate/util-deprecate.git" + }, + "keywords": [ + "util", + "deprecate", + "browserify", + "browser", + "node" + ], + "author": "Nathan Rajlich (http://n8.io/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/TooTallNate/util-deprecate/issues" + }, + "homepage": "https://github.com/TooTallNate/util-deprecate" +} diff --git a/node_modules/uuid/.npmignore b/node_modules/uuid/.npmignore new file mode 100644 index 0000000000..fd4f2b066b --- /dev/null +++ b/node_modules/uuid/.npmignore @@ -0,0 +1,2 @@ +node_modules +.DS_Store diff --git a/node_modules/uuid/.travis.yml b/node_modules/uuid/.travis.yml new file mode 100644 index 0000000000..9400c1188e --- /dev/null +++ b/node_modules/uuid/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "0.6" + - "0.8" + - "0.10" diff --git a/node_modules/uuid/LICENSE.md b/node_modules/uuid/LICENSE.md new file mode 100644 index 0000000000..f039427fa9 --- /dev/null +++ b/node_modules/uuid/LICENSE.md @@ -0,0 +1,2 @@ +Copyright (c) 2010-2012 Robert Kieffer +MIT License - http://opensource.org/licenses/mit-license.php diff --git a/node_modules/uuid/README.md b/node_modules/uuid/README.md new file mode 100644 index 0000000000..0965cbb343 --- /dev/null +++ b/node_modules/uuid/README.md @@ -0,0 +1,205 @@ +# uuid [![Build Status](https://secure.travis-ci.org/defunctzombie/node-uuid.png?branch=master)](http://travis-ci.org/defunctzombie/node-uuid) # + +[![browser support](https://ci.testling.com/defunctzombie/node-uuid.png)](https://ci.testling.com/defunctzombie/node-uuid) + +Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. + +Features: + +* Generate RFC4122 version 1 or version 4 UUIDs +* Runs in node.js and all browsers. +* Cryptographically strong random # generation on supporting platforms +* 1185 bytes minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! ) +* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html) + +## Getting Started + +Install it in your browser: + +```html + +``` + +Or in node.js: + +``` +npm install uuid +``` + +```javascript +var uuid = require('uuid'); + +// Generate a v1 (time-based) id +uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' + +// Generate a v4 (random) id +uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' +``` + +## API + +### uuid.v1([`options` [, `buffer` [, `offset`]]]) + +Generate and return a RFC4122 v1 (timestamp-based) UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. + * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. + * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. + * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Notes: + +1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) + +Example: Generate string UUID with fully-specified options + +```javascript +uuid.v1({ + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 +}); // -> "710b962e-041c-11e1-9234-0123456789ab" +``` + +Example: In-place generation of two binary IDs + +```javascript +// Generate two ids in an array +var arr = new Array(32); // -> [] +uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] +uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] + +// Optionally use uuid.unparse() to get stringify the ids +uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' +uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' +``` + +### uuid.v4([`options` [, `buffer` [, `offset`]]]) + +Generate and return a RFC4122 v4 UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values + * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: Generate string UUID with fully-specified options + +```javascript +uuid.v4({ + random: [ + 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, + 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 + ] +}); +// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" +``` + +Example: Generate two IDs in a single buffer + +```javascript +var buffer = new Array(32); // (or 'new Buffer' in node.js) +uuid.v4(null, buffer, 0); +uuid.v4(null, buffer, 16); +``` + +### uuid.parse(id[, buffer[, offset]]) +### uuid.unparse(buffer[, offset]) + +Parse and unparse UUIDs + + * `id` - (String) UUID(-like) string + * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used + * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 + +Example parsing and unparsing a UUID string + +```javascript +var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> +var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' +``` + +### uuid.noConflict() + +(Browsers only) Set `uuid` property back to it's previous value. + +Returns the uuid object. + +Example: + +```javascript +var myUuid = uuid.noConflict(); +myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' +``` + +## Deprecated APIs + +Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. + +### uuid([format [, buffer [, offset]]]) + +uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). + +### uuid.BufferClass + +The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. + +## Testing + +In node.js + +``` +> cd test +> node test.js +``` + +In Browser + +``` +open test/test.html +``` + +### Benchmarking + +Requires node.js + +``` +cd benchmark/ +npm install +node benchmark.js +``` + +For a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark) + +For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). + +## Release notes + +### 1.4.0 + +* Improved module context detection +* Removed public RNG functions + +### 1.3.2 + +* Improve tests and handling of v1() options (Issue #24) +* Expose RNG option to allow for perf testing with different generators + +### 1.3.0 + +* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! +* Support for node.js crypto API +* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/uuid/benchmark/README.md b/node_modules/uuid/benchmark/README.md new file mode 100644 index 0000000000..aaeb2ea013 --- /dev/null +++ b/node_modules/uuid/benchmark/README.md @@ -0,0 +1,53 @@ +# node-uuid Benchmarks + +### Results + +To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark + +### Run them yourself + +node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. + +To prepare and run the benchmark issue; + +``` +npm install uuid uuid-js +node benchmark/benchmark.js +``` + +You'll see an output like this one: + +``` +# v4 +nodeuuid.v4(): 854700 uuids/second +nodeuuid.v4('binary'): 788643 uuids/second +nodeuuid.v4('binary', buffer): 1336898 uuids/second +uuid(): 479386 uuids/second +uuid('binary'): 582072 uuids/second +uuidjs.create(4): 312304 uuids/second + +# v1 +nodeuuid.v1(): 938086 uuids/second +nodeuuid.v1('binary'): 683060 uuids/second +nodeuuid.v1('binary', buffer): 1644736 uuids/second +uuidjs.create(1): 190621 uuids/second +``` + +* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. +* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. + +If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: + +``` +for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; +``` + +If you're interested in how performance varies between different node versions, you can issue the above command multiple times. + +You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: + +``` +(cd benchmark/ && ./bench.sh) +``` + +This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/uuid/benchmark/bench.gnu b/node_modules/uuid/benchmark/bench.gnu new file mode 100644 index 0000000000..a342fbbe04 --- /dev/null +++ b/node_modules/uuid/benchmark/bench.gnu @@ -0,0 +1,174 @@ +#!/opt/local/bin/gnuplot -persist +# +# +# G N U P L O T +# Version 4.4 patchlevel 3 +# last modified March 2011 +# System: Darwin 10.8.0 +# +# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 +# Thomas Williams, Colin Kelley and many others +# +# gnuplot home: http://www.gnuplot.info +# faq, bugs, etc: type "help seeking-assistance" +# immediate help: type "help" +# plot window: hit 'h' +set terminal postscript eps noenhanced defaultplex \ + leveldefault color colortext \ + solid linewidth 1.2 butt noclip \ + palfuncparam 2000,0.003 \ + "Helvetica" 14 +set output 'bench.eps' +unset clip points +set clip one +unset clip two +set bar 1.000000 front +set border 31 front linetype -1 linewidth 1.000 +set xdata +set ydata +set zdata +set x2data +set y2data +set timefmt x "%d/%m/%y,%H:%M" +set timefmt y "%d/%m/%y,%H:%M" +set timefmt z "%d/%m/%y,%H:%M" +set timefmt x2 "%d/%m/%y,%H:%M" +set timefmt y2 "%d/%m/%y,%H:%M" +set timefmt cb "%d/%m/%y,%H:%M" +set boxwidth +set style fill empty border +set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 +set style circle radius graph 0.02, first 0, 0 +set dummy x,y +set format x "% g" +set format y "% g" +set format x2 "% g" +set format y2 "% g" +set format z "% g" +set format cb "% g" +set angles radians +unset grid +set key title "" +set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox +set key noinvert samplen 4 spacing 1 width 0 height 0 +set key maxcolumns 2 maxrows 0 +unset label +unset arrow +set style increment default +unset style line +set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 +unset style arrow +set style histogram clustered gap 2 title offset character 0, 0, 0 +unset logscale +set offsets graph 0.05, 0.15, 0, 0 +set pointsize 1.5 +set pointintervalbox 1 +set encoding default +unset polar +unset parametric +unset decimalsign +set view 60, 30, 1, 1 +set samples 100, 100 +set isosamples 10, 10 +set surface +unset contour +set clabel '%8.3g' +set mapping cartesian +set datafile separator whitespace +unset hidden3d +set cntrparam order 4 +set cntrparam linear +set cntrparam levels auto 5 +set cntrparam points 5 +set size ratio 0 1,1 +set origin 0,0 +set style data points +set style function lines +set xzeroaxis linetype -2 linewidth 1.000 +set yzeroaxis linetype -2 linewidth 1.000 +set zzeroaxis linetype -2 linewidth 1.000 +set x2zeroaxis linetype -2 linewidth 1.000 +set y2zeroaxis linetype -2 linewidth 1.000 +set ticslevel 0.5 +set mxtics default +set mytics default +set mztics default +set mx2tics default +set my2tics default +set mcbtics default +set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set xtics norangelimit +set xtics () +set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set ytics autofreq norangelimit +set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 +set ztics autofreq norangelimit +set nox2tics +set noy2tics +set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set cbtics autofreq norangelimit +set title "" +set title offset character 0, 0, 0 font "" norotate +set timestamp bottom +set timestamp "" +set timestamp offset character 0, 0, 0 font "" norotate +set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) +set autoscale rfixmin +set autoscale rfixmax +set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) +set autoscale tfixmin +set autoscale tfixmax +set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set autoscale ufixmin +set autoscale ufixmax +set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set autoscale vfixmin +set autoscale vfixmax +set xlabel "" +set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate +set x2label "" +set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate +set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) +set autoscale xfixmin +set autoscale xfixmax +set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) +set autoscale x2fixmin +set autoscale x2fixmax +set ylabel "" +set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 +set y2label "" +set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 +set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) +set autoscale yfixmin +set autoscale yfixmax +set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) +set autoscale y2fixmin +set autoscale y2fixmax +set zlabel "" +set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate +set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set autoscale zfixmin +set autoscale zfixmax +set cblabel "" +set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 +set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) +set autoscale cbfixmin +set autoscale cbfixmax +set zero 1e-08 +set lmargin -1 +set bmargin -1 +set rmargin -1 +set tmargin -1 +set pm3d explicit at s +set pm3d scansautomatic +set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean +set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB +set palette rgbformulae 7, 5, 15 +set colorbox default +set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault +set loadpath +set fontpath +set fit noerrorvariables +GNUTERM = "aqua" +plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 +# EOF diff --git a/node_modules/uuid/benchmark/bench.sh b/node_modules/uuid/benchmark/bench.sh new file mode 100644 index 0000000000..d870a0cb09 --- /dev/null +++ b/node_modules/uuid/benchmark/bench.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# for a given node version run: +# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; + +PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') +FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) +INDICES=(2 3 2 3 2 2 2 2 2) +VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) +TMPJOIN="tmp_join" +OUTPUT="bench_results.txt" + +for I in ${!FILES[*]}; do + F=${FILES[$I]} + P=${PATTERNS[$I]} + INDEX=${INDICES[$I]} + echo "version $F" > $F + for V in $VERSIONS; do + (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F + done + if [ $I == 0 ]; then + cat $F > $TMPJOIN + else + join $TMPJOIN $F > $OUTPUT + cp $OUTPUT $TMPJOIN + fi + rm $F +done + +rm $TMPJOIN + +gnuplot bench.gnu +convert -density 200 -resize 800x560 -flatten bench.eps bench.png +rm bench.eps diff --git a/node_modules/uuid/benchmark/benchmark-native.c b/node_modules/uuid/benchmark/benchmark-native.c new file mode 100644 index 0000000000..dbfc75f6d7 --- /dev/null +++ b/node_modules/uuid/benchmark/benchmark-native.c @@ -0,0 +1,34 @@ +/* +Test performance of native C UUID generation + +To Compile: cc -luuid benchmark-native.c -o benchmark-native +*/ + +#include +#include +#include +#include + +int main() { + uuid_t myid; + char buf[36+1]; + int i; + struct timeval t; + double start, finish; + + gettimeofday(&t, NULL); + start = t.tv_sec + t.tv_usec/1e6; + + int n = 2e5; + for (i = 0; i < n; i++) { + uuid_generate(myid); + uuid_unparse(myid, buf); + } + + gettimeofday(&t, NULL); + finish = t.tv_sec + t.tv_usec/1e6; + double dur = finish - start; + + printf("%d uuids/sec", (int)(n/dur)); + return 0; +} diff --git a/node_modules/uuid/benchmark/benchmark.js b/node_modules/uuid/benchmark/benchmark.js new file mode 100644 index 0000000000..40e6efbe76 --- /dev/null +++ b/node_modules/uuid/benchmark/benchmark.js @@ -0,0 +1,84 @@ +try { + var nodeuuid = require('../uuid'); +} catch (e) { + console.error('node-uuid require failed - skipping tests'); +} + +try { + var uuid = require('uuid'); +} catch (e) { + console.error('uuid require failed - skipping tests'); +} + +try { + var uuidjs = require('uuid-js'); +} catch (e) { + console.error('uuid-js require failed - skipping tests'); +} + +var N = 5e5; + +function rate(msg, t) { + console.log(msg + ': ' + + (N / (Date.now() - t) * 1e3 | 0) + + ' uuids/second'); +} + +console.log('# v4'); + +// node-uuid - string form +if (nodeuuid) { + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); + rate('nodeuuid.v4() - using node.js crypto RNG', t); + + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); + rate('nodeuuid.v4() - using Math.random() RNG', t); + + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); + rate('nodeuuid.v4(\'binary\')', t); + + var buffer = new nodeuuid.BufferClass(16); + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); + rate('nodeuuid.v4(\'binary\', buffer)', t); +} + +// libuuid - string form +if (uuid) { + for (var i = 0, t = Date.now(); i < N; i++) uuid(); + rate('uuid()', t); + + for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); + rate('uuid(\'binary\')', t); +} + +// uuid-js - string form +if (uuidjs) { + for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); + rate('uuidjs.create(4)', t); +} + +// 140byte.es +for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); +rate('140byte.es_v4', t); + +console.log(''); +console.log('# v1'); + +// node-uuid - v1 string form +if (nodeuuid) { + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); + rate('nodeuuid.v1()', t); + + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); + rate('nodeuuid.v1(\'binary\')', t); + + var buffer = new nodeuuid.BufferClass(16); + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); + rate('nodeuuid.v1(\'binary\', buffer)', t); +} + +// uuid-js - v1 string form +if (uuidjs) { + for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); + rate('uuidjs.create(1)', t); +} diff --git a/node_modules/uuid/benchmark/package.json b/node_modules/uuid/benchmark/package.json new file mode 100644 index 0000000000..aa1a42100a --- /dev/null +++ b/node_modules/uuid/benchmark/package.json @@ -0,0 +1,9 @@ +{ + "name": "benchmark-uuid", + "private": true, + "description": "Benchmarks for node-uuid", + "dependencies": { + "uuid": "^1.4.1", + "uuid-js": "^0.7.4" + } +} diff --git a/node_modules/uuid/buffer-browser.js b/node_modules/uuid/buffer-browser.js new file mode 100644 index 0000000000..f5a93583f7 --- /dev/null +++ b/node_modules/uuid/buffer-browser.js @@ -0,0 +1 @@ +module.exports = Array; diff --git a/node_modules/uuid/buffer.js b/node_modules/uuid/buffer.js new file mode 100644 index 0000000000..66c989cbcc --- /dev/null +++ b/node_modules/uuid/buffer.js @@ -0,0 +1 @@ +module.exports = Buffer; diff --git a/node_modules/uuid/misc/compare.js b/node_modules/uuid/misc/compare.js new file mode 100644 index 0000000000..3de34151df --- /dev/null +++ b/node_modules/uuid/misc/compare.js @@ -0,0 +1,62 @@ +var assert = require('assert'), + nodeuuid = require('../'), + uuidjs = require('uuid-js'), + util = require('util'), + exec = require('child_process').exec, + os = require('os'); + +// On Mac Os X / macports there's only the ossp-uuid package that provides uuid +// On Linux there's uuid-runtime which provides uuidgen +var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; + +function compare(ids) { + console.log(ids); + for (var i = 0; i < ids.length; i++) { + var id = ids[i].split('-'); + id = [id[2], id[1], id[0]].join(''); + ids[i] = id; + } + var sorted = ([].concat(ids)).sort(); + + if (sorted.toString() !== ids.toString()) { + console.log('Warning: sorted !== ids'); + } else { + console.log('everything in order!'); + } +} + +// Test time order of v1 uuids +var ids = []; +while (ids.length < 10e3) ids.push(nodeuuid.v1()); + +var max = 10; +console.log('node-uuid:'); +ids = []; +for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); +compare(ids); + +console.log(''); +console.log('uuidjs:'); +ids = []; +for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); +compare(ids); + +console.log(''); +console.log('libuuid:'); +ids = []; +var count = 0; +var last = function() { + compare(ids); +} +var cb = function(err, stdout, stderr) { + ids.push(stdout.substring(0, stdout.length-1)); + count++; + if (count < max) { + return next(); + } + last(); +}; +var next = function() { + exec(uuidCmd, cb); +}; +next(); diff --git a/node_modules/uuid/misc/perf.js b/node_modules/uuid/misc/perf.js new file mode 100644 index 0000000000..bdc9eb4615 --- /dev/null +++ b/node_modules/uuid/misc/perf.js @@ -0,0 +1,102 @@ +var assert = require('assert'); + +var uuid = require('../'); + +var log = console.log; + +var generators = { + v1: uuid.v1, + v4: uuid.v4 +}; + +var UUID_FORMAT = { + v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, + v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i +}; + +var N = 1e4; + +// Get %'age an actual value differs from the ideal value +function divergence(actual, ideal) { + return Math.round(100*100*(actual - ideal)/ideal)/100; +} + +function rate(msg, t) { + log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); +} + +for (var version in generators) { + var counts = {}, max = 0; + var generator = generators[version]; + var format = UUID_FORMAT[version]; + + log('\nSanity check ' + N + ' ' + version + ' uuids'); + for (var i = 0, ok = 0; i < N; i++) { + id = generator(); + if (!format.test(id)) { + throw Error(id + ' is not a valid UUID string'); + } + + if (id != uuid.unparse(uuid.parse(id))) { + assert(fail, id + ' is not a valid id'); + } + + // Count digits for our randomness check + if (version == 'v4') { + var digits = id.replace(/-/g, '').split(''); + for (var j = digits.length-1; j >= 0; j--) { + var c = digits[j]; + max = Math.max(max, counts[c] = (counts[c] || 0) + 1); + } + } + } + + // Check randomness for v4 UUIDs + if (version == 'v4') { + // Limit that we get worried about randomness. (Purely empirical choice, this!) + var limit = 2*100*Math.sqrt(1/N); + + log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); + + for (var i = 0; i < 16; i++) { + var c = i.toString(16); + var bar = '', n = counts[c], p = Math.round(n/max*100|0); + + // 1-3,5-8, and D-F: 1:16 odds over 30 digits + var ideal = N*30/16; + if (i == 4) { + // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits + ideal = N*(1 + 30/16); + } else if (i >= 8 && i <= 11) { + // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits + ideal = N*(1/4 + 30/16); + } else { + // Otherwise: 1:16 odds on 30 digits + ideal = N*30/16; + } + var d = divergence(n, ideal); + + // Draw bar using UTF squares (just for grins) + var s = n/max*50 | 0; + while (s--) bar += '='; + + assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); + } + } +} + +// Perf tests +for (var version in generators) { + log('\nPerformance testing ' + version + ' UUIDs'); + var generator = generators[version]; + var buf = new uuid.BufferClass(16); + + for (var i = 0, t = Date.now(); i < N; i++) generator(); + rate('uuid.' + version + '()', t); + + for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); + rate('uuid.' + version + '(\'binary\')', t); + + for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); + rate('uuid.' + version + '(\'binary\', buffer)', t); +} diff --git a/node_modules/uuid/package.json b/node_modules/uuid/package.json new file mode 100644 index 0000000000..1213685e5a --- /dev/null +++ b/node_modules/uuid/package.json @@ -0,0 +1,46 @@ +{ + "name": "uuid", + "version": "1.4.2", + "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", + "keywords": [ + "uuid", + "guid", + "rfc4122" + ], + "author": "Robert Kieffer ", + "contributors": [ + { + "name": "Christoph Tavan ", + "github": "https://github.com/ctavan" + }, + { + "name": "Vincent Voyer ", + "github": "https://github.com/vvo" + } + ], + "main": "./uuid.js", + "devDependencies": { + "mocha": "1.8.0" + }, + "scripts": { + "test": "mocha test/test.js" + }, + "browser": { + "./rng.js": "./rng-browser.js", + "./buffer.js": "./buffer-browser.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/shtylman/node-uuid.git" + }, + "testling": { + "browsers": [ + "ie6..latest", + "firefox/3.6..latest", + "chrome/22..latest", + "safari/5.1..latest" + ], + "harness": "mocha-tdd", + "files": "test/*.js" + } +} diff --git a/node_modules/uuid/rng-browser.js b/node_modules/uuid/rng-browser.js new file mode 100644 index 0000000000..57b58d4b6d --- /dev/null +++ b/node_modules/uuid/rng-browser.js @@ -0,0 +1,31 @@ + +var rng; + +if (global.crypto && crypto.getRandomValues) { + // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto + // Moderately fast, high quality + var _rnds8 = new Uint8Array(16); + rng = function whatwgRNG() { + crypto.getRandomValues(_rnds8); + return _rnds8; + }; +} + +if (!rng) { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var _rnds = new Array(16); + rng = function() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return _rnds; + }; +} + +module.exports = rng; + diff --git a/node_modules/uuid/rng.js b/node_modules/uuid/rng.js new file mode 100644 index 0000000000..3977f798fb --- /dev/null +++ b/node_modules/uuid/rng.js @@ -0,0 +1,4 @@ +var rb = require('crypto').randomBytes; +module.exports = function() { + return rb(16); +}; diff --git a/node_modules/uuid/test/mocha.opts b/node_modules/uuid/test/mocha.opts new file mode 100644 index 0000000000..e2bfcc5ac3 --- /dev/null +++ b/node_modules/uuid/test/mocha.opts @@ -0,0 +1 @@ +--ui qunit diff --git a/node_modules/uuid/test/test.js b/node_modules/uuid/test/test.js new file mode 100644 index 0000000000..4c9872ffeb --- /dev/null +++ b/node_modules/uuid/test/test.js @@ -0,0 +1,105 @@ +var assert = require('assert'); + +var uuid = require('../'); + +// Verify ordering of v1 ids created with explicit times +var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 + +function compare(name, ids) { + test(name, function() { + // avoid .map for older browsers + for (var i=0 ; i 10k ids created in 1ms', function() { + // Verify throw if too many ids created + var thrown = false; + try { + uuid.v1({msecs: TIME, nsecs: 10000}); + } catch (e) { + thrown = true; + } + assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); +}); + +test('clock regression by msec', function() { + // Verify clock regression bumps clockseq + var uidt = uuid.v1({msecs: TIME}); + var uidtb = uuid.v1({msecs: TIME - 1}); + assert( + parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, + 'Clock regression by msec increments the clockseq' + ); +}); + +test('clock regression by nsec', function() { + // Verify clock regression bumps clockseq + var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); + var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); + assert( + parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, + 'Clock regression by nsec increments the clockseq' + ); +}); + +test('explicit options product expected id', function() { + // Verify explicit options produce expected id + var id = uuid.v1({ + msecs: 1321651533573, + nsecs: 5432, + clockseq: 0x385c, + node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] + }); + assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); +}); + +test('ids spanning 1ms boundary are 100ns apart', function() { + // Verify adjacent ids across a msec boundary are 1 time unit apart + var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); + var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); + + var before = u0.split('-')[0], after = u1.split('-')[0]; + var dt = parseInt(after, 16) - parseInt(before, 16); + assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); +}); + +test('parse/unparse', function() { + var id = '00112233445566778899aabbccddeeff'; + assert(uuid.unparse(uuid.parse(id.substr(0,10))) == + '00112233-4400-0000-0000-000000000000', 'Short parse'); + assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == + '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); +}); + diff --git a/node_modules/uuid/uuid.js b/node_modules/uuid/uuid.js new file mode 100644 index 0000000000..f037bd4bf4 --- /dev/null +++ b/node_modules/uuid/uuid.js @@ -0,0 +1,189 @@ +// uuid.js +// +// Copyright (c) 2010-2012 Robert Kieffer +// MIT License - http://opensource.org/licenses/mit-license.php + +// Unique ID creation requires a high quality random # generator. We feature +// detect to determine the best RNG source, normalizing to a function that +// returns 128-bits of randomness, since that's what's usually required +var _rng = require('./rng'); + +// Buffer class to use, +// we can't use `Buffer || Array` otherwise Buffer would be +// shimmed by browserify and added to the browser build +var BufferClass = require('./buffer'); + +// Maps for number <-> hex string conversion +var _byteToHex = []; +var _hexToByte = {}; +for (var i = 0; i < 256; i++) { + _byteToHex[i] = (i + 0x100).toString(16).substr(1); + _hexToByte[_byteToHex[i]] = i; +} + +// **`parse()` - Parse a UUID into it's component bytes** +function parse(s, buf, offset) { + var i = (buf && offset) || 0, ii = 0; + + buf = buf || []; + s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { + if (ii < 16) { // Don't overflow! + buf[i + ii++] = _hexToByte[oct]; + } + }); + + // Zero out remaining bytes if string was short + while (ii < 16) { + buf[i + ii++] = 0; + } + + return buf; +} + +// **`unparse()` - Convert UUID byte array (ala parse()) into a string** +function unparse(buf, offset) { + var i = offset || 0, bth = _byteToHex; + return bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]]; +} + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +// random #'s we need to init node and clockseq +var _seedBytes = _rng(); + +// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) +var _nodeId = [ + _seedBytes[0] | 0x01, + _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] +]; + +// Per 4.2.2, randomize (14 bit) clockseq +var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; + +// Previous uuid creation time +var _lastMSecs = 0, _lastNSecs = 0; + +// See https://github.com/broofa/node-uuid for API details +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + var node = options.node || _nodeId; + for (var n = 0; n < 6; n++) { + b[i + n] = node[n]; + } + + return buf ? buf : unparse(b); +} + +// **`v4()` - Generate random UUID** + +// See https://github.com/broofa/node-uuid for API details +function v4(options, buf, offset) { + // Deprecated - 'format' argument, as supported in v1.2 + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options == 'binary' ? new BufferClass(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || _rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ii++) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || unparse(rnds); +} + +// Export public API +var uuid = v4; +uuid.v1 = v1; +uuid.v4 = v4; +uuid.parse = parse; +uuid.unparse = unparse; +uuid.BufferClass = BufferClass; + +module.exports = uuid; diff --git a/node_modules/validate-npm-package-name/.npmignore b/node_modules/validate-npm-package-name/.npmignore new file mode 100644 index 0000000000..3c3629e647 --- /dev/null +++ b/node_modules/validate-npm-package-name/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/node_modules/validate-npm-package-name/.nyc_output/aa4ee25ac41a9c3c7ee37ce965e6d1ac.json b/node_modules/validate-npm-package-name/.nyc_output/aa4ee25ac41a9c3c7ee37ce965e6d1ac.json new file mode 100644 index 0000000000..8540780a8e --- /dev/null +++ b/node_modules/validate-npm-package-name/.nyc_output/aa4ee25ac41a9c3c7ee37ce965e6d1ac.json @@ -0,0 +1 @@ +{"/Users/chris/projects/npm/validate-npm-package-name/index.js":{"path":"/Users/chris/projects/npm/validate-npm-package-name/index.js","statementMap":{"0":{"start":{"line":3,"column":27},"end":{"line":3,"column":68}},"1":{"start":{"line":4,"column":15},"end":{"line":4,"column":34}},"2":{"start":{"line":5,"column":16},"end":{"line":8,"column":1}},"3":{"start":{"line":10,"column":15},"end":{"line":91,"column":1}},"4":{"start":{"line":11,"column":17},"end":{"line":11,"column":19}},"5":{"start":{"line":12,"column":15},"end":{"line":12,"column":17}},"6":{"start":{"line":14,"column":2},"end":{"line":17,"column":3}},"7":{"start":{"line":15,"column":4},"end":{"line":15,"column":38}},"8":{"start":{"line":16,"column":4},"end":{"line":16,"column":33}},"9":{"start":{"line":19,"column":2},"end":{"line":22,"column":3}},"10":{"start":{"line":20,"column":4},"end":{"line":20,"column":43}},"11":{"start":{"line":21,"column":4},"end":{"line":21,"column":33}},"12":{"start":{"line":24,"column":2},"end":{"line":27,"column":3}},"13":{"start":{"line":25,"column":4},"end":{"line":25,"column":40}},"14":{"start":{"line":26,"column":4},"end":{"line":26,"column":33}},"15":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"16":{"start":{"line":30,"column":4},"end":{"line":30,"column":56}},"17":{"start":{"line":33,"column":2},"end":{"line":35,"column":3}},"18":{"start":{"line":34,"column":4},"end":{"line":34,"column":50}},"19":{"start":{"line":37,"column":2},"end":{"line":39,"column":3}},"20":{"start":{"line":38,"column":4},"end":{"line":38,"column":55}},"21":{"start":{"line":41,"column":2},"end":{"line":43,"column":3}},"22":{"start":{"line":42,"column":4},"end":{"line":42,"column":65}},"23":{"start":{"line":46,"column":2},"end":{"line":50,"column":4}},"24":{"start":{"line":47,"column":4},"end":{"line":49,"column":5}},"25":{"start":{"line":48,"column":6},"end":{"line":48,"column":61}},"26":{"start":{"line":55,"column":2},"end":{"line":59,"column":4}},"27":{"start":{"line":56,"column":4},"end":{"line":58,"column":5}},"28":{"start":{"line":57,"column":6},"end":{"line":57,"column":55}},"29":{"start":{"line":63,"column":2},"end":{"line":65,"column":3}},"30":{"start":{"line":64,"column":4},"end":{"line":64,"column":72}},"31":{"start":{"line":68,"column":2},"end":{"line":70,"column":3}},"32":{"start":{"line":69,"column":4},"end":{"line":69,"column":63}},"33":{"start":{"line":72,"column":2},"end":{"line":74,"column":3}},"34":{"start":{"line":73,"column":4},"end":{"line":73,"column":78}},"35":{"start":{"line":76,"column":2},"end":{"line":88,"column":3}},"36":{"start":{"line":78,"column":20},"end":{"line":78,"column":52}},"37":{"start":{"line":79,"column":4},"end":{"line":85,"column":5}},"38":{"start":{"line":80,"column":17},"end":{"line":80,"column":29}},"39":{"start":{"line":81,"column":16},"end":{"line":81,"column":28}},"40":{"start":{"line":82,"column":6},"end":{"line":84,"column":7}},"41":{"start":{"line":83,"column":8},"end":{"line":83,"column":37}},"42":{"start":{"line":87,"column":4},"end":{"line":87,"column":64}},"43":{"start":{"line":90,"column":2},"end":{"line":90,"column":31}},"44":{"start":{"line":93,"column":0},"end":{"line":93,"column":52}},"45":{"start":{"line":95,"column":11},"end":{"line":105,"column":1}},"46":{"start":{"line":96,"column":15},"end":{"line":101,"column":3}},"47":{"start":{"line":102,"column":2},"end":{"line":102,"column":53}},"48":{"start":{"line":102,"column":31},"end":{"line":102,"column":53}},"49":{"start":{"line":103,"column":2},"end":{"line":103,"column":49}},"50":{"start":{"line":103,"column":29},"end":{"line":103,"column":49}},"51":{"start":{"line":104,"column":2},"end":{"line":104,"column":15}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":32},"end":{"line":10,"column":33}},"loc":{"start":{"line":10,"column":48},"end":{"line":91,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":46,"column":20},"end":{"line":46,"column":21}},"loc":{"start":{"line":46,"column":47},"end":{"line":50,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":55,"column":19},"end":{"line":55,"column":20}},"loc":{"start":{"line":55,"column":38},"end":{"line":59,"column":3}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":95,"column":11},"end":{"line":95,"column":12}},"loc":{"start":{"line":95,"column":39},"end":{"line":105,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":2},"end":{"line":17,"column":3}},"type":"if","locations":[{"start":{"line":14,"column":2},"end":{"line":17,"column":3}},{"start":{"line":14,"column":2},"end":{"line":17,"column":3}}]},"1":{"loc":{"start":{"line":19,"column":2},"end":{"line":22,"column":3}},"type":"if","locations":[{"start":{"line":19,"column":2},"end":{"line":22,"column":3}},{"start":{"line":19,"column":2},"end":{"line":22,"column":3}}]},"2":{"loc":{"start":{"line":24,"column":2},"end":{"line":27,"column":3}},"type":"if","locations":[{"start":{"line":24,"column":2},"end":{"line":27,"column":3}},{"start":{"line":24,"column":2},"end":{"line":27,"column":3}}]},"3":{"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"type":"if","locations":[{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},{"start":{"line":29,"column":2},"end":{"line":31,"column":3}}]},"4":{"loc":{"start":{"line":33,"column":2},"end":{"line":35,"column":3}},"type":"if","locations":[{"start":{"line":33,"column":2},"end":{"line":35,"column":3}},{"start":{"line":33,"column":2},"end":{"line":35,"column":3}}]},"5":{"loc":{"start":{"line":37,"column":2},"end":{"line":39,"column":3}},"type":"if","locations":[{"start":{"line":37,"column":2},"end":{"line":39,"column":3}},{"start":{"line":37,"column":2},"end":{"line":39,"column":3}}]},"6":{"loc":{"start":{"line":41,"column":2},"end":{"line":43,"column":3}},"type":"if","locations":[{"start":{"line":41,"column":2},"end":{"line":43,"column":3}},{"start":{"line":41,"column":2},"end":{"line":43,"column":3}}]},"7":{"loc":{"start":{"line":47,"column":4},"end":{"line":49,"column":5}},"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":49,"column":5}},{"start":{"line":47,"column":4},"end":{"line":49,"column":5}}]},"8":{"loc":{"start":{"line":56,"column":4},"end":{"line":58,"column":5}},"type":"if","locations":[{"start":{"line":56,"column":4},"end":{"line":58,"column":5}},{"start":{"line":56,"column":4},"end":{"line":58,"column":5}}]},"9":{"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":3}},"type":"if","locations":[{"start":{"line":63,"column":2},"end":{"line":65,"column":3}},{"start":{"line":63,"column":2},"end":{"line":65,"column":3}}]},"10":{"loc":{"start":{"line":68,"column":2},"end":{"line":70,"column":3}},"type":"if","locations":[{"start":{"line":68,"column":2},"end":{"line":70,"column":3}},{"start":{"line":68,"column":2},"end":{"line":70,"column":3}}]},"11":{"loc":{"start":{"line":72,"column":2},"end":{"line":74,"column":3}},"type":"if","locations":[{"start":{"line":72,"column":2},"end":{"line":74,"column":3}},{"start":{"line":72,"column":2},"end":{"line":74,"column":3}}]},"12":{"loc":{"start":{"line":76,"column":2},"end":{"line":88,"column":3}},"type":"if","locations":[{"start":{"line":76,"column":2},"end":{"line":88,"column":3}},{"start":{"line":76,"column":2},"end":{"line":88,"column":3}}]},"13":{"loc":{"start":{"line":79,"column":4},"end":{"line":85,"column":5}},"type":"if","locations":[{"start":{"line":79,"column":4},"end":{"line":85,"column":5}},{"start":{"line":79,"column":4},"end":{"line":85,"column":5}}]},"14":{"loc":{"start":{"line":82,"column":6},"end":{"line":84,"column":7}},"type":"if","locations":[{"start":{"line":82,"column":6},"end":{"line":84,"column":7}},{"start":{"line":82,"column":6},"end":{"line":84,"column":7}}]},"15":{"loc":{"start":{"line":82,"column":10},"end":{"line":82,"column":78}},"type":"binary-expr","locations":[{"start":{"line":82,"column":10},"end":{"line":82,"column":43}},{"start":{"line":82,"column":47},"end":{"line":82,"column":78}}]},"16":{"loc":{"start":{"line":97,"column":25},"end":{"line":97,"column":69}},"type":"binary-expr","locations":[{"start":{"line":97,"column":25},"end":{"line":97,"column":44}},{"start":{"line":97,"column":48},"end":{"line":97,"column":69}}]},"17":{"loc":{"start":{"line":102,"column":2},"end":{"line":102,"column":53}},"type":"if","locations":[{"start":{"line":102,"column":2},"end":{"line":102,"column":53}},{"start":{"line":102,"column":2},"end":{"line":102,"column":53}}]},"18":{"loc":{"start":{"line":103,"column":2},"end":{"line":103,"column":49}},"type":"if","locations":[{"start":{"line":103,"column":2},"end":{"line":103,"column":49}},{"start":{"line":103,"column":2},"end":{"line":103,"column":49}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":22,"5":22,"6":22,"7":0,"8":0,"9":22,"10":0,"11":0,"12":22,"13":0,"14":0,"15":22,"16":2,"17":22,"18":1,"19":22,"20":1,"21":22,"22":2,"23":22,"24":44,"25":2,"26":22,"27":726,"28":1,"29":22,"30":1,"31":22,"32":1,"33":22,"34":2,"35":22,"36":6,"37":6,"38":5,"39":5,"40":5,"41":2,"42":4,"43":20,"44":1,"45":1,"46":22,"47":22,"48":17,"49":22,"50":12,"51":22},"f":{"0":22,"1":44,"2":726,"3":22},"b":{"0":[0,22],"1":[0,22],"2":[0,22],"3":[2,20],"4":[1,21],"5":[1,21],"6":[2,20],"7":[2,42],"8":[1,725],"9":[1,21],"10":[1,21],"11":[2,20],"12":[6,16],"13":[5,1],"14":[2,3],"15":[5,2],"16":[22,12],"17":[17,5],"18":[12,10]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"7a01205bc1fdf589bdf194d23f1405400131fa00","contentHash":"8b2210ff664cab8b0916540357b1d2f9_10.1.2"}} \ No newline at end of file diff --git a/node_modules/validate-npm-package-name/.nyc_output/bb918173e62b9517f55b630902d07ef4.json b/node_modules/validate-npm-package-name/.nyc_output/bb918173e62b9517f55b630902d07ef4.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/node_modules/validate-npm-package-name/.nyc_output/bb918173e62b9517f55b630902d07ef4.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/node_modules/validate-npm-package-name/.travis.yml b/node_modules/validate-npm-package-name/.travis.yml new file mode 100644 index 0000000000..54de0d2d15 --- /dev/null +++ b/node_modules/validate-npm-package-name/.travis.yml @@ -0,0 +1,6 @@ +sudo: false +language: node_js +node_js: + - '0.10' + - '4' + - '6' diff --git a/node_modules/validate-npm-package-name/LICENSE b/node_modules/validate-npm-package-name/LICENSE new file mode 100644 index 0000000000..fdcd63b302 --- /dev/null +++ b/node_modules/validate-npm-package-name/LICENSE @@ -0,0 +1,6 @@ +Copyright (c) 2015, npm, Inc + + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/validate-npm-package-name/README.md b/node_modules/validate-npm-package-name/README.md new file mode 100644 index 0000000000..95d04a4c81 --- /dev/null +++ b/node_modules/validate-npm-package-name/README.md @@ -0,0 +1,120 @@ +# validate-npm-package-name + +Give me a string and I'll tell you if it's a valid `npm` package name. + +This package exports a single synchronous function that takes a `string` as +input and returns an object with two properties: + +- `validForNewPackages` :: `Boolean` +- `validForOldPackages` :: `Boolean` + +## Contents + +- [Naming rules](#naming-rules) +- [Examples](#examples) + + [Valid Names](#valid-names) + + [Invalid Names](#invalid-names) +- [Legacy Names](#legacy-names) +- [Tests](#tests) +- [License](#license) + +## Naming Rules + +Below is a list of rules that valid `npm` package name should conform to. + +- package name length should be greater than zero +- all the characters in the package name must be lowercase i.e., no uppercase or mixed case names are allowed +- package name *can* consist of hyphens +- package name must *not* contain any non-url-safe characters (since name ends up being part of a URL) +- package name should not start with `.` or `_` +- package name should *not* contain any leading or trailing spaces +- package name should *not* contain any of the following characters: `~)('!*` +- package name *cannot* be the same as a node.js/io.js core module nor a reserved/blacklisted name. For example, the following names are invalid: + + http + + stream + + node_modules + + favicon.ico +- package name length cannot exceed 214 + + +## Examples + +### Valid Names + +```js +var validate = require("validate-npm-package-name") + +validate("some-package") +validate("example.com") +validate("under_score") +validate("123numeric") +validate("excited!") +validate("@npm/thingy") +validate("@jane/foo.js") +``` + +All of the above names are valid, so you'll get this object back: + +```js +{ + validForNewPackages: true, + validForOldPackages: true +} +``` + +### Invalid Names + +```js +validate(" leading-space:and:weirdchars") +``` + +That was never a valid package name, so you get this: + +```js +{ + validForNewPackages: false, + validForOldPackages: false, + errors: [ + 'name cannot contain leading or trailing spaces', + 'name can only contain URL-friendly characters' + ] +} +``` + +## Legacy Names + +In the old days of npm, package names were wild. They could have capital +letters in them. They could be really long. They could be the name of an +existing module in node core. + +If you give this function a package name that **used to be valid**, you'll see +a change in the value of `validForNewPackages` property, and a warnings array +will be present: + +```js +validate("eLaBorAtE-paCkAgE-with-mixed-case-and-more-than-214-characters-----------------------------------------------------------------------------------------------------------------------------------------------------------") +``` + +returns: + +```js +{ + validForNewPackages: false, + validForOldPackages: true, + warnings: [ + "name can no longer contain capital letters", + "name can no longer contain more than 214 characters" + ] +} +``` + +## Tests + +```sh +npm install +npm test +``` + +## License + +ISC diff --git a/node_modules/validate-npm-package-name/index.js b/node_modules/validate-npm-package-name/index.js new file mode 100644 index 0000000000..eb43fa25e5 --- /dev/null +++ b/node_modules/validate-npm-package-name/index.js @@ -0,0 +1,105 @@ +'use strict' + +var scopedPackagePattern = new RegExp('^(?:@([^/]+?)[/])?([^/]+?)$') +var builtins = require('builtins') +var blacklist = [ + 'node_modules', + 'favicon.ico' +] + +var validate = module.exports = function (name) { + var warnings = [] + var errors = [] + + if (name === null) { + errors.push('name cannot be null') + return done(warnings, errors) + } + + if (name === undefined) { + errors.push('name cannot be undefined') + return done(warnings, errors) + } + + if (typeof name !== 'string') { + errors.push('name must be a string') + return done(warnings, errors) + } + + if (!name.length) { + errors.push('name length must be greater than zero') + } + + if (name.match(/^\./)) { + errors.push('name cannot start with a period') + } + + if (name.match(/^_/)) { + errors.push('name cannot start with an underscore') + } + + if (name.trim() !== name) { + errors.push('name cannot contain leading or trailing spaces') + } + + // No funny business + blacklist.forEach(function (blacklistedName) { + if (name.toLowerCase() === blacklistedName) { + errors.push(blacklistedName + ' is a blacklisted name') + } + }) + + // Generate warnings for stuff that used to be allowed + + // core module names like http, events, util, etc + builtins.forEach(function (builtin) { + if (name.toLowerCase() === builtin) { + warnings.push(builtin + ' is a core module name') + } + }) + + // really-long-package-names-------------------------------such--length-----many---wow + // the thisisareallyreallylongpackagenameitshouldpublishdowenowhavealimittothelengthofpackagenames-poch. + if (name.length > 214) { + warnings.push('name can no longer contain more than 214 characters') + } + + // mIxeD CaSe nAMEs + if (name.toLowerCase() !== name) { + warnings.push('name can no longer contain capital letters') + } + + if (/[~'!()*]/.test(name.split('/').slice(-1)[0])) { + warnings.push('name can no longer contain special characters ("~\'!()*")') + } + + if (encodeURIComponent(name) !== name) { + // Maybe it's a scoped package name, like @user/package + var nameMatch = name.match(scopedPackagePattern) + if (nameMatch) { + var user = nameMatch[1] + var pkg = nameMatch[2] + if (encodeURIComponent(user) === user && encodeURIComponent(pkg) === pkg) { + return done(warnings, errors) + } + } + + errors.push('name can only contain URL-friendly characters') + } + + return done(warnings, errors) +} + +validate.scopedPackagePattern = scopedPackagePattern + +var done = function (warnings, errors) { + var result = { + validForNewPackages: errors.length === 0 && warnings.length === 0, + validForOldPackages: errors.length === 0, + warnings: warnings, + errors: errors + } + if (!result.warnings.length) delete result.warnings + if (!result.errors.length) delete result.errors + return result +} diff --git a/node_modules/validate-npm-package-name/package.json b/node_modules/validate-npm-package-name/package.json new file mode 100644 index 0000000000..b72e9ef03b --- /dev/null +++ b/node_modules/validate-npm-package-name/package.json @@ -0,0 +1,38 @@ +{ + "name": "validate-npm-package-name", + "version": "3.0.0", + "description": "Give me a string and I'll tell you if it's a valid npm package name", + "main": "index.js", + "directories": { + "test": "test" + }, + "dependencies": { + "builtins": "^1.0.3" + }, + "devDependencies": { + "standard": "^8.6.0", + "tap": "^10.0.0" + }, + "scripts": { + "cov:test": "TAP_FLAGS='--cov' npm run test:code", + "test:code": "tap ${TAP_FLAGS:-'--'} test/*.js", + "test:style": "standard", + "test": "npm run test:code && npm run test:style" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/validate-npm-package-name" + }, + "keywords": [ + "npm", + "package", + "names", + "validation" + ], + "author": "zeke", + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/validate-npm-package-name/issues" + }, + "homepage": "https://github.com/npm/validate-npm-package-name" +} diff --git a/node_modules/validate-npm-package-name/test/index.js b/node_modules/validate-npm-package-name/test/index.js new file mode 100644 index 0000000000..1f0bc61235 --- /dev/null +++ b/node_modules/validate-npm-package-name/test/index.js @@ -0,0 +1,109 @@ +'use strict' + +var validate = require('..') +var test = require('tap').test + +test('validate-npm-package-name', function (t) { + // Traditional + + t.deepEqual(validate('some-package'), {validForNewPackages: true, validForOldPackages: true}) + t.deepEqual(validate('example.com'), {validForNewPackages: true, validForOldPackages: true}) + t.deepEqual(validate('under_score'), {validForNewPackages: true, validForOldPackages: true}) + t.deepEqual(validate('period.js'), {validForNewPackages: true, validForOldPackages: true}) + t.deepEqual(validate('123numeric'), {validForNewPackages: true, validForOldPackages: true}) + t.deepEqual(validate('crazy!'), { + validForNewPackages: false, + validForOldPackages: true, + warnings: ['name can no longer contain special characters ("~\'!()*")'] + }) + + // Scoped (npm 2+) + + t.deepEqual(validate('@npm/thingy'), {validForNewPackages: true, validForOldPackages: true}) + t.deepEqual(validate('@npm-zors/money!time.js'), { + validForNewPackages: false, + validForOldPackages: true, + warnings: ['name can no longer contain special characters ("~\'!()*")'] + }) + + // Invalid + + t.deepEqual(validate(''), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['name length must be greater than zero']}) + + t.deepEqual(validate(''), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['name length must be greater than zero']}) + + t.deepEqual(validate('.start-with-period'), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['name cannot start with a period']}) + + t.deepEqual(validate('_start-with-underscore'), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['name cannot start with an underscore']}) + + t.deepEqual(validate('contain:colons'), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['name can only contain URL-friendly characters']}) + + t.deepEqual(validate(' leading-space'), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['name cannot contain leading or trailing spaces', 'name can only contain URL-friendly characters']}) + + t.deepEqual(validate('trailing-space '), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['name cannot contain leading or trailing spaces', 'name can only contain URL-friendly characters']}) + + t.deepEqual(validate('s/l/a/s/h/e/s'), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['name can only contain URL-friendly characters']}) + + t.deepEqual(validate('node_modules'), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['node_modules is a blacklisted name']}) + + t.deepEqual(validate('favicon.ico'), { + validForNewPackages: false, + validForOldPackages: false, + errors: ['favicon.ico is a blacklisted name']}) + + // Node/IO Core + + t.deepEqual(validate('http'), { + validForNewPackages: false, + validForOldPackages: true, + warnings: ['http is a core module name']}) + + // Long Package Names + + t.deepEqual(validate('ifyouwanttogetthesumoftwonumberswherethosetwonumbersarechosenbyfindingthelargestoftwooutofthreenumbersandsquaringthemwhichismultiplyingthembyitselfthenyoushouldinputthreenumbersintothisfunctionanditwilldothatforyou-'), { + validForNewPackages: false, + validForOldPackages: true, + warnings: ['name can no longer contain more than 214 characters'] + }) + + t.deepEqual(validate('ifyouwanttogetthesumoftwonumberswherethosetwonumbersarechosenbyfindingthelargestoftwooutofthreenumbersandsquaringthemwhichismultiplyingthembyitselfthenyoushouldinputthreenumbersintothisfunctionanditwilldothatforyou'), { + validForNewPackages: true, + validForOldPackages: true + }) + + // Legacy Mixed-Case + + t.deepEqual(validate('CAPITAL-LETTERS'), { + validForNewPackages: false, + validForOldPackages: true, + warnings: ['name can no longer contain capital letters']}) + + t.end() +}) diff --git a/node_modules/which/CHANGELOG.md b/node_modules/which/CHANGELOG.md new file mode 100644 index 0000000000..7fb1f2033c --- /dev/null +++ b/node_modules/which/CHANGELOG.md @@ -0,0 +1,166 @@ +# Changes + + +## 2.0.2 + +* Rename bin to `node-which` + +## 2.0.1 + +* generate changelog and publish on version bump +* enforce 100% test coverage +* Promise interface + +## 2.0.0 + +* Parallel tests, modern JavaScript, and drop support for node < 8 + +## 1.3.1 + +* update deps +* update travis + +## v1.3.0 + +* Add nothrow option to which.sync +* update tap + +## v1.2.14 + +* appveyor: drop node 5 and 0.x +* travis-ci: add node 6, drop 0.x + +## v1.2.13 + +* test: Pass missing option to pass on windows +* update tap +* update isexe to 2.0.0 +* neveragain.tech pledge request + +## v1.2.12 + +* Removed unused require + +## v1.2.11 + +* Prevent changelog script from being included in package + +## v1.2.10 + +* Use env.PATH only, not env.Path + +## v1.2.9 + +* fix for paths starting with ../ +* Remove unused `is-absolute` module + +## v1.2.8 + +* bullet items in changelog that contain (but don't start with) # + +## v1.2.7 + +* strip 'update changelog' changelog entries out of changelog + +## v1.2.6 + +* make the changelog bulleted + +## v1.2.5 + +* make a changelog, and keep it up to date +* don't include tests in package +* Properly handle relative-path executables +* appveyor +* Attach error code to Not Found error +* Make tests pass on Windows + +## v1.2.4 + +* Fix typo + +## v1.2.3 + +* update isexe, fix regression in pathExt handling + +## v1.2.2 + +* update deps, use isexe module, test windows + +## v1.2.1 + +* Sometimes windows PATH entries are quoted +* Fixed a bug in the check for group and user mode bits. This bug was introduced during refactoring for supporting strict mode. +* doc cli + +## v1.2.0 + +* Add support for opt.all and -as cli flags +* test the bin +* update travis +* Allow checking for multiple programs in bin/which +* tap 2 + +## v1.1.2 + +* travis +* Refactored and fixed undefined error on Windows +* Support strict mode + +## v1.1.1 + +* test +g exes against secondary groups, if available +* Use windows exe semantics on cygwin & msys +* cwd should be first in path on win32, not last +* Handle lower-case 'env.Path' on Windows +* Update docs +* use single-quotes + +## v1.1.0 + +* Add tests, depend on is-absolute + +## v1.0.9 + +* which.js: root is allowed to execute files owned by anyone + +## v1.0.8 + +* don't use graceful-fs + +## v1.0.7 + +* add license to package.json + +## v1.0.6 + +* isc license + +## 1.0.5 + +* Awful typo + +## 1.0.4 + +* Test for path absoluteness properly +* win: Allow '' as a pathext if cmd has a . in it + +## 1.0.3 + +* Remove references to execPath +* Make `which.sync()` work on Windows by honoring the PATHEXT variable. +* Make `isExe()` always return true on Windows. +* MIT + +## 1.0.2 + +* Only files can be exes + +## 1.0.1 + +* Respect the PATHEXT env for win32 support +* should 0755 the bin +* binary +* guts +* package +* 1st diff --git a/node_modules/which/LICENSE b/node_modules/which/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/node_modules/which/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/which/README.md b/node_modules/which/README.md new file mode 100644 index 0000000000..cd833509f3 --- /dev/null +++ b/node_modules/which/README.md @@ -0,0 +1,54 @@ +# which + +Like the unix `which` utility. + +Finds the first instance of a specified executable in the PATH +environment variable. Does not cache the results, so `hash -r` is not +needed when the PATH changes. + +## USAGE + +```javascript +var which = require('which') + +// async usage +which('node', function (er, resolvedPath) { + // er is returned if no "node" is found on the PATH + // if it is found, then the absolute path to the exec is returned +}) + +// or promise +which('node').then(resolvedPath => { ... }).catch(er => { ... not found ... }) + +// sync usage +// throws if not found +var resolved = which.sync('node') + +// if nothrow option is used, returns null if not found +resolved = which.sync('node', {nothrow: true}) + +// Pass options to override the PATH and PATHEXT environment vars. +which('node', { path: someOtherPath }, function (er, resolved) { + if (er) + throw er + console.log('found at %j', resolved) +}) +``` + +## CLI USAGE + +Same as the BSD `which(1)` binary. + +``` +usage: which [-as] program ... +``` + +## OPTIONS + +You may pass an options object as the second argument. + +- `path`: Use instead of the `PATH` environment variable. +- `pathExt`: Use instead of the `PATHEXT` environment variable. +- `all`: Return all matches, instead of just the first one. Note that + this means the function returns an array of strings instead of a + single string. diff --git a/node_modules/which/bin/node-which b/node_modules/which/bin/node-which new file mode 100644 index 0000000000..7cee3729ee --- /dev/null +++ b/node_modules/which/bin/node-which @@ -0,0 +1,52 @@ +#!/usr/bin/env node +var which = require("../") +if (process.argv.length < 3) + usage() + +function usage () { + console.error('usage: which [-as] program ...') + process.exit(1) +} + +var all = false +var silent = false +var dashdash = false +var args = process.argv.slice(2).filter(function (arg) { + if (dashdash || !/^-/.test(arg)) + return true + + if (arg === '--') { + dashdash = true + return false + } + + var flags = arg.substr(1).split('') + for (var f = 0; f < flags.length; f++) { + var flag = flags[f] + switch (flag) { + case 's': + silent = true + break + case 'a': + all = true + break + default: + console.error('which: illegal option -- ' + flag) + usage() + } + } + return false +}) + +process.exit(args.reduce(function (pv, current) { + try { + var f = which.sync(current, { all: all }) + if (all) + f = f.join('\n') + if (!silent) + console.log(f) + return pv; + } catch (e) { + return 1; + } +}, 0)) diff --git a/node_modules/which/package.json b/node_modules/which/package.json new file mode 100644 index 0000000000..97ad7fbabc --- /dev/null +++ b/node_modules/which/package.json @@ -0,0 +1,43 @@ +{ + "author": "Isaac Z. Schlueter (http://blog.izs.me)", + "name": "which", + "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.", + "version": "2.0.2", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/node-which.git" + }, + "main": "which.js", + "bin": { + "node-which": "./bin/node-which" + }, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "devDependencies": { + "mkdirp": "^0.5.0", + "rimraf": "^2.6.2", + "tap": "^14.6.9" + }, + "scripts": { + "test": "tap", + "preversion": "npm test", + "postversion": "npm publish", + "prepublish": "npm run changelog", + "prechangelog": "bash gen-changelog.sh", + "changelog": "git add CHANGELOG.md", + "postchangelog": "git commit -m 'update changelog - '${npm_package_version}", + "postpublish": "git push origin --follow-tags" + }, + "files": [ + "which.js", + "bin/node-which" + ], + "tap": { + "check-coverage": true + }, + "engines": { + "node": ">= 8" + } +} diff --git a/node_modules/which/which.js b/node_modules/which/which.js new file mode 100644 index 0000000000..82afffd214 --- /dev/null +++ b/node_modules/which/which.js @@ -0,0 +1,125 @@ +const isWindows = process.platform === 'win32' || + process.env.OSTYPE === 'cygwin' || + process.env.OSTYPE === 'msys' + +const path = require('path') +const COLON = isWindows ? ';' : ':' +const isexe = require('isexe') + +const getNotFoundError = (cmd) => + Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' }) + +const getPathInfo = (cmd, opt) => { + const colon = opt.colon || COLON + + // If it has a slash, then we don't bother searching the pathenv. + // just check the file itself, and that's it. + const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [''] + : ( + [ + // windows always checks the cwd first + ...(isWindows ? [process.cwd()] : []), + ...(opt.path || process.env.PATH || + /* istanbul ignore next: very unusual */ '').split(colon), + ] + ) + const pathExtExe = isWindows + ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM' + : '' + const pathExt = isWindows ? pathExtExe.split(colon) : [''] + + if (isWindows) { + if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') + pathExt.unshift('') + } + + return { + pathEnv, + pathExt, + pathExtExe, + } +} + +const which = (cmd, opt, cb) => { + if (typeof opt === 'function') { + cb = opt + opt = {} + } + if (!opt) + opt = {} + + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) + const found = [] + + const step = i => new Promise((resolve, reject) => { + if (i === pathEnv.length) + return opt.all && found.length ? resolve(found) + : reject(getNotFoundError(cmd)) + + const ppRaw = pathEnv[i] + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw + + const pCmd = path.join(pathPart, cmd) + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd + : pCmd + + resolve(subStep(p, i, 0)) + }) + + const subStep = (p, i, ii) => new Promise((resolve, reject) => { + if (ii === pathExt.length) + return resolve(step(i + 1)) + const ext = pathExt[ii] + isexe(p + ext, { pathExt: pathExtExe }, (er, is) => { + if (!er && is) { + if (opt.all) + found.push(p + ext) + else + return resolve(p + ext) + } + return resolve(subStep(p, i, ii + 1)) + }) + }) + + return cb ? step(0).then(res => cb(null, res), cb) : step(0) +} + +const whichSync = (cmd, opt) => { + opt = opt || {} + + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) + const found = [] + + for (let i = 0; i < pathEnv.length; i ++) { + const ppRaw = pathEnv[i] + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw + + const pCmd = path.join(pathPart, cmd) + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd + : pCmd + + for (let j = 0; j < pathExt.length; j ++) { + const cur = p + pathExt[j] + try { + const is = isexe.sync(cur, { pathExt: pathExtExe }) + if (is) { + if (opt.all) + found.push(cur) + else + return cur + } + } catch (ex) {} + } + } + + if (opt.all && found.length) + return found + + if (opt.nothrow) + return null + + throw getNotFoundError(cmd) +} + +module.exports = which +which.sync = whichSync diff --git a/node_modules/wrappy/LICENSE b/node_modules/wrappy/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/node_modules/wrappy/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/wrappy/README.md b/node_modules/wrappy/README.md new file mode 100644 index 0000000000..98eab2522b --- /dev/null +++ b/node_modules/wrappy/README.md @@ -0,0 +1,36 @@ +# wrappy + +Callback wrapping utility + +## USAGE + +```javascript +var wrappy = require("wrappy") + +// var wrapper = wrappy(wrapperFunction) + +// make sure a cb is called only once +// See also: http://npm.im/once for this specific use case +var once = wrappy(function (cb) { + var called = false + return function () { + if (called) return + called = true + return cb.apply(this, arguments) + } +}) + +function printBoo () { + console.log('boo') +} +// has some rando property +printBoo.iAmBooPrinter = true + +var onlyPrintOnce = once(printBoo) + +onlyPrintOnce() // prints 'boo' +onlyPrintOnce() // does nothing + +// random property is retained! +assert.equal(onlyPrintOnce.iAmBooPrinter, true) +``` diff --git a/node_modules/wrappy/package.json b/node_modules/wrappy/package.json new file mode 100644 index 0000000000..1307520467 --- /dev/null +++ b/node_modules/wrappy/package.json @@ -0,0 +1,29 @@ +{ + "name": "wrappy", + "version": "1.0.2", + "description": "Callback wrapping utility", + "main": "wrappy.js", + "files": [ + "wrappy.js" + ], + "directories": { + "test": "test" + }, + "dependencies": {}, + "devDependencies": { + "tap": "^2.3.1" + }, + "scripts": { + "test": "tap --coverage test/*.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/wrappy" + }, + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/wrappy/issues" + }, + "homepage": "https://github.com/npm/wrappy" +} diff --git a/node_modules/wrappy/wrappy.js b/node_modules/wrappy/wrappy.js new file mode 100644 index 0000000000..bb7e7d6fcf --- /dev/null +++ b/node_modules/wrappy/wrappy.js @@ -0,0 +1,33 @@ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} diff --git a/node_modules/xtend/.jshintrc b/node_modules/xtend/.jshintrc new file mode 100644 index 0000000000..77887b5f0f --- /dev/null +++ b/node_modules/xtend/.jshintrc @@ -0,0 +1,30 @@ +{ + "maxdepth": 4, + "maxstatements": 200, + "maxcomplexity": 12, + "maxlen": 80, + "maxparams": 5, + + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": false, + "noarg": true, + "noempty": true, + "nonew": true, + "undef": true, + "unused": "vars", + "trailing": true, + + "quotmark": true, + "expr": true, + "asi": true, + + "browser": false, + "esnext": true, + "devel": false, + "node": false, + "nonstandard": false, + + "predef": ["require", "module", "__dirname", "__filename"] +} diff --git a/node_modules/xtend/LICENSE b/node_modules/xtend/LICENSE new file mode 100644 index 0000000000..0099f4f6c7 --- /dev/null +++ b/node_modules/xtend/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) +Copyright (c) 2012-2014 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/xtend/README.md b/node_modules/xtend/README.md new file mode 100644 index 0000000000..4a2703cff2 --- /dev/null +++ b/node_modules/xtend/README.md @@ -0,0 +1,32 @@ +# xtend + +[![browser support][3]][4] + +[![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges) + +Extend like a boss + +xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes precedence. + +## Examples + +```js +var extend = require("xtend") + +// extend returns a new object. Does not mutate arguments +var combination = extend({ + a: "a", + b: "c" +}, { + b: "b" +}) +// { a: "a", b: "b" } +``` + +## Stability status: Locked + +## MIT Licensed + + + [3]: http://ci.testling.com/Raynos/xtend.png + [4]: http://ci.testling.com/Raynos/xtend diff --git a/node_modules/xtend/immutable.js b/node_modules/xtend/immutable.js new file mode 100644 index 0000000000..94889c9de1 --- /dev/null +++ b/node_modules/xtend/immutable.js @@ -0,0 +1,19 @@ +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend() { + var target = {} + + for (var i = 0; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} diff --git a/node_modules/xtend/mutable.js b/node_modules/xtend/mutable.js new file mode 100644 index 0000000000..72debede6c --- /dev/null +++ b/node_modules/xtend/mutable.js @@ -0,0 +1,17 @@ +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} diff --git a/node_modules/xtend/package.json b/node_modules/xtend/package.json new file mode 100644 index 0000000000..f7a39d10af --- /dev/null +++ b/node_modules/xtend/package.json @@ -0,0 +1,55 @@ +{ + "name": "xtend", + "version": "4.0.2", + "description": "extend like a boss", + "keywords": [ + "extend", + "merge", + "options", + "opts", + "object", + "array" + ], + "author": "Raynos ", + "repository": "git://github.com/Raynos/xtend.git", + "main": "immutable", + "scripts": { + "test": "node test" + }, + "dependencies": {}, + "devDependencies": { + "tape": "~1.1.0" + }, + "homepage": "https://github.com/Raynos/xtend", + "contributors": [ + { + "name": "Jake Verbaten" + }, + { + "name": "Matt Esch" + } + ], + "bugs": { + "url": "https://github.com/Raynos/xtend/issues", + "email": "raynos2@gmail.com" + }, + "license": "MIT", + "testling": { + "files": "test.js", + "browsers": [ + "ie/7..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest" + ] + }, + "engines": { + "node": ">=0.4" + } +} diff --git a/node_modules/xtend/test.js b/node_modules/xtend/test.js new file mode 100644 index 0000000000..b895b42b3f --- /dev/null +++ b/node_modules/xtend/test.js @@ -0,0 +1,103 @@ +var test = require("tape") +var extend = require("./") +var mutableExtend = require("./mutable") + +test("merge", function(assert) { + var a = { a: "foo" } + var b = { b: "bar" } + + assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) + assert.end() +}) + +test("replace", function(assert) { + var a = { a: "foo" } + var b = { a: "bar" } + + assert.deepEqual(extend(a, b), { a: "bar" }) + assert.end() +}) + +test("undefined", function(assert) { + var a = { a: undefined } + var b = { b: "foo" } + + assert.deepEqual(extend(a, b), { a: undefined, b: "foo" }) + assert.deepEqual(extend(b, a), { a: undefined, b: "foo" }) + assert.end() +}) + +test("handle 0", function(assert) { + var a = { a: "default" } + var b = { a: 0 } + + assert.deepEqual(extend(a, b), { a: 0 }) + assert.deepEqual(extend(b, a), { a: "default" }) + assert.end() +}) + +test("is immutable", function (assert) { + var record = {} + + extend(record, { foo: "bar" }) + assert.equal(record.foo, undefined) + assert.end() +}) + +test("null as argument", function (assert) { + var a = { foo: "bar" } + var b = null + var c = void 0 + + assert.deepEqual(extend(b, a, c), { foo: "bar" }) + assert.end() +}) + +test("mutable", function (assert) { + var a = { foo: "bar" } + + mutableExtend(a, { bar: "baz" }) + + assert.equal(a.bar, "baz") + assert.end() +}) + +test("null prototype", function(assert) { + var a = { a: "foo" } + var b = Object.create(null) + b.b = "bar"; + + assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) + assert.end() +}) + +test("null prototype mutable", function (assert) { + var a = { foo: "bar" } + var b = Object.create(null) + b.bar = "baz"; + + mutableExtend(a, b) + + assert.equal(a.bar, "baz") + assert.end() +}) + +test("prototype pollution", function (assert) { + var a = {} + var maliciousPayload = '{"__proto__":{"oops":"It works!"}}' + + assert.strictEqual(a.oops, undefined) + extend({}, maliciousPayload) + assert.strictEqual(a.oops, undefined) + assert.end() +}) + +test("prototype pollution mutable", function (assert) { + var a = {} + var maliciousPayload = '{"__proto__":{"oops":"It works!"}}' + + assert.strictEqual(a.oops, undefined) + mutableExtend({}, maliciousPayload) + assert.strictEqual(a.oops, undefined) + assert.end() +}) diff --git a/node_modules/yallist/LICENSE b/node_modules/yallist/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/node_modules/yallist/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/yallist/README.md b/node_modules/yallist/README.md new file mode 100644 index 0000000000..f586101869 --- /dev/null +++ b/node_modules/yallist/README.md @@ -0,0 +1,204 @@ +# yallist + +Yet Another Linked List + +There are many doubly-linked list implementations like it, but this +one is mine. + +For when an array would be too big, and a Map can't be iterated in +reverse order. + + +[![Build Status](https://travis-ci.org/isaacs/yallist.svg?branch=master)](https://travis-ci.org/isaacs/yallist) [![Coverage Status](https://coveralls.io/repos/isaacs/yallist/badge.svg?service=github)](https://coveralls.io/github/isaacs/yallist) + +## basic usage + +```javascript +var yallist = require('yallist') +var myList = yallist.create([1, 2, 3]) +myList.push('foo') +myList.unshift('bar') +// of course pop() and shift() are there, too +console.log(myList.toArray()) // ['bar', 1, 2, 3, 'foo'] +myList.forEach(function (k) { + // walk the list head to tail +}) +myList.forEachReverse(function (k, index, list) { + // walk the list tail to head +}) +var myDoubledList = myList.map(function (k) { + return k + k +}) +// now myDoubledList contains ['barbar', 2, 4, 6, 'foofoo'] +// mapReverse is also a thing +var myDoubledListReverse = myList.mapReverse(function (k) { + return k + k +}) // ['foofoo', 6, 4, 2, 'barbar'] + +var reduced = myList.reduce(function (set, entry) { + set += entry + return set +}, 'start') +console.log(reduced) // 'startfoo123bar' +``` + +## api + +The whole API is considered "public". + +Functions with the same name as an Array method work more or less the +same way. + +There's reverse versions of most things because that's the point. + +### Yallist + +Default export, the class that holds and manages a list. + +Call it with either a forEach-able (like an array) or a set of +arguments, to initialize the list. + +The Array-ish methods all act like you'd expect. No magic length, +though, so if you change that it won't automatically prune or add +empty spots. + +### Yallist.create(..) + +Alias for Yallist function. Some people like factories. + +#### yallist.head + +The first node in the list + +#### yallist.tail + +The last node in the list + +#### yallist.length + +The number of nodes in the list. (Change this at your peril. It is +not magic like Array length.) + +#### yallist.toArray() + +Convert the list to an array. + +#### yallist.forEach(fn, [thisp]) + +Call a function on each item in the list. + +#### yallist.forEachReverse(fn, [thisp]) + +Call a function on each item in the list, in reverse order. + +#### yallist.get(n) + +Get the data at position `n` in the list. If you use this a lot, +probably better off just using an Array. + +#### yallist.getReverse(n) + +Get the data at position `n`, counting from the tail. + +#### yallist.map(fn, thisp) + +Create a new Yallist with the result of calling the function on each +item. + +#### yallist.mapReverse(fn, thisp) + +Same as `map`, but in reverse. + +#### yallist.pop() + +Get the data from the list tail, and remove the tail from the list. + +#### yallist.push(item, ...) + +Insert one or more items to the tail of the list. + +#### yallist.reduce(fn, initialValue) + +Like Array.reduce. + +#### yallist.reduceReverse + +Like Array.reduce, but in reverse. + +#### yallist.reverse + +Reverse the list in place. + +#### yallist.shift() + +Get the data from the list head, and remove the head from the list. + +#### yallist.slice([from], [to]) + +Just like Array.slice, but returns a new Yallist. + +#### yallist.sliceReverse([from], [to]) + +Just like yallist.slice, but the result is returned in reverse. + +#### yallist.toArray() + +Create an array representation of the list. + +#### yallist.toArrayReverse() + +Create a reversed array representation of the list. + +#### yallist.unshift(item, ...) + +Insert one or more items to the head of the list. + +#### yallist.unshiftNode(node) + +Move a Node object to the front of the list. (That is, pull it out of +wherever it lives, and make it the new head.) + +If the node belongs to a different list, then that list will remove it +first. + +#### yallist.pushNode(node) + +Move a Node object to the end of the list. (That is, pull it out of +wherever it lives, and make it the new tail.) + +If the node belongs to a list already, then that list will remove it +first. + +#### yallist.removeNode(node) + +Remove a node from the list, preserving referential integrity of head +and tail and other nodes. + +Will throw an error if you try to have a list remove a node that +doesn't belong to it. + +### Yallist.Node + +The class that holds the data and is actually the list. + +Call with `var n = new Node(value, previousNode, nextNode)` + +Note that if you do direct operations on Nodes themselves, it's very +easy to get into weird states where the list is broken. Be careful :) + +#### node.next + +The next node in the list. + +#### node.prev + +The previous node in the list. + +#### node.value + +The data the node contains. + +#### node.list + +The list to which this node belongs. (Null if it does not belong to +any list.) diff --git a/node_modules/yallist/iterator.js b/node_modules/yallist/iterator.js new file mode 100644 index 0000000000..d41c97a19f --- /dev/null +++ b/node_modules/yallist/iterator.js @@ -0,0 +1,8 @@ +'use strict' +module.exports = function (Yallist) { + Yallist.prototype[Symbol.iterator] = function* () { + for (let walker = this.head; walker; walker = walker.next) { + yield walker.value + } + } +} diff --git a/node_modules/yallist/package.json b/node_modules/yallist/package.json new file mode 100644 index 0000000000..8a083867d7 --- /dev/null +++ b/node_modules/yallist/package.json @@ -0,0 +1,29 @@ +{ + "name": "yallist", + "version": "4.0.0", + "description": "Yet Another Linked List", + "main": "yallist.js", + "directories": { + "test": "test" + }, + "files": [ + "yallist.js", + "iterator.js" + ], + "dependencies": {}, + "devDependencies": { + "tap": "^12.1.0" + }, + "scripts": { + "test": "tap test/*.js --100", + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --all; git push origin --tags" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/isaacs/yallist.git" + }, + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC" +} diff --git a/node_modules/yallist/yallist.js b/node_modules/yallist/yallist.js new file mode 100644 index 0000000000..4e83ab1c54 --- /dev/null +++ b/node_modules/yallist/yallist.js @@ -0,0 +1,426 @@ +'use strict' +module.exports = Yallist + +Yallist.Node = Node +Yallist.create = Yallist + +function Yallist (list) { + var self = this + if (!(self instanceof Yallist)) { + self = new Yallist() + } + + self.tail = null + self.head = null + self.length = 0 + + if (list && typeof list.forEach === 'function') { + list.forEach(function (item) { + self.push(item) + }) + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self.push(arguments[i]) + } + } + + return self +} + +Yallist.prototype.removeNode = function (node) { + if (node.list !== this) { + throw new Error('removing node which does not belong to this list') + } + + var next = node.next + var prev = node.prev + + if (next) { + next.prev = prev + } + + if (prev) { + prev.next = next + } + + if (node === this.head) { + this.head = next + } + if (node === this.tail) { + this.tail = prev + } + + node.list.length-- + node.next = null + node.prev = null + node.list = null + + return next +} + +Yallist.prototype.unshiftNode = function (node) { + if (node === this.head) { + return + } + + if (node.list) { + node.list.removeNode(node) + } + + var head = this.head + node.list = this + node.next = head + if (head) { + head.prev = node + } + + this.head = node + if (!this.tail) { + this.tail = node + } + this.length++ +} + +Yallist.prototype.pushNode = function (node) { + if (node === this.tail) { + return + } + + if (node.list) { + node.list.removeNode(node) + } + + var tail = this.tail + node.list = this + node.prev = tail + if (tail) { + tail.next = node + } + + this.tail = node + if (!this.head) { + this.head = node + } + this.length++ +} + +Yallist.prototype.push = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + push(this, arguments[i]) + } + return this.length +} + +Yallist.prototype.unshift = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]) + } + return this.length +} + +Yallist.prototype.pop = function () { + if (!this.tail) { + return undefined + } + + var res = this.tail.value + this.tail = this.tail.prev + if (this.tail) { + this.tail.next = null + } else { + this.head = null + } + this.length-- + return res +} + +Yallist.prototype.shift = function () { + if (!this.head) { + return undefined + } + + var res = this.head.value + this.head = this.head.next + if (this.head) { + this.head.prev = null + } else { + this.tail = null + } + this.length-- + return res +} + +Yallist.prototype.forEach = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.head, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this) + walker = walker.next + } +} + +Yallist.prototype.forEachReverse = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this) + walker = walker.prev + } +} + +Yallist.prototype.get = function (n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.next + } + if (i === n && walker !== null) { + return walker.value + } +} + +Yallist.prototype.getReverse = function (n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.prev + } + if (i === n && walker !== null) { + return walker.value + } +} + +Yallist.prototype.map = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.head; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.next + } + return res +} + +Yallist.prototype.mapReverse = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.tail; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.prev + } + return res +} + +Yallist.prototype.reduce = function (fn, initial) { + var acc + var walker = this.head + if (arguments.length > 1) { + acc = initial + } else if (this.head) { + walker = this.head.next + acc = this.head.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i) + walker = walker.next + } + + return acc +} + +Yallist.prototype.reduceReverse = function (fn, initial) { + var acc + var walker = this.tail + if (arguments.length > 1) { + acc = initial + } else if (this.tail) { + walker = this.tail.prev + acc = this.tail.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i) + walker = walker.prev + } + + return acc +} + +Yallist.prototype.toArray = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value + walker = walker.next + } + return arr +} + +Yallist.prototype.toArrayReverse = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = walker.value + walker = walker.prev + } + return arr +} + +Yallist.prototype.slice = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next + } + for (; walker !== null && i < to; i++, walker = walker.next) { + ret.push(walker.value) + } + return ret +} + +Yallist.prototype.sliceReverse = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev + } + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value) + } + return ret +} + +Yallist.prototype.splice = function (start, deleteCount, ...nodes) { + if (start > this.length) { + start = this.length - 1 + } + if (start < 0) { + start = this.length + start; + } + + for (var i = 0, walker = this.head; walker !== null && i < start; i++) { + walker = walker.next + } + + var ret = [] + for (var i = 0; walker && i < deleteCount; i++) { + ret.push(walker.value) + walker = this.removeNode(walker) + } + if (walker === null) { + walker = this.tail + } + + if (walker !== this.head && walker !== this.tail) { + walker = walker.prev + } + + for (var i = 0; i < nodes.length; i++) { + walker = insert(this, walker, nodes[i]) + } + return ret; +} + +Yallist.prototype.reverse = function () { + var head = this.head + var tail = this.tail + for (var walker = head; walker !== null; walker = walker.prev) { + var p = walker.prev + walker.prev = walker.next + walker.next = p + } + this.head = tail + this.tail = head + return this +} + +function insert (self, node, value) { + var inserted = node === self.head ? + new Node(value, null, node, self) : + new Node(value, node, node.next, self) + + if (inserted.next === null) { + self.tail = inserted + } + if (inserted.prev === null) { + self.head = inserted + } + + self.length++ + + return inserted +} + +function push (self, item) { + self.tail = new Node(item, self.tail, null, self) + if (!self.head) { + self.head = self.tail + } + self.length++ +} + +function unshift (self, item) { + self.head = new Node(item, null, self.head, self) + if (!self.tail) { + self.tail = self.head + } + self.length++ +} + +function Node (value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list) + } + + this.list = list + this.value = value + + if (prev) { + prev.next = this + this.prev = prev + } else { + this.prev = null + } + + if (next) { + next.prev = this + this.next = next + } else { + this.next = null + } +} + +try { + // add if support for Symbol.iterator is present + require('./iterator.js')(Yallist) +} catch (er) {} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..d60ff33dda --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1351 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "accepts": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", + "requires": { + "mime-types": "~2.1.6", + "negotiator": "0.5.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-url": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", + "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg=" + }, + "basic-auth": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz", + "integrity": "sha1-Awk1sB3nyblKgksp8/zLdQ06UpA=" + }, + "basic-auth-connect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=" + }, + "batch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", + "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=" + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "~2.0.0" + } + }, + "body-parser": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", + "integrity": "sha1-wIzzMMM1jhUQFqBXRvE/ApyX+pc=", + "requires": { + "bytes": "2.1.0", + "content-type": "~1.0.1", + "debug": "~2.2.0", + "depd": "~1.0.1", + "http-errors": "~1.3.1", + "iconv-lite": "0.4.11", + "on-finished": "~2.3.0", + "qs": "4.0.0", + "raw-body": "~2.1.2", + "type-is": "~1.6.6" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", + "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=" + }, + "bytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", + "integrity": "sha1-rJPEEOL/ycx89LRks4KJBn9eR7Q=" + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz", + "integrity": "sha1-sDuNhub4rSloPLqN+R3cb/x3s5U=", + "requires": { + "accepts": "~1.2.12", + "bytes": "2.1.0", + "compressible": "~2.0.5", + "debug": "~2.2.0", + "on-headers": "~1.0.0", + "vary": "~1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "connect": { + "version": "2.30.2", + "resolved": "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz", + "integrity": "sha1-jam8vooFTT0xjXTf7JA7XDmhtgk=", + "requires": { + "basic-auth-connect": "1.0.0", + "body-parser": "~1.13.3", + "bytes": "2.1.0", + "compression": "~1.5.2", + "connect-timeout": "~1.6.2", + "content-type": "~1.0.1", + "cookie": "0.1.3", + "cookie-parser": "~1.3.5", + "cookie-signature": "1.0.6", + "csurf": "~1.8.3", + "debug": "~2.2.0", + "depd": "~1.0.1", + "errorhandler": "~1.4.2", + "express-session": "~1.11.3", + "finalhandler": "0.4.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "method-override": "~2.3.5", + "morgan": "~1.6.1", + "multiparty": "3.3.2", + "on-headers": "~1.0.0", + "parseurl": "~1.3.0", + "pause": "0.1.0", + "qs": "4.0.0", + "response-time": "~2.3.1", + "serve-favicon": "~2.3.0", + "serve-index": "~1.7.2", + "serve-static": "~1.10.0", + "type-is": "~1.6.6", + "utils-merge": "1.0.0", + "vhost": "~3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "connect-timeout": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz", + "integrity": "sha1-3ppexh4zoStu2qt7XwYumMWZuI4=", + "requires": { + "debug": "~2.2.0", + "http-errors": "~1.3.1", + "ms": "0.7.1", + "on-headers": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "content-disposition": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", + "integrity": "sha1-QoT+auBjCHRjnkToCkGMKTQTXp4=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU=" + }, + "cookie-parser": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y=", + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "crc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz", + "integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo=" + }, + "create-react-app": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-react-app/-/create-react-app-4.0.3.tgz", + "integrity": "sha512-Gz/ilrPq0ehiZ+K3L4jAZXGVep6NDkAytIdiHXsE4cWJav9uHe8xzEN84i3SjMYox6yNrBaULXHAkWdn4ZBF9Q==", + "requires": { + "chalk": "4.1.0", + "commander": "4.1.1", + "cross-spawn": "7.0.3", + "envinfo": "7.7.3", + "fs-extra": "9.0.1", + "hyperquest": "2.1.3", + "prompts": "2.4.0", + "semver": "7.3.2", + "tar-pack": "3.4.1", + "tmp": "0.2.1", + "validate-npm-package-name": "3.0.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csrf": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz", + "integrity": "sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo=", + "requires": { + "rndm": "1.2.0", + "tsscmp": "1.0.5", + "uid-safe": "2.1.4" + } + }, + "csurf": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz", + "integrity": "sha1-I/KhO/HY/OHQyZZYg5RELLqGpWo=", + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "csrf": "~3.0.0", + "http-errors": "~1.3.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "requires": { + "readable-stream": "~1.1.9" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "envinfo": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", + "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==" + }, + "errorhandler": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz", + "integrity": "sha1-t7cO2PNZ6duICS8tIMD4MUIK2D8=", + "requires": { + "accepts": "~1.3.0", + "escape-html": "~1.0.3" + }, + "dependencies": { + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + } + } + }, + "escape-html": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", + "integrity": "sha1-130y+pjjjC9BroXpJ44ODmuhAiw=" + }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=" + }, + "express": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-3.21.2.tgz", + "integrity": "sha1-DCkD7lxU5j1lqWFwdkcDVQZlo94=", + "requires": { + "basic-auth": "~1.0.3", + "commander": "2.6.0", + "connect": "2.30.2", + "content-disposition": "0.5.0", + "content-type": "~1.0.1", + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "debug": "~2.2.0", + "depd": "~1.0.1", + "escape-html": "1.0.2", + "etag": "~1.7.0", + "fresh": "0.3.0", + "merge-descriptors": "1.0.0", + "methods": "~1.1.1", + "mkdirp": "0.5.1", + "parseurl": "~1.3.0", + "proxy-addr": "~1.0.8", + "range-parser": "~1.0.2", + "send": "0.13.0", + "utils-merge": "1.0.0", + "vary": "~1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", + "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=" + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "express-session": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz", + "integrity": "sha1-XMmPP1/4Ttg1+Ry/CqvQxxB0AK8=", + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "crc": "3.3.0", + "debug": "~2.2.0", + "depd": "~1.0.1", + "on-headers": "~1.0.0", + "parseurl": "~1.3.0", + "uid-safe": "~2.0.0", + "utils-merge": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "uid-safe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz", + "integrity": "sha1-p/PGymSh9qXQTsDvPkw9U2cxcTc=", + "requires": { + "base64-url": "1.2.1" + } + } + } + }, + "finalhandler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "integrity": "sha1-llpS2ejQXSuFdUhUH7ibU6JJfZs=", + "requires": { + "debug": "~2.2.0", + "escape-html": "1.0.2", + "on-finished": "~2.3.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=" + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "requires": { + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "hyperquest": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/hyperquest/-/hyperquest-2.1.3.tgz", + "integrity": "sha512-fUuDOrB47PqNK/BAMOS13v41UoaqIxqSLHX6CAbOD7OfT+/GCWO1/vPLfTNutOeXrv1ikuaZ3yux+33Z9vh+rw==", + "requires": { + "buffer-from": "^0.1.1", + "duplexer2": "~0.0.2", + "through2": "~0.6.3" + } + }, + "iconv-lite": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", + "integrity": "sha1-LstC/SlHRJIiCaLnxATayHk9it4=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ipaddr.js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", + "integrity": "sha1-X6eM8wG4JceKvDBC2BJyMEnqI8c=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", + "integrity": "sha1-IWnPdTjhsMyH+4jhUC2EdLv3mGQ=" + }, + "method-override": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.10.tgz", + "integrity": "sha1-49r41d7hDdLc59SuiNYrvud0drQ=", + "requires": { + "debug": "2.6.9", + "methods": "~1.1.2", + "parseurl": "~1.3.2", + "vary": "~1.1.2" + }, + "dependencies": { + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "morgan": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", + "integrity": "sha1-X9gYOYxoGcuiinzWZk8pL+HAu/I=", + "requires": { + "basic-auth": "~1.0.3", + "debug": "~2.2.0", + "depd": "~1.0.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multiparty": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz", + "integrity": "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8=", + "requires": { + "readable-stream": "~1.1.9", + "stream-counter": "~0.2.0" + } + }, + "myapp": { + "version": "0.0.0-1", + "resolved": "https://registry.npmjs.org/myapp/-/myapp-0.0.0-1.tgz", + "integrity": "sha1-MxAHMlw2wgv0dF9FJWnggiY3gRk=", + "requires": { + "express": "3.x" + } + }, + "negotiator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "pause": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz", + "integrity": "sha1-68ikqGGf8LioGsFRPDQ0/0af23Q=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "proxy-addr": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "integrity": "sha1-DUCoL4Afw1VWfS7LZe/j8HfxIcU=", + "requires": { + "forwarded": "~0.1.0", + "ipaddr.js": "1.0.5" + } + }, + "qs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=" + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, + "range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=" + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=" + } + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "response-time": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz", + "integrity": "sha1-/6cbq5UtYvfB1Jt0NDVfvGjf/Fo=", + "requires": { + "depd": "~1.1.0", + "on-headers": "~1.0.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + } + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "rndm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", + "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "send": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "integrity": "sha1-UY+SGusFYK7H3KspkLFM9vPM5d4=", + "requires": { + "debug": "~2.2.0", + "depd": "~1.0.1", + "destroy": "1.0.3", + "escape-html": "1.0.2", + "etag": "~1.7.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "~2.3.0", + "range-parser": "~1.0.2", + "statuses": "~1.2.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "destroy": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", + "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk=" + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=" + } + } + }, + "serve-favicon": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.2.tgz", + "integrity": "sha1-3UGeJo3gEqtysxnTN/IQUBP5OB8=", + "requires": { + "etag": "~1.7.0", + "fresh": "0.3.0", + "ms": "0.7.2", + "parseurl": "~1.3.1" + }, + "dependencies": { + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "serve-index": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz", + "integrity": "sha1-egV/xu4o3GP2RWbl+lexEahq7NI=", + "requires": { + "accepts": "~1.2.13", + "batch": "0.5.3", + "debug": "~2.2.0", + "escape-html": "~1.0.3", + "http-errors": "~1.3.1", + "mime-types": "~2.1.9", + "parseurl": "~1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "serve-static": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "integrity": "sha1-zlpuzTEB/tXsCYJ9rCKpwpv7BTU=", + "requires": { + "escape-html": "~1.0.3", + "parseurl": "~1.3.1", + "send": "0.13.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "send": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", + "requires": { + "debug": "~2.2.0", + "depd": "~1.1.0", + "destroy": "~1.0.4", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "~2.3.0", + "range-parser": "~1.0.3", + "statuses": "~1.2.1" + } + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=" + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-counter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", + "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=", + "requires": { + "readable-stream": "~1.1.8" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "tar-pack": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", + "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", + "requires": { + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "tsscmp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", + "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc=" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" + }, + "uid-safe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz", + "integrity": "sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE=", + "requires": { + "random-bytes": "~1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", + "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=" + }, + "vhost": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz", + "integrity": "sha1-L7HezUxGaqiLD5NBrzPcGv8keNU=" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000000..b4d6131a2d --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "create-react-app": "^4.0.3", + "src": "^1.1.2" + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..4c7c77a267 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,543 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@node-redis/client@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.0.tgz#25f6773c3a6997367772dc4d0eacd6e954063490" + integrity sha512-DWDMeZELXG3rOGzCKfJEHCkCP6rgiA1H+oqj2N0NR4Q0fQUYMxTsyoqt80GpdYLilUW6zoCiQl9yL3vJhGhiCA== + dependencies: + cluster-key-slot "1.1.0" + generic-pool "3.8.2" + redis-parser "3.0.0" + yallist "4.0.0" + +"@node-redis/json@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.0.tgz#11ba5882ac1f3226a8042f5de318c94bad520802" + integrity sha512-6e4qjbHODfr/KFsHYvkbfNui/kedVz+cG7Hz8oNbZM3p68QLf3A8FjcPYzixBp/QbvPeOSLgj39DjVEqjKkqkw== + +"@node-redis/search@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.0.tgz#3926c5cb0276cfa2d0ed6a92fd654743ee4ef188" + integrity sha512-f0Cw83X5+bpDIDTNSpd3YA+ckV3kwSv/NfcKhHRPGDQXFqyMLO0Q+2t8EMQncvsMRWduURsR4nqMYGzXae1ZCA== + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0" + integrity sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg== + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +cluster-key-slot@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" + integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +create-react-app@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-react-app/-/create-react-app-4.0.3.tgz#7220aa0837308f63fe0e56e65867f0bb2b6786de" + integrity sha512-Gz/ilrPq0ehiZ+K3L4jAZXGVep6NDkAytIdiHXsE4cWJav9uHe8xzEN84i3SjMYox6yNrBaULXHAkWdn4ZBF9Q== + dependencies: + chalk "4.1.0" + commander "4.1.1" + cross-spawn "7.0.3" + envinfo "7.7.3" + fs-extra "9.0.1" + hyperquest "2.1.3" + prompts "2.4.0" + semver "7.3.2" + tar-pack "3.4.1" + tmp "0.2.1" + validate-npm-package-name "3.0.0" + +cross-spawn@7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +duplexer2@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= + dependencies: + readable-stream "~1.1.9" + +envinfo@7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" + integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== + +fs-extra@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU= + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +generic-pool@3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.8.2.tgz#aab4f280adb522fdfbdc5e5b64d718d3683f04e9" + integrity sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg== + +glob@^7.1.3: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hyperquest@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/hyperquest/-/hyperquest-2.1.3.tgz#523127d7a343181b40bf324e231d2576edf52633" + integrity sha512-fUuDOrB47PqNK/BAMOS13v41UoaqIxqSLHX6CAbOD7OfT+/GCWO1/vPLfTNutOeXrv1ikuaZ3yux+33Z9vh+rw== + dependencies: + buffer-from "^0.1.1" + duplexer2 "~0.0.2" + through2 "~0.6.3" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +minimatch@^3.0.0, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +"mkdirp@>=0.5 0": + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +once@^1.3.0, once@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +prompts@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +"readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.1.4: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +redis-errors@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= + +redis-parser@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= + dependencies: + redis-errors "^1.0.0" + +redis-url@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/redis-url/-/redis-url-0.2.0.tgz#1b7a2daccc3ea8264b1fb656c0d901d9ca9c5470" + integrity sha1-G3otrMw+qCZLH7ZWwNkB2cqcVHA= + dependencies: + redis ">= 0.0.1" + +"redis@>= 0.0.1": + version "4.0.0" + resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.0.tgz#faefb8f156c231cacdd7b0ea854d91e92d3ea7d4" + integrity sha512-LtV6+h0F/e3F4mtDKKGZIl/ekEjsiqX2E0hmtNqjGqXj3wYi/nAfeVNWKRa7wFuJ+nkqwXATFGvu6h2fLCgA1A== + dependencies: + "@node-redis/client" "^1.0.0" + "@node-redis/json" "^1.0.0" + "@node-redis/search" "^1.0.0" + +rimraf@2, rimraf@^2.5.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +semver@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +src@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/src/-/src-1.1.2.tgz#78abdd1c08caca26cc6cf45bd580b56d93acfb7f" + integrity sha1-eKvdHAjKyibMbPRb1YC1bZOs+38= + dependencies: + redis-url "~0.2.0" + underscore "~1.6.0" + uuid "~1.4.1" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +tar-pack@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + integrity sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg== + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +through2@~0.6.3: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +tmp@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= + +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + integrity sha1-izixDKze9jM3uLJOT/htRa6lKag= + +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +uuid@~1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-1.4.2.tgz#453019f686966a6df83cdc5244e7c990ecc332fc" + integrity sha1-RTAZ9oaWam34PNxSROfJkOzDMvw= + +validate-npm-package-name@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +"xtend@>=4.0.0 <4.1.0-0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== From 1e8274e7a4756e2da9cd30fc7815516c3857cbd2 Mon Sep 17 00:00:00 2001 From: kmostafa599 Date: Fri, 26 Nov 2021 06:58:20 +0200 Subject: [PATCH 2/7] Modules --- my-app/src/App.css | 38 - my-app/src/App.test.js | 8 - my-app/src/actions/authedUser.js | 8 + my-app/src/actions/questions.js | 10 + my-app/src/actions/shared.js | 16 + my-app/src/actions/users.js | 10 + my-app/src/logo.svg | 1 - my-app/src/middleware/index.js | 7 + my-app/src/middleware/logger.js | 11 + my-app/src/reducers/authedUser.js | 14 + my-app/src/reducers/combineReducers.js | 10 + my-app/src/reducers/questions.js | 15 + my-app/src/reducers/users.js | 15 + my-app/src/reportWebVitals.js | 13 - my-app/src/setupTests.js | 5 - _DATA.js => my-app/src/utils/_DATA.js | 0 my-app/src/utils/api.js | 11 + node_modules/.yarn-integrity | 6 + node_modules/@babel/runtime/LICENSE | 22 + node_modules/@babel/runtime/README.md | 19 + .../@babel/runtime/helpers/AsyncGenerator.js | 99 ++ .../@babel/runtime/helpers/AwaitValue.js | 6 + .../helpers/applyDecoratedDescriptor.js | 31 + .../runtime/helpers/arrayLikeToArray.js | 12 + .../@babel/runtime/helpers/arrayWithHoles.js | 6 + .../runtime/helpers/arrayWithoutHoles.js | 8 + .../runtime/helpers/assertThisInitialized.js | 10 + .../runtime/helpers/asyncGeneratorDelegate.js | 57 ++ .../@babel/runtime/helpers/asyncIterator.js | 77 ++ .../runtime/helpers/asyncToGenerator.js | 38 + .../runtime/helpers/awaitAsyncGenerator.js | 8 + .../helpers/checkPrivateRedeclaration.js | 8 + .../classApplyDescriptorDestructureSet.js | 23 + .../helpers/classApplyDescriptorGet.js | 10 + .../helpers/classApplyDescriptorSet.js | 14 + .../@babel/runtime/helpers/classCallCheck.js | 8 + .../helpers/classCheckPrivateStaticAccess.js | 8 + .../classCheckPrivateStaticFieldDescriptor.js | 8 + .../helpers/classExtractFieldDescriptor.js | 10 + .../runtime/helpers/classNameTDZError.js | 6 + .../classPrivateFieldDestructureSet.js | 11 + .../runtime/helpers/classPrivateFieldGet.js | 11 + .../helpers/classPrivateFieldInitSpec.js | 9 + .../helpers/classPrivateFieldLooseBase.js | 10 + .../helpers/classPrivateFieldLooseKey.js | 8 + .../runtime/helpers/classPrivateFieldSet.js | 12 + .../runtime/helpers/classPrivateMethodGet.js | 10 + .../helpers/classPrivateMethodInitSpec.js | 9 + .../runtime/helpers/classPrivateMethodSet.js | 6 + .../classStaticPrivateFieldDestructureSet.js | 14 + .../helpers/classStaticPrivateFieldSpecGet.js | 14 + .../helpers/classStaticPrivateFieldSpecSet.js | 15 + .../helpers/classStaticPrivateMethodGet.js | 9 + .../helpers/classStaticPrivateMethodSet.js | 6 + .../@babel/runtime/helpers/construct.js | 26 + .../@babel/runtime/helpers/createClass.js | 18 + .../helpers/createForOfIteratorHelper.js | 61 ++ .../helpers/createForOfIteratorHelperLoose.js | 25 + .../@babel/runtime/helpers/createSuper.js | 25 + .../@babel/runtime/helpers/decorate.js | 401 ++++++++ .../@babel/runtime/helpers/defaults.js | 17 + .../helpers/defineEnumerableProperties.js | 25 + .../@babel/runtime/helpers/defineProperty.js | 17 + .../runtime/helpers/esm/AsyncGenerator.js | 95 ++ .../@babel/runtime/helpers/esm/AwaitValue.js | 3 + .../helpers/esm/applyDecoratedDescriptor.js | 28 + .../runtime/helpers/esm/arrayLikeToArray.js | 9 + .../runtime/helpers/esm/arrayWithHoles.js | 3 + .../runtime/helpers/esm/arrayWithoutHoles.js | 4 + .../helpers/esm/assertThisInitialized.js | 7 + .../helpers/esm/asyncGeneratorDelegate.js | 54 ++ .../runtime/helpers/esm/asyncIterator.js | 74 ++ .../runtime/helpers/esm/asyncToGenerator.js | 35 + .../helpers/esm/awaitAsyncGenerator.js | 4 + .../helpers/esm/checkPrivateRedeclaration.js | 5 + .../esm/classApplyDescriptorDestructureSet.js | 20 + .../helpers/esm/classApplyDescriptorGet.js | 7 + .../helpers/esm/classApplyDescriptorSet.js | 11 + .../runtime/helpers/esm/classCallCheck.js | 5 + .../esm/classCheckPrivateStaticAccess.js | 5 + .../classCheckPrivateStaticFieldDescriptor.js | 5 + .../esm/classExtractFieldDescriptor.js | 7 + .../runtime/helpers/esm/classNameTDZError.js | 3 + .../esm/classPrivateFieldDestructureSet.js | 6 + .../helpers/esm/classPrivateFieldGet.js | 6 + .../helpers/esm/classPrivateFieldInitSpec.js | 5 + .../helpers/esm/classPrivateFieldLooseBase.js | 7 + .../helpers/esm/classPrivateFieldLooseKey.js | 4 + .../helpers/esm/classPrivateFieldSet.js | 7 + .../helpers/esm/classPrivateMethodGet.js | 7 + .../helpers/esm/classPrivateMethodInitSpec.js | 5 + .../helpers/esm/classPrivateMethodSet.js | 3 + .../classStaticPrivateFieldDestructureSet.js | 8 + .../esm/classStaticPrivateFieldSpecGet.js | 8 + .../esm/classStaticPrivateFieldSpecSet.js | 9 + .../esm/classStaticPrivateMethodGet.js | 5 + .../esm/classStaticPrivateMethodSet.js | 3 + .../@babel/runtime/helpers/esm/construct.js | 18 + .../@babel/runtime/helpers/esm/createClass.js | 15 + .../helpers/esm/createForOfIteratorHelper.js | 57 ++ .../esm/createForOfIteratorHelperLoose.js | 21 + .../@babel/runtime/helpers/esm/createSuper.js | 19 + .../@babel/runtime/helpers/esm/decorate.js | 396 ++++++++ .../@babel/runtime/helpers/esm/defaults.js | 14 + .../helpers/esm/defineEnumerableProperties.js | 22 + .../runtime/helpers/esm/defineProperty.js | 14 + .../@babel/runtime/helpers/esm/extends.js | 17 + .../@babel/runtime/helpers/esm/get.js | 20 + .../runtime/helpers/esm/getPrototypeOf.js | 6 + .../@babel/runtime/helpers/esm/inherits.js | 15 + .../runtime/helpers/esm/inheritsLoose.js | 6 + .../helpers/esm/initializerDefineProperty.js | 9 + .../helpers/esm/initializerWarningHelper.js | 3 + .../@babel/runtime/helpers/esm/instanceof.js | 7 + .../helpers/esm/interopRequireDefault.js | 5 + .../helpers/esm/interopRequireWildcard.js | 51 ++ .../runtime/helpers/esm/isNativeFunction.js | 3 + .../helpers/esm/isNativeReflectConstruct.js | 12 + .../runtime/helpers/esm/iterableToArray.js | 3 + .../helpers/esm/iterableToArrayLimit.js | 29 + .../helpers/esm/iterableToArrayLimitLoose.js | 14 + .../@babel/runtime/helpers/esm/jsx.js | 46 + .../runtime/helpers/esm/maybeArrayLike.js | 9 + .../runtime/helpers/esm/newArrowCheck.js | 5 + .../runtime/helpers/esm/nonIterableRest.js | 3 + .../runtime/helpers/esm/nonIterableSpread.js | 3 + .../helpers/esm/objectDestructuringEmpty.js | 3 + .../runtime/helpers/esm/objectSpread.js | 19 + .../runtime/helpers/esm/objectSpread2.js | 39 + .../helpers/esm/objectWithoutProperties.js | 19 + .../esm/objectWithoutPropertiesLoose.js | 14 + .../@babel/runtime/helpers/esm/package.json | 3 + .../helpers/esm/possibleConstructorReturn.js | 11 + .../runtime/helpers/esm/readOnlyError.js | 3 + .../@babel/runtime/helpers/esm/set.js | 51 ++ .../runtime/helpers/esm/setPrototypeOf.js | 8 + .../helpers/esm/skipFirstGeneratorNext.js | 7 + .../runtime/helpers/esm/slicedToArray.js | 7 + .../runtime/helpers/esm/slicedToArrayLoose.js | 7 + .../runtime/helpers/esm/superPropBase.js | 9 + .../helpers/esm/taggedTemplateLiteral.js | 11 + .../helpers/esm/taggedTemplateLiteralLoose.js | 8 + .../@babel/runtime/helpers/esm/tdz.js | 3 + .../@babel/runtime/helpers/esm/temporalRef.js | 5 + .../runtime/helpers/esm/temporalUndefined.js | 1 + .../@babel/runtime/helpers/esm/toArray.js | 7 + .../runtime/helpers/esm/toConsumableArray.js | 7 + .../@babel/runtime/helpers/esm/toPrimitive.js | 13 + .../runtime/helpers/esm/toPropertyKey.js | 6 + .../@babel/runtime/helpers/esm/typeof.js | 15 + .../helpers/esm/unsupportedIterableToArray.js | 9 + .../runtime/helpers/esm/wrapAsyncGenerator.js | 6 + .../runtime/helpers/esm/wrapNativeSuper.js | 37 + .../@babel/runtime/helpers/esm/wrapRegExp.js | 65 ++ .../runtime/helpers/esm/writeOnlyError.js | 3 + .../@babel/runtime/helpers/extends.js | 21 + node_modules/@babel/runtime/helpers/get.js | 27 + .../@babel/runtime/helpers/getPrototypeOf.js | 10 + .../@babel/runtime/helpers/inherits.js | 19 + .../@babel/runtime/helpers/inheritsLoose.js | 10 + .../helpers/initializerDefineProperty.js | 12 + .../helpers/initializerWarningHelper.js | 6 + .../@babel/runtime/helpers/instanceof.js | 10 + .../runtime/helpers/interopRequireDefault.js | 8 + .../runtime/helpers/interopRequireWildcard.js | 54 ++ .../runtime/helpers/isNativeFunction.js | 6 + .../helpers/isNativeReflectConstruct.js | 15 + .../@babel/runtime/helpers/iterableToArray.js | 6 + .../runtime/helpers/iterableToArrayLimit.js | 32 + .../helpers/iterableToArrayLimitLoose.js | 17 + node_modules/@babel/runtime/helpers/jsx.js | 50 + .../@babel/runtime/helpers/maybeArrayLike.js | 13 + .../@babel/runtime/helpers/newArrowCheck.js | 8 + .../@babel/runtime/helpers/nonIterableRest.js | 6 + .../runtime/helpers/nonIterableSpread.js | 6 + .../helpers/objectDestructuringEmpty.js | 6 + .../@babel/runtime/helpers/objectSpread.js | 23 + .../@babel/runtime/helpers/objectSpread2.js | 42 + .../helpers/objectWithoutProperties.js | 23 + .../helpers/objectWithoutPropertiesLoose.js | 17 + .../helpers/possibleConstructorReturn.js | 16 + .../@babel/runtime/helpers/readOnlyError.js | 6 + node_modules/@babel/runtime/helpers/set.js | 55 ++ .../@babel/runtime/helpers/setPrototypeOf.js | 12 + .../runtime/helpers/skipFirstGeneratorNext.js | 10 + .../@babel/runtime/helpers/slicedToArray.js | 14 + .../runtime/helpers/slicedToArrayLoose.js | 14 + .../@babel/runtime/helpers/superPropBase.js | 13 + .../runtime/helpers/taggedTemplateLiteral.js | 14 + .../helpers/taggedTemplateLiteralLoose.js | 11 + node_modules/@babel/runtime/helpers/tdz.js | 6 + .../@babel/runtime/helpers/temporalRef.js | 10 + .../runtime/helpers/temporalUndefined.js | 4 + .../@babel/runtime/helpers/toArray.js | 14 + .../runtime/helpers/toConsumableArray.js | 14 + .../@babel/runtime/helpers/toPrimitive.js | 17 + .../@babel/runtime/helpers/toPropertyKey.js | 11 + node_modules/@babel/runtime/helpers/typeof.js | 22 + .../helpers/unsupportedIterableToArray.js | 13 + .../runtime/helpers/wrapAsyncGenerator.js | 10 + .../@babel/runtime/helpers/wrapNativeSuper.js | 45 + .../@babel/runtime/helpers/wrapRegExp.js | 72 ++ .../@babel/runtime/helpers/writeOnlyError.js | 6 + node_modules/@babel/runtime/package.json | 848 +++++++++++++++++ .../@babel/runtime/regenerator/index.js | 1 + node_modules/redux-thunk/LICENSE.md | 21 + node_modules/redux-thunk/README.md | 407 +++++++++ node_modules/redux-thunk/dist/redux-thunk.js | 41 + .../redux-thunk/dist/redux-thunk.min.js | 1 + node_modules/redux-thunk/es/index.d.ts | 7 + node_modules/redux-thunk/es/index.js | 32 + node_modules/redux-thunk/es/types.d.ts | 50 + node_modules/redux-thunk/extend-redux.d.ts | 42 + node_modules/redux-thunk/lib/index.js | 40 + node_modules/redux-thunk/package.json | 76 ++ node_modules/redux-thunk/src/index.ts | 53 ++ node_modules/redux-thunk/src/types.ts | 87 ++ node_modules/redux/CHANGELOG.md | 4 + node_modules/redux/LICENSE.md | 21 + node_modules/redux/README.md | 322 +++++++ node_modules/redux/dist/redux.js | 735 +++++++++++++++ node_modules/redux/dist/redux.min.js | 1 + node_modules/redux/es/redux.js | 684 ++++++++++++++ node_modules/redux/es/redux.mjs | 1 + node_modules/redux/index.d.ts | 676 ++++++++++++++ node_modules/redux/lib/redux.js | 697 ++++++++++++++ node_modules/redux/package.json | 108 +++ node_modules/redux/src/applyMiddleware.js | 41 + node_modules/redux/src/bindActionCreators.js | 52 ++ node_modules/redux/src/combineReducers.js | 175 ++++ node_modules/redux/src/compose.js | 22 + node_modules/redux/src/createStore.js | 315 +++++++ node_modules/redux/src/index.js | 36 + node_modules/redux/src/utils/actionTypes.js | 17 + .../redux/src/utils/formatProdErrorMessage.js | 15 + node_modules/redux/src/utils/isPlainObject.js | 14 + node_modules/redux/src/utils/kindOf.js | 70 ++ .../redux/src/utils/symbol-observable.js | 3 + node_modules/redux/src/utils/warning.js | 19 + node_modules/regenerator-runtime/LICENSE | 21 + node_modules/regenerator-runtime/README.md | 31 + node_modules/regenerator-runtime/package.json | 19 + node_modules/regenerator-runtime/path.js | 11 + node_modules/regenerator-runtime/runtime.js | 754 +++++++++++++++ package-lock.json | 855 +----------------- package.json | 2 + yarn-error.log | 575 ++++++++++++ yarn.lock | 24 + 248 files changed, 11127 insertions(+), 905 deletions(-) delete mode 100644 my-app/src/App.css delete mode 100644 my-app/src/App.test.js create mode 100644 my-app/src/actions/authedUser.js create mode 100644 my-app/src/actions/questions.js create mode 100644 my-app/src/actions/shared.js create mode 100644 my-app/src/actions/users.js delete mode 100644 my-app/src/logo.svg create mode 100644 my-app/src/middleware/index.js create mode 100644 my-app/src/middleware/logger.js create mode 100644 my-app/src/reducers/authedUser.js create mode 100644 my-app/src/reducers/combineReducers.js create mode 100644 my-app/src/reducers/questions.js create mode 100644 my-app/src/reducers/users.js delete mode 100644 my-app/src/reportWebVitals.js delete mode 100644 my-app/src/setupTests.js rename _DATA.js => my-app/src/utils/_DATA.js (100%) mode change 100755 => 100644 create mode 100644 my-app/src/utils/api.js create mode 100644 node_modules/@babel/runtime/LICENSE create mode 100644 node_modules/@babel/runtime/README.md create mode 100644 node_modules/@babel/runtime/helpers/AsyncGenerator.js create mode 100644 node_modules/@babel/runtime/helpers/AwaitValue.js create mode 100644 node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js create mode 100644 node_modules/@babel/runtime/helpers/arrayLikeToArray.js create mode 100644 node_modules/@babel/runtime/helpers/arrayWithHoles.js create mode 100644 node_modules/@babel/runtime/helpers/arrayWithoutHoles.js create mode 100644 node_modules/@babel/runtime/helpers/assertThisInitialized.js create mode 100644 node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js create mode 100644 node_modules/@babel/runtime/helpers/asyncIterator.js create mode 100644 node_modules/@babel/runtime/helpers/asyncToGenerator.js create mode 100644 node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js create mode 100644 node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js create mode 100644 node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js create mode 100644 node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js create mode 100644 node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js create mode 100644 node_modules/@babel/runtime/helpers/classCallCheck.js create mode 100644 node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js create mode 100644 node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js create mode 100644 node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js create mode 100644 node_modules/@babel/runtime/helpers/classNameTDZError.js create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldGet.js create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldSet.js create mode 100644 node_modules/@babel/runtime/helpers/classPrivateMethodGet.js create mode 100644 node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js create mode 100644 node_modules/@babel/runtime/helpers/classPrivateMethodSet.js create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js create mode 100644 node_modules/@babel/runtime/helpers/construct.js create mode 100644 node_modules/@babel/runtime/helpers/createClass.js create mode 100644 node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js create mode 100644 node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js create mode 100644 node_modules/@babel/runtime/helpers/createSuper.js create mode 100644 node_modules/@babel/runtime/helpers/decorate.js create mode 100644 node_modules/@babel/runtime/helpers/defaults.js create mode 100644 node_modules/@babel/runtime/helpers/defineEnumerableProperties.js create mode 100644 node_modules/@babel/runtime/helpers/defineProperty.js create mode 100644 node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js create mode 100644 node_modules/@babel/runtime/helpers/esm/AwaitValue.js create mode 100644 node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js create mode 100644 node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js create mode 100644 node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js create mode 100644 node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js create mode 100644 node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js create mode 100644 node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js create mode 100644 node_modules/@babel/runtime/helpers/esm/asyncIterator.js create mode 100644 node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js create mode 100644 node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js create mode 100644 node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classCallCheck.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classNameTDZError.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js create mode 100644 node_modules/@babel/runtime/helpers/esm/construct.js create mode 100644 node_modules/@babel/runtime/helpers/esm/createClass.js create mode 100644 node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js create mode 100644 node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js create mode 100644 node_modules/@babel/runtime/helpers/esm/createSuper.js create mode 100644 node_modules/@babel/runtime/helpers/esm/decorate.js create mode 100644 node_modules/@babel/runtime/helpers/esm/defaults.js create mode 100644 node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js create mode 100644 node_modules/@babel/runtime/helpers/esm/defineProperty.js create mode 100644 node_modules/@babel/runtime/helpers/esm/extends.js create mode 100644 node_modules/@babel/runtime/helpers/esm/get.js create mode 100644 node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js create mode 100644 node_modules/@babel/runtime/helpers/esm/inherits.js create mode 100644 node_modules/@babel/runtime/helpers/esm/inheritsLoose.js create mode 100644 node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js create mode 100644 node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js create mode 100644 node_modules/@babel/runtime/helpers/esm/instanceof.js create mode 100644 node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js create mode 100644 node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js create mode 100644 node_modules/@babel/runtime/helpers/esm/isNativeFunction.js create mode 100644 node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js create mode 100644 node_modules/@babel/runtime/helpers/esm/iterableToArray.js create mode 100644 node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js create mode 100644 node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js create mode 100644 node_modules/@babel/runtime/helpers/esm/jsx.js create mode 100644 node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js create mode 100644 node_modules/@babel/runtime/helpers/esm/newArrowCheck.js create mode 100644 node_modules/@babel/runtime/helpers/esm/nonIterableRest.js create mode 100644 node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js create mode 100644 node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js create mode 100644 node_modules/@babel/runtime/helpers/esm/objectSpread.js create mode 100644 node_modules/@babel/runtime/helpers/esm/objectSpread2.js create mode 100644 node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js create mode 100644 node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js create mode 100644 node_modules/@babel/runtime/helpers/esm/package.json create mode 100644 node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js create mode 100644 node_modules/@babel/runtime/helpers/esm/readOnlyError.js create mode 100644 node_modules/@babel/runtime/helpers/esm/set.js create mode 100644 node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js create mode 100644 node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js create mode 100644 node_modules/@babel/runtime/helpers/esm/slicedToArray.js create mode 100644 node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js create mode 100644 node_modules/@babel/runtime/helpers/esm/superPropBase.js create mode 100644 node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js create mode 100644 node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js create mode 100644 node_modules/@babel/runtime/helpers/esm/tdz.js create mode 100644 node_modules/@babel/runtime/helpers/esm/temporalRef.js create mode 100644 node_modules/@babel/runtime/helpers/esm/temporalUndefined.js create mode 100644 node_modules/@babel/runtime/helpers/esm/toArray.js create mode 100644 node_modules/@babel/runtime/helpers/esm/toConsumableArray.js create mode 100644 node_modules/@babel/runtime/helpers/esm/toPrimitive.js create mode 100644 node_modules/@babel/runtime/helpers/esm/toPropertyKey.js create mode 100644 node_modules/@babel/runtime/helpers/esm/typeof.js create mode 100644 node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js create mode 100644 node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js create mode 100644 node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js create mode 100644 node_modules/@babel/runtime/helpers/esm/wrapRegExp.js create mode 100644 node_modules/@babel/runtime/helpers/esm/writeOnlyError.js create mode 100644 node_modules/@babel/runtime/helpers/extends.js create mode 100644 node_modules/@babel/runtime/helpers/get.js create mode 100644 node_modules/@babel/runtime/helpers/getPrototypeOf.js create mode 100644 node_modules/@babel/runtime/helpers/inherits.js create mode 100644 node_modules/@babel/runtime/helpers/inheritsLoose.js create mode 100644 node_modules/@babel/runtime/helpers/initializerDefineProperty.js create mode 100644 node_modules/@babel/runtime/helpers/initializerWarningHelper.js create mode 100644 node_modules/@babel/runtime/helpers/instanceof.js create mode 100644 node_modules/@babel/runtime/helpers/interopRequireDefault.js create mode 100644 node_modules/@babel/runtime/helpers/interopRequireWildcard.js create mode 100644 node_modules/@babel/runtime/helpers/isNativeFunction.js create mode 100644 node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js create mode 100644 node_modules/@babel/runtime/helpers/iterableToArray.js create mode 100644 node_modules/@babel/runtime/helpers/iterableToArrayLimit.js create mode 100644 node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js create mode 100644 node_modules/@babel/runtime/helpers/jsx.js create mode 100644 node_modules/@babel/runtime/helpers/maybeArrayLike.js create mode 100644 node_modules/@babel/runtime/helpers/newArrowCheck.js create mode 100644 node_modules/@babel/runtime/helpers/nonIterableRest.js create mode 100644 node_modules/@babel/runtime/helpers/nonIterableSpread.js create mode 100644 node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js create mode 100644 node_modules/@babel/runtime/helpers/objectSpread.js create mode 100644 node_modules/@babel/runtime/helpers/objectSpread2.js create mode 100644 node_modules/@babel/runtime/helpers/objectWithoutProperties.js create mode 100644 node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js create mode 100644 node_modules/@babel/runtime/helpers/possibleConstructorReturn.js create mode 100644 node_modules/@babel/runtime/helpers/readOnlyError.js create mode 100644 node_modules/@babel/runtime/helpers/set.js create mode 100644 node_modules/@babel/runtime/helpers/setPrototypeOf.js create mode 100644 node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js create mode 100644 node_modules/@babel/runtime/helpers/slicedToArray.js create mode 100644 node_modules/@babel/runtime/helpers/slicedToArrayLoose.js create mode 100644 node_modules/@babel/runtime/helpers/superPropBase.js create mode 100644 node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js create mode 100644 node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js create mode 100644 node_modules/@babel/runtime/helpers/tdz.js create mode 100644 node_modules/@babel/runtime/helpers/temporalRef.js create mode 100644 node_modules/@babel/runtime/helpers/temporalUndefined.js create mode 100644 node_modules/@babel/runtime/helpers/toArray.js create mode 100644 node_modules/@babel/runtime/helpers/toConsumableArray.js create mode 100644 node_modules/@babel/runtime/helpers/toPrimitive.js create mode 100644 node_modules/@babel/runtime/helpers/toPropertyKey.js create mode 100644 node_modules/@babel/runtime/helpers/typeof.js create mode 100644 node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js create mode 100644 node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js create mode 100644 node_modules/@babel/runtime/helpers/wrapNativeSuper.js create mode 100644 node_modules/@babel/runtime/helpers/wrapRegExp.js create mode 100644 node_modules/@babel/runtime/helpers/writeOnlyError.js create mode 100644 node_modules/@babel/runtime/package.json create mode 100644 node_modules/@babel/runtime/regenerator/index.js create mode 100644 node_modules/redux-thunk/LICENSE.md create mode 100644 node_modules/redux-thunk/README.md create mode 100644 node_modules/redux-thunk/dist/redux-thunk.js create mode 100644 node_modules/redux-thunk/dist/redux-thunk.min.js create mode 100644 node_modules/redux-thunk/es/index.d.ts create mode 100644 node_modules/redux-thunk/es/index.js create mode 100644 node_modules/redux-thunk/es/types.d.ts create mode 100644 node_modules/redux-thunk/extend-redux.d.ts create mode 100644 node_modules/redux-thunk/lib/index.js create mode 100644 node_modules/redux-thunk/package.json create mode 100644 node_modules/redux-thunk/src/index.ts create mode 100644 node_modules/redux-thunk/src/types.ts create mode 100644 node_modules/redux/CHANGELOG.md create mode 100644 node_modules/redux/LICENSE.md create mode 100644 node_modules/redux/README.md create mode 100644 node_modules/redux/dist/redux.js create mode 100644 node_modules/redux/dist/redux.min.js create mode 100644 node_modules/redux/es/redux.js create mode 100644 node_modules/redux/es/redux.mjs create mode 100644 node_modules/redux/index.d.ts create mode 100644 node_modules/redux/lib/redux.js create mode 100644 node_modules/redux/package.json create mode 100644 node_modules/redux/src/applyMiddleware.js create mode 100644 node_modules/redux/src/bindActionCreators.js create mode 100644 node_modules/redux/src/combineReducers.js create mode 100644 node_modules/redux/src/compose.js create mode 100644 node_modules/redux/src/createStore.js create mode 100644 node_modules/redux/src/index.js create mode 100644 node_modules/redux/src/utils/actionTypes.js create mode 100644 node_modules/redux/src/utils/formatProdErrorMessage.js create mode 100644 node_modules/redux/src/utils/isPlainObject.js create mode 100644 node_modules/redux/src/utils/kindOf.js create mode 100644 node_modules/redux/src/utils/symbol-observable.js create mode 100644 node_modules/redux/src/utils/warning.js create mode 100644 node_modules/regenerator-runtime/LICENSE create mode 100644 node_modules/regenerator-runtime/README.md create mode 100644 node_modules/regenerator-runtime/package.json create mode 100644 node_modules/regenerator-runtime/path.js create mode 100644 node_modules/regenerator-runtime/runtime.js create mode 100644 yarn-error.log diff --git a/my-app/src/App.css b/my-app/src/App.css deleted file mode 100644 index 74b5e05345..0000000000 --- a/my-app/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/my-app/src/App.test.js b/my-app/src/App.test.js deleted file mode 100644 index 1f03afeece..0000000000 --- a/my-app/src/App.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/my-app/src/actions/authedUser.js b/my-app/src/actions/authedUser.js new file mode 100644 index 0000000000..cd7a9f0e34 --- /dev/null +++ b/my-app/src/actions/authedUser.js @@ -0,0 +1,8 @@ +export const SET_AUTHED_USER = 'SET_AUTHED_USER' + +export function setAuthedUser(id){ + return { + type:SET_AUTHED_USER, + id, + } +} \ No newline at end of file diff --git a/my-app/src/actions/questions.js b/my-app/src/actions/questions.js new file mode 100644 index 0000000000..237f4a37ec --- /dev/null +++ b/my-app/src/actions/questions.js @@ -0,0 +1,10 @@ +//action type +const RECEIVE_QUESTIONS = 'RECEIVE_QUESTIONS' +//action creator +export function receiveQuestions(questions){ + return{ + RECEIVE_QUESTIONS, + questions, + } + +} \ No newline at end of file diff --git a/my-app/src/actions/shared.js b/my-app/src/actions/shared.js new file mode 100644 index 0000000000..4a6f786fe1 --- /dev/null +++ b/my-app/src/actions/shared.js @@ -0,0 +1,16 @@ +import { getIntialData } from "../utils/api" +import { receiveUsers } from "./users" +import { receiveQuestions } from "./questions" +import { setAuthedUser } from "./authedUser" + + +const AUTHED_ID = 'kareem' +export function handleInitialData(){ + return (dispatch)=>{ + return getIntialData().then(([users, questions])=>{ + dispatch(receiveUsers(users)) + dispatch(receiveQuestions(questions)) + dispatch(setAuthedUser(AUTHED_ID)) + }) + } +} \ No newline at end of file diff --git a/my-app/src/actions/users.js b/my-app/src/actions/users.js new file mode 100644 index 0000000000..7b5a29754a --- /dev/null +++ b/my-app/src/actions/users.js @@ -0,0 +1,10 @@ +//action type +export const RECEIVE_USERS = 'RECEIVE_USERS' +//action creator +export function receiveUsers(id){ + return{ + RECEIVE_USERS, + id, + } + +} \ No newline at end of file diff --git a/my-app/src/logo.svg b/my-app/src/logo.svg deleted file mode 100644 index 9dfc1c058c..0000000000 --- a/my-app/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/my-app/src/middleware/index.js b/my-app/src/middleware/index.js new file mode 100644 index 0000000000..172a2aaf29 --- /dev/null +++ b/my-app/src/middleware/index.js @@ -0,0 +1,7 @@ +import logger from "./logger"; +import { applyMiddleware } from "redux"; +import {thunk} from 'redux-thunk' +applyMiddleware({ + thunk, + logger, +}) \ No newline at end of file diff --git a/my-app/src/middleware/logger.js b/my-app/src/middleware/logger.js new file mode 100644 index 0000000000..c9088d043e --- /dev/null +++ b/my-app/src/middleware/logger.js @@ -0,0 +1,11 @@ +//middleware pattern +const logger = (store) =>(next) =>(action) =>{ + console.group(action.type); + console.log("Action",action); + console.log("Prev State",store.getState()); + const returnedValue=next(action) + console.log("New State",store.getState()); + console.groupEnd() + return returnedValue; +} +export default logger \ No newline at end of file diff --git a/my-app/src/reducers/authedUser.js b/my-app/src/reducers/authedUser.js new file mode 100644 index 0000000000..c21896df40 --- /dev/null +++ b/my-app/src/reducers/authedUser.js @@ -0,0 +1,14 @@ +//this import for action type only and it is not necessary +import { SET_AUTHED_USER } from "../actions/authedUser"; + +export function authedUser(state ={}, action){ + switch(action.type){ + case SET_AUTHED_USER: + return{ + ...state, + ...action.id + } + default: + state; + } +} \ No newline at end of file diff --git a/my-app/src/reducers/combineReducers.js b/my-app/src/reducers/combineReducers.js new file mode 100644 index 0000000000..7927232711 --- /dev/null +++ b/my-app/src/reducers/combineReducers.js @@ -0,0 +1,10 @@ +import { users } from "./users"; +import { questions } from "./questions"; +import { authedUser } from "./authedUser"; +import { combineReducers } from "redux"; + +combineReducers({ + users, + questions, + authedUser, +}) \ No newline at end of file diff --git a/my-app/src/reducers/questions.js b/my-app/src/reducers/questions.js new file mode 100644 index 0000000000..6e79468f79 --- /dev/null +++ b/my-app/src/reducers/questions.js @@ -0,0 +1,15 @@ +import { RECEIVE_QUESTIONS } from "../actions/questions"; + +export function questions(state={},action){ + switch(action.type){ + case RECEIVE_QUESTIONS: + return{ + ...state, + ...action.questions, + } + + default: + return state; + } + +} \ No newline at end of file diff --git a/my-app/src/reducers/users.js b/my-app/src/reducers/users.js new file mode 100644 index 0000000000..ef2eede62c --- /dev/null +++ b/my-app/src/reducers/users.js @@ -0,0 +1,15 @@ +import { RECEIVE_USERS } from "../actions/users"; + +export function users(state={},action){ + switch(action.type){ + case RECEIVE_USERS: + return{ + ...state, + ...action.id, + } + + default: + return state; + } + +} \ No newline at end of file diff --git a/my-app/src/reportWebVitals.js b/my-app/src/reportWebVitals.js deleted file mode 100644 index 5253d3ad9e..0000000000 --- a/my-app/src/reportWebVitals.js +++ /dev/null @@ -1,13 +0,0 @@ -const reportWebVitals = onPerfEntry => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { - getCLS(onPerfEntry); - getFID(onPerfEntry); - getFCP(onPerfEntry); - getLCP(onPerfEntry); - getTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/my-app/src/setupTests.js b/my-app/src/setupTests.js deleted file mode 100644 index 8f2609b7b3..0000000000 --- a/my-app/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; diff --git a/_DATA.js b/my-app/src/utils/_DATA.js old mode 100755 new mode 100644 similarity index 100% rename from _DATA.js rename to my-app/src/utils/_DATA.js diff --git a/my-app/src/utils/api.js b/my-app/src/utils/api.js new file mode 100644 index 0000000000..de0ea30d1e --- /dev/null +++ b/my-app/src/utils/api.js @@ -0,0 +1,11 @@ +import { _getUsers,_getQuestions } from "./_DATA"; + +export function getIntialData(){ + return Promise.all([ + _getUsers(), + _getQuestions(), + ]).then(([users, questions]) => ({ + users, + questions + })) +} \ No newline at end of file diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity index b2210edb02..3c019b23c5 100644 --- a/node_modules/.yarn-integrity +++ b/node_modules/.yarn-integrity @@ -7,9 +7,12 @@ "linkedModules": [], "topLevelPatterns": [ "create-react-app@^4.0.3", + "redux-thunk@^2.4.0", + "redux@^4.1.2", "src@^1.1.2" ], "lockfileEntries": { + "@babel/runtime@^7.9.2": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5", "@node-redis/client@^1.0.0": "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.0.tgz#25f6773c3a6997367772dc4d0eacd6e954063490", "@node-redis/json@^1.0.0": "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.0.tgz#11ba5882ac1f3226a8042f5de318c94bad520802", "@node-redis/search@^1.0.0": "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.0.tgz#3926c5cb0276cfa2d0ed6a92fd654743ee4ef188", @@ -73,6 +76,9 @@ "redis-parser@3.0.0": "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4", "redis-url@~0.2.0": "https://registry.yarnpkg.com/redis-url/-/redis-url-0.2.0.tgz#1b7a2daccc3ea8264b1fb656c0d901d9ca9c5470", "redis@>= 0.0.1": "https://registry.yarnpkg.com/redis/-/redis-4.0.0.tgz#faefb8f156c231cacdd7b0ea854d91e92d3ea7d4", + "redux-thunk@^2.4.0": "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.0.tgz#ac89e1d6b9bdb9ee49ce69a69071be41bbd82d67", + "redux@^4.1.2": "https://registry.yarnpkg.com/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104", + "regenerator-runtime@^0.13.4": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52", "rimraf@2": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec", "rimraf@^2.5.1": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec", "rimraf@^3.0.0": "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a", diff --git a/node_modules/@babel/runtime/LICENSE b/node_modules/@babel/runtime/LICENSE new file mode 100644 index 0000000000..f31575ec77 --- /dev/null +++ b/node_modules/@babel/runtime/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@babel/runtime/README.md b/node_modules/@babel/runtime/README.md new file mode 100644 index 0000000000..119c99d95d --- /dev/null +++ b/node_modules/@babel/runtime/README.md @@ -0,0 +1,19 @@ +# @babel/runtime + +> babel's modular runtime helpers + +See our website [@babel/runtime](https://babeljs.io/docs/en/babel-runtime) for more information. + +## Install + +Using npm: + +```sh +npm install --save @babel/runtime +``` + +or using yarn: + +```sh +yarn add @babel/runtime +``` diff --git a/node_modules/@babel/runtime/helpers/AsyncGenerator.js b/node_modules/@babel/runtime/helpers/AsyncGenerator.js new file mode 100644 index 0000000000..cdca7f5505 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/AsyncGenerator.js @@ -0,0 +1,99 @@ +var AwaitValue = require("./AwaitValue.js"); + +function AsyncGenerator(gen) { + var front, back; + + function send(key, arg) { + return new Promise(function (resolve, reject) { + var request = { + key: key, + arg: arg, + resolve: resolve, + reject: reject, + next: null + }; + + if (back) { + back = back.next = request; + } else { + front = back = request; + resume(key, arg); + } + }); + } + + function resume(key, arg) { + try { + var result = gen[key](arg); + var value = result.value; + var wrappedAwait = value instanceof AwaitValue; + Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) { + if (wrappedAwait) { + resume(key === "return" ? "return" : "next", arg); + return; + } + + settle(result.done ? "return" : "normal", arg); + }, function (err) { + resume("throw", err); + }); + } catch (err) { + settle("throw", err); + } + } + + function settle(type, value) { + switch (type) { + case "return": + front.resolve({ + value: value, + done: true + }); + break; + + case "throw": + front.reject(value); + break; + + default: + front.resolve({ + value: value, + done: false + }); + break; + } + + front = front.next; + + if (front) { + resume(front.key, front.arg); + } else { + back = null; + } + } + + this._invoke = send; + + if (typeof gen["return"] !== "function") { + this["return"] = undefined; + } +} + +AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () { + return this; +}; + +AsyncGenerator.prototype.next = function (arg) { + return this._invoke("next", arg); +}; + +AsyncGenerator.prototype["throw"] = function (arg) { + return this._invoke("throw", arg); +}; + +AsyncGenerator.prototype["return"] = function (arg) { + return this._invoke("return", arg); +}; + +module.exports = AsyncGenerator; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/AwaitValue.js b/node_modules/@babel/runtime/helpers/AwaitValue.js new file mode 100644 index 0000000000..d36df6ec3c --- /dev/null +++ b/node_modules/@babel/runtime/helpers/AwaitValue.js @@ -0,0 +1,6 @@ +function _AwaitValue(value) { + this.wrapped = value; +} + +module.exports = _AwaitValue; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js b/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js new file mode 100644 index 0000000000..feaeab8d26 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js @@ -0,0 +1,31 @@ +function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach(function (key) { + desc[key] = descriptor[key]; + }); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + + if ('value' in desc || desc.initializer) { + desc.writable = true; + } + + desc = decorators.slice().reverse().reduce(function (desc, decorator) { + return decorator(target, property, desc) || desc; + }, desc); + + if (context && desc.initializer !== void 0) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = undefined; + } + + if (desc.initializer === void 0) { + Object.defineProperty(target, property, desc); + desc = null; + } + + return desc; +} + +module.exports = _applyDecoratedDescriptor; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/arrayLikeToArray.js b/node_modules/@babel/runtime/helpers/arrayLikeToArray.js new file mode 100644 index 0000000000..a459c8ead7 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/arrayLikeToArray.js @@ -0,0 +1,12 @@ +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + + return arr2; +} + +module.exports = _arrayLikeToArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/arrayWithHoles.js b/node_modules/@babel/runtime/helpers/arrayWithHoles.js new file mode 100644 index 0000000000..9a36e2aa02 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/arrayWithHoles.js @@ -0,0 +1,6 @@ +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} + +module.exports = _arrayWithHoles; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js b/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js new file mode 100644 index 0000000000..aac913f108 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js @@ -0,0 +1,8 @@ +var arrayLikeToArray = require("./arrayLikeToArray.js"); + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return arrayLikeToArray(arr); +} + +module.exports = _arrayWithoutHoles; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/assertThisInitialized.js b/node_modules/@babel/runtime/helpers/assertThisInitialized.js new file mode 100644 index 0000000000..352e1e6087 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/assertThisInitialized.js @@ -0,0 +1,10 @@ +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; +} + +module.exports = _assertThisInitialized; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js b/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js new file mode 100644 index 0000000000..91f6d61bdc --- /dev/null +++ b/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js @@ -0,0 +1,57 @@ +function _asyncGeneratorDelegate(inner, awaitWrap) { + var iter = {}, + waiting = false; + + function pump(key, value) { + waiting = true; + value = new Promise(function (resolve) { + resolve(inner[key](value)); + }); + return { + done: false, + value: awaitWrap(value) + }; + } + + ; + + iter[typeof Symbol !== "undefined" && Symbol.iterator || "@@iterator"] = function () { + return this; + }; + + iter.next = function (value) { + if (waiting) { + waiting = false; + return value; + } + + return pump("next", value); + }; + + if (typeof inner["throw"] === "function") { + iter["throw"] = function (value) { + if (waiting) { + waiting = false; + throw value; + } + + return pump("throw", value); + }; + } + + if (typeof inner["return"] === "function") { + iter["return"] = function (value) { + if (waiting) { + waiting = false; + return value; + } + + return pump("return", value); + }; + } + + return iter; +} + +module.exports = _asyncGeneratorDelegate; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/asyncIterator.js b/node_modules/@babel/runtime/helpers/asyncIterator.js new file mode 100644 index 0000000000..c47a7abc15 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/asyncIterator.js @@ -0,0 +1,77 @@ +function _asyncIterator(iterable) { + var method, + async, + sync, + retry = 2; + + if (typeof Symbol !== "undefined") { + async = Symbol.asyncIterator; + sync = Symbol.iterator; + } + + while (retry--) { + if (async && (method = iterable[async]) != null) { + return method.call(iterable); + } + + if (sync && (method = iterable[sync]) != null) { + return new AsyncFromSyncIterator(method.call(iterable)); + } + + async = "@@asyncIterator"; + sync = "@@iterator"; + } + + throw new TypeError("Object is not async iterable"); +} + +function AsyncFromSyncIterator(s) { + AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { + this.s = s; + this.n = s.next; + }; + + AsyncFromSyncIterator.prototype = { + s: null, + n: null, + next: function next() { + return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); + }, + "return": function _return(value) { + var ret = this.s["return"]; + + if (ret === undefined) { + return Promise.resolve({ + value: value, + done: true + }); + } + + return AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); + }, + "throw": function _throw(value) { + var thr = this.s["return"]; + if (thr === undefined) return Promise.reject(value); + return AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); + } + }; + + function AsyncFromSyncIteratorContinuation(r) { + if (Object(r) !== r) { + return Promise.reject(new TypeError(r + " is not an object.")); + } + + var done = r.done; + return Promise.resolve(r.value).then(function (value) { + return { + value: value, + done: done + }; + }); + } + + return new AsyncFromSyncIterator(s); +} + +module.exports = _asyncIterator; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/asyncToGenerator.js b/node_modules/@babel/runtime/helpers/asyncToGenerator.js new file mode 100644 index 0000000000..ec5daa8ced --- /dev/null +++ b/node_modules/@babel/runtime/helpers/asyncToGenerator.js @@ -0,0 +1,38 @@ +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} + +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + + _next(undefined); + }); + }; +} + +module.exports = _asyncToGenerator; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js b/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js new file mode 100644 index 0000000000..c338fee0db --- /dev/null +++ b/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js @@ -0,0 +1,8 @@ +var AwaitValue = require("./AwaitValue.js"); + +function _awaitAsyncGenerator(value) { + return new AwaitValue(value); +} + +module.exports = _awaitAsyncGenerator; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js b/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js new file mode 100644 index 0000000000..9bdefaf58f --- /dev/null +++ b/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js @@ -0,0 +1,8 @@ +function _checkPrivateRedeclaration(obj, privateCollection) { + if (privateCollection.has(obj)) { + throw new TypeError("Cannot initialize the same private elements twice on an object"); + } +} + +module.exports = _checkPrivateRedeclaration; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js new file mode 100644 index 0000000000..521c1e07c4 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js @@ -0,0 +1,23 @@ +function _classApplyDescriptorDestructureSet(receiver, descriptor) { + if (descriptor.set) { + if (!("__destrObj" in descriptor)) { + descriptor.__destrObj = { + set value(v) { + descriptor.set.call(receiver, v); + } + + }; + } + + return descriptor.__destrObj; + } else { + if (!descriptor.writable) { + throw new TypeError("attempted to set read only private field"); + } + + return descriptor; + } +} + +module.exports = _classApplyDescriptorDestructureSet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js new file mode 100644 index 0000000000..f750596119 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js @@ -0,0 +1,10 @@ +function _classApplyDescriptorGet(receiver, descriptor) { + if (descriptor.get) { + return descriptor.get.call(receiver); + } + + return descriptor.value; +} + +module.exports = _classApplyDescriptorGet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js new file mode 100644 index 0000000000..997b264934 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js @@ -0,0 +1,14 @@ +function _classApplyDescriptorSet(receiver, descriptor, value) { + if (descriptor.set) { + descriptor.set.call(receiver, value); + } else { + if (!descriptor.writable) { + throw new TypeError("attempted to set read only private field"); + } + + descriptor.value = value; + } +} + +module.exports = _classApplyDescriptorSet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classCallCheck.js b/node_modules/@babel/runtime/helpers/classCallCheck.js new file mode 100644 index 0000000000..026da41c1c --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classCallCheck.js @@ -0,0 +1,8 @@ +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +module.exports = _classCallCheck; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js new file mode 100644 index 0000000000..67373aaeb7 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js @@ -0,0 +1,8 @@ +function _classCheckPrivateStaticAccess(receiver, classConstructor) { + if (receiver !== classConstructor) { + throw new TypeError("Private static access of wrong provenance"); + } +} + +module.exports = _classCheckPrivateStaticAccess; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js new file mode 100644 index 0000000000..3b934721dd --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js @@ -0,0 +1,8 @@ +function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { + if (descriptor === undefined) { + throw new TypeError("attempted to " + action + " private static field before its declaration"); + } +} + +module.exports = _classCheckPrivateStaticFieldDescriptor; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js b/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js new file mode 100644 index 0000000000..aaaac8cdb9 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js @@ -0,0 +1,10 @@ +function _classExtractFieldDescriptor(receiver, privateMap, action) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to " + action + " private field on non-instance"); + } + + return privateMap.get(receiver); +} + +module.exports = _classExtractFieldDescriptor; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classNameTDZError.js b/node_modules/@babel/runtime/helpers/classNameTDZError.js new file mode 100644 index 0000000000..bf740fadd7 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classNameTDZError.js @@ -0,0 +1,6 @@ +function _classNameTDZError(name) { + throw new Error("Class \"" + name + "\" cannot be referenced in computed property keys."); +} + +module.exports = _classNameTDZError; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js new file mode 100644 index 0000000000..50b9fb01db --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js @@ -0,0 +1,11 @@ +var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js"); + +var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js"); + +function _classPrivateFieldDestructureSet(receiver, privateMap) { + var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); + return classApplyDescriptorDestructureSet(receiver, descriptor); +} + +module.exports = _classPrivateFieldDestructureSet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js new file mode 100644 index 0000000000..df559699ce --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js @@ -0,0 +1,11 @@ +var classApplyDescriptorGet = require("./classApplyDescriptorGet.js"); + +var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js"); + +function _classPrivateFieldGet(receiver, privateMap) { + var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get"); + return classApplyDescriptorGet(receiver, descriptor); +} + +module.exports = _classPrivateFieldGet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js b/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js new file mode 100644 index 0000000000..f154d82f80 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js @@ -0,0 +1,9 @@ +var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js"); + +function _classPrivateFieldInitSpec(obj, privateMap, value) { + checkPrivateRedeclaration(obj, privateMap); + privateMap.set(obj, value); +} + +module.exports = _classPrivateFieldInitSpec; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js new file mode 100644 index 0000000000..3acdb7b0fa --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js @@ -0,0 +1,10 @@ +function _classPrivateFieldBase(receiver, privateKey) { + if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { + throw new TypeError("attempted to use private field on non-instance"); + } + + return receiver; +} + +module.exports = _classPrivateFieldBase; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js new file mode 100644 index 0000000000..3c0c552b75 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js @@ -0,0 +1,8 @@ +var id = 0; + +function _classPrivateFieldKey(name) { + return "__private_" + id++ + "_" + name; +} + +module.exports = _classPrivateFieldKey; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js new file mode 100644 index 0000000000..d4a59b0b7e --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js @@ -0,0 +1,12 @@ +var classApplyDescriptorSet = require("./classApplyDescriptorSet.js"); + +var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js"); + +function _classPrivateFieldSet(receiver, privateMap, value) { + var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); + classApplyDescriptorSet(receiver, descriptor, value); + return value; +} + +module.exports = _classPrivateFieldSet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js new file mode 100644 index 0000000000..d2f8ab1549 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js @@ -0,0 +1,10 @@ +function _classPrivateMethodGet(receiver, privateSet, fn) { + if (!privateSet.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + + return fn; +} + +module.exports = _classPrivateMethodGet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js b/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js new file mode 100644 index 0000000000..6e2837cadb --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js @@ -0,0 +1,9 @@ +var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js"); + +function _classPrivateMethodInitSpec(obj, privateSet) { + checkPrivateRedeclaration(obj, privateSet); + privateSet.add(obj); +} + +module.exports = _classPrivateMethodInitSpec; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js new file mode 100644 index 0000000000..f500d16bef --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js @@ -0,0 +1,6 @@ +function _classPrivateMethodSet() { + throw new TypeError("attempted to reassign private method"); +} + +module.exports = _classPrivateMethodSet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js new file mode 100644 index 0000000000..57e2c7faed --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js @@ -0,0 +1,14 @@ +var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js"); + +var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js"); + +var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js"); + +function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) { + classCheckPrivateStaticAccess(receiver, classConstructor); + classCheckPrivateStaticFieldDescriptor(descriptor, "set"); + return classApplyDescriptorDestructureSet(receiver, descriptor); +} + +module.exports = _classStaticPrivateFieldDestructureSet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js new file mode 100644 index 0000000000..136c1f66ea --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js @@ -0,0 +1,14 @@ +var classApplyDescriptorGet = require("./classApplyDescriptorGet.js"); + +var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js"); + +var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js"); + +function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { + classCheckPrivateStaticAccess(receiver, classConstructor); + classCheckPrivateStaticFieldDescriptor(descriptor, "get"); + return classApplyDescriptorGet(receiver, descriptor); +} + +module.exports = _classStaticPrivateFieldSpecGet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js new file mode 100644 index 0000000000..e6ecfa4b14 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js @@ -0,0 +1,15 @@ +var classApplyDescriptorSet = require("./classApplyDescriptorSet.js"); + +var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js"); + +var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js"); + +function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { + classCheckPrivateStaticAccess(receiver, classConstructor); + classCheckPrivateStaticFieldDescriptor(descriptor, "set"); + classApplyDescriptorSet(receiver, descriptor, value); + return value; +} + +module.exports = _classStaticPrivateFieldSpecSet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js new file mode 100644 index 0000000000..5bc41fc74c --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js @@ -0,0 +1,9 @@ +var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js"); + +function _classStaticPrivateMethodGet(receiver, classConstructor, method) { + classCheckPrivateStaticAccess(receiver, classConstructor); + return method; +} + +module.exports = _classStaticPrivateMethodGet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js new file mode 100644 index 0000000000..06cfcc1631 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js @@ -0,0 +1,6 @@ +function _classStaticPrivateMethodSet() { + throw new TypeError("attempted to set read only static private field"); +} + +module.exports = _classStaticPrivateMethodSet; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/construct.js b/node_modules/@babel/runtime/helpers/construct.js new file mode 100644 index 0000000000..108b39a734 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/construct.js @@ -0,0 +1,26 @@ +var setPrototypeOf = require("./setPrototypeOf.js"); + +var isNativeReflectConstruct = require("./isNativeReflectConstruct.js"); + +function _construct(Parent, args, Class) { + if (isNativeReflectConstruct()) { + module.exports = _construct = Reflect.construct; + module.exports["default"] = module.exports, module.exports.__esModule = true; + } else { + module.exports = _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) setPrototypeOf(instance, Class.prototype); + return instance; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } + + return _construct.apply(null, arguments); +} + +module.exports = _construct; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/createClass.js b/node_modules/@babel/runtime/helpers/createClass.js new file mode 100644 index 0000000000..293bd612fc --- /dev/null +++ b/node_modules/@babel/runtime/helpers/createClass.js @@ -0,0 +1,18 @@ +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +module.exports = _createClass; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js b/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js new file mode 100644 index 0000000000..90988658f9 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js @@ -0,0 +1,61 @@ +var unsupportedIterableToArray = require("./unsupportedIterableToArray.js"); + +function _createForOfIteratorHelper(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + + if (!it) { + if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + + var F = function F() {}; + + return { + s: F, + n: function n() { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }, + e: function e(_e) { + throw _e; + }, + f: F + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, + didErr = false, + err; + return { + s: function s() { + it = it.call(o); + }, + n: function n() { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function e(_e2) { + didErr = true; + err = _e2; + }, + f: function f() { + try { + if (!normalCompletion && it["return"] != null) it["return"](); + } finally { + if (didErr) throw err; + } + } + }; +} + +module.exports = _createForOfIteratorHelper; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js b/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js new file mode 100644 index 0000000000..2dedbc99a5 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js @@ -0,0 +1,25 @@ +var unsupportedIterableToArray = require("./unsupportedIterableToArray.js"); + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + if (it) return (it = it.call(o)).next.bind(it); + + if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +module.exports = _createForOfIteratorHelperLoose; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/createSuper.js b/node_modules/@babel/runtime/helpers/createSuper.js new file mode 100644 index 0000000000..0acdd513ba --- /dev/null +++ b/node_modules/@babel/runtime/helpers/createSuper.js @@ -0,0 +1,25 @@ +var getPrototypeOf = require("./getPrototypeOf.js"); + +var isNativeReflectConstruct = require("./isNativeReflectConstruct.js"); + +var possibleConstructorReturn = require("./possibleConstructorReturn.js"); + +function _createSuper(Derived) { + var hasNativeReflectConstruct = isNativeReflectConstruct(); + return function _createSuperInternal() { + var Super = getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = getPrototypeOf(this).constructor; + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return possibleConstructorReturn(this, result); + }; +} + +module.exports = _createSuper; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/decorate.js b/node_modules/@babel/runtime/helpers/decorate.js new file mode 100644 index 0000000000..80d1751656 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/decorate.js @@ -0,0 +1,401 @@ +var toArray = require("./toArray.js"); + +var toPropertyKey = require("./toPropertyKey.js"); + +function _decorate(decorators, factory, superClass, mixins) { + var api = _getDecoratorsApi(); + + if (mixins) { + for (var i = 0; i < mixins.length; i++) { + api = mixins[i](api); + } + } + + var r = factory(function initialize(O) { + api.initializeInstanceElements(O, decorated.elements); + }, superClass); + var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators); + api.initializeClassElements(r.F, decorated.elements); + return api.runClassFinishers(r.F, decorated.finishers); +} + +function _getDecoratorsApi() { + _getDecoratorsApi = function _getDecoratorsApi() { + return api; + }; + + var api = { + elementsDefinitionOrder: [["method"], ["field"]], + initializeInstanceElements: function initializeInstanceElements(O, elements) { + ["method", "field"].forEach(function (kind) { + elements.forEach(function (element) { + if (element.kind === kind && element.placement === "own") { + this.defineClassElement(O, element); + } + }, this); + }, this); + }, + initializeClassElements: function initializeClassElements(F, elements) { + var proto = F.prototype; + ["method", "field"].forEach(function (kind) { + elements.forEach(function (element) { + var placement = element.placement; + + if (element.kind === kind && (placement === "static" || placement === "prototype")) { + var receiver = placement === "static" ? F : proto; + this.defineClassElement(receiver, element); + } + }, this); + }, this); + }, + defineClassElement: function defineClassElement(receiver, element) { + var descriptor = element.descriptor; + + if (element.kind === "field") { + var initializer = element.initializer; + descriptor = { + enumerable: descriptor.enumerable, + writable: descriptor.writable, + configurable: descriptor.configurable, + value: initializer === void 0 ? void 0 : initializer.call(receiver) + }; + } + + Object.defineProperty(receiver, element.key, descriptor); + }, + decorateClass: function decorateClass(elements, decorators) { + var newElements = []; + var finishers = []; + var placements = { + "static": [], + prototype: [], + own: [] + }; + elements.forEach(function (element) { + this.addElementPlacement(element, placements); + }, this); + elements.forEach(function (element) { + if (!_hasDecorators(element)) return newElements.push(element); + var elementFinishersExtras = this.decorateElement(element, placements); + newElements.push(elementFinishersExtras.element); + newElements.push.apply(newElements, elementFinishersExtras.extras); + finishers.push.apply(finishers, elementFinishersExtras.finishers); + }, this); + + if (!decorators) { + return { + elements: newElements, + finishers: finishers + }; + } + + var result = this.decorateConstructor(newElements, decorators); + finishers.push.apply(finishers, result.finishers); + result.finishers = finishers; + return result; + }, + addElementPlacement: function addElementPlacement(element, placements, silent) { + var keys = placements[element.placement]; + + if (!silent && keys.indexOf(element.key) !== -1) { + throw new TypeError("Duplicated element (" + element.key + ")"); + } + + keys.push(element.key); + }, + decorateElement: function decorateElement(element, placements) { + var extras = []; + var finishers = []; + + for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { + var keys = placements[element.placement]; + keys.splice(keys.indexOf(element.key), 1); + var elementObject = this.fromElementDescriptor(element); + var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); + element = elementFinisherExtras.element; + this.addElementPlacement(element, placements); + + if (elementFinisherExtras.finisher) { + finishers.push(elementFinisherExtras.finisher); + } + + var newExtras = elementFinisherExtras.extras; + + if (newExtras) { + for (var j = 0; j < newExtras.length; j++) { + this.addElementPlacement(newExtras[j], placements); + } + + extras.push.apply(extras, newExtras); + } + } + + return { + element: element, + finishers: finishers, + extras: extras + }; + }, + decorateConstructor: function decorateConstructor(elements, decorators) { + var finishers = []; + + for (var i = decorators.length - 1; i >= 0; i--) { + var obj = this.fromClassDescriptor(elements); + var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); + + if (elementsAndFinisher.finisher !== undefined) { + finishers.push(elementsAndFinisher.finisher); + } + + if (elementsAndFinisher.elements !== undefined) { + elements = elementsAndFinisher.elements; + + for (var j = 0; j < elements.length - 1; j++) { + for (var k = j + 1; k < elements.length; k++) { + if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { + throw new TypeError("Duplicated element (" + elements[j].key + ")"); + } + } + } + } + } + + return { + elements: elements, + finishers: finishers + }; + }, + fromElementDescriptor: function fromElementDescriptor(element) { + var obj = { + kind: element.kind, + key: element.key, + placement: element.placement, + descriptor: element.descriptor + }; + var desc = { + value: "Descriptor", + configurable: true + }; + Object.defineProperty(obj, Symbol.toStringTag, desc); + if (element.kind === "field") obj.initializer = element.initializer; + return obj; + }, + toElementDescriptors: function toElementDescriptors(elementObjects) { + if (elementObjects === undefined) return; + return toArray(elementObjects).map(function (elementObject) { + var element = this.toElementDescriptor(elementObject); + this.disallowProperty(elementObject, "finisher", "An element descriptor"); + this.disallowProperty(elementObject, "extras", "An element descriptor"); + return element; + }, this); + }, + toElementDescriptor: function toElementDescriptor(elementObject) { + var kind = String(elementObject.kind); + + if (kind !== "method" && kind !== "field") { + throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); + } + + var key = toPropertyKey(elementObject.key); + var placement = String(elementObject.placement); + + if (placement !== "static" && placement !== "prototype" && placement !== "own") { + throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); + } + + var descriptor = elementObject.descriptor; + this.disallowProperty(elementObject, "elements", "An element descriptor"); + var element = { + kind: kind, + key: key, + placement: placement, + descriptor: Object.assign({}, descriptor) + }; + + if (kind !== "field") { + this.disallowProperty(elementObject, "initializer", "A method descriptor"); + } else { + this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); + this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); + this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); + element.initializer = elementObject.initializer; + } + + return element; + }, + toElementFinisherExtras: function toElementFinisherExtras(elementObject) { + var element = this.toElementDescriptor(elementObject); + + var finisher = _optionalCallableProperty(elementObject, "finisher"); + + var extras = this.toElementDescriptors(elementObject.extras); + return { + element: element, + finisher: finisher, + extras: extras + }; + }, + fromClassDescriptor: function fromClassDescriptor(elements) { + var obj = { + kind: "class", + elements: elements.map(this.fromElementDescriptor, this) + }; + var desc = { + value: "Descriptor", + configurable: true + }; + Object.defineProperty(obj, Symbol.toStringTag, desc); + return obj; + }, + toClassDescriptor: function toClassDescriptor(obj) { + var kind = String(obj.kind); + + if (kind !== "class") { + throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); + } + + this.disallowProperty(obj, "key", "A class descriptor"); + this.disallowProperty(obj, "placement", "A class descriptor"); + this.disallowProperty(obj, "descriptor", "A class descriptor"); + this.disallowProperty(obj, "initializer", "A class descriptor"); + this.disallowProperty(obj, "extras", "A class descriptor"); + + var finisher = _optionalCallableProperty(obj, "finisher"); + + var elements = this.toElementDescriptors(obj.elements); + return { + elements: elements, + finisher: finisher + }; + }, + runClassFinishers: function runClassFinishers(constructor, finishers) { + for (var i = 0; i < finishers.length; i++) { + var newConstructor = (0, finishers[i])(constructor); + + if (newConstructor !== undefined) { + if (typeof newConstructor !== "function") { + throw new TypeError("Finishers must return a constructor."); + } + + constructor = newConstructor; + } + } + + return constructor; + }, + disallowProperty: function disallowProperty(obj, name, objectType) { + if (obj[name] !== undefined) { + throw new TypeError(objectType + " can't have a ." + name + " property."); + } + } + }; + return api; +} + +function _createElementDescriptor(def) { + var key = toPropertyKey(def.key); + var descriptor; + + if (def.kind === "method") { + descriptor = { + value: def.value, + writable: true, + configurable: true, + enumerable: false + }; + } else if (def.kind === "get") { + descriptor = { + get: def.value, + configurable: true, + enumerable: false + }; + } else if (def.kind === "set") { + descriptor = { + set: def.value, + configurable: true, + enumerable: false + }; + } else if (def.kind === "field") { + descriptor = { + configurable: true, + writable: true, + enumerable: true + }; + } + + var element = { + kind: def.kind === "field" ? "field" : "method", + key: key, + placement: def["static"] ? "static" : def.kind === "field" ? "own" : "prototype", + descriptor: descriptor + }; + if (def.decorators) element.decorators = def.decorators; + if (def.kind === "field") element.initializer = def.value; + return element; +} + +function _coalesceGetterSetter(element, other) { + if (element.descriptor.get !== undefined) { + other.descriptor.get = element.descriptor.get; + } else { + other.descriptor.set = element.descriptor.set; + } +} + +function _coalesceClassElements(elements) { + var newElements = []; + + var isSameElement = function isSameElement(other) { + return other.kind === "method" && other.key === element.key && other.placement === element.placement; + }; + + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + var other; + + if (element.kind === "method" && (other = newElements.find(isSameElement))) { + if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { + if (_hasDecorators(element) || _hasDecorators(other)) { + throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); + } + + other.descriptor = element.descriptor; + } else { + if (_hasDecorators(element)) { + if (_hasDecorators(other)) { + throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); + } + + other.decorators = element.decorators; + } + + _coalesceGetterSetter(element, other); + } + } else { + newElements.push(element); + } + } + + return newElements; +} + +function _hasDecorators(element) { + return element.decorators && element.decorators.length; +} + +function _isDataDescriptor(desc) { + return desc !== undefined && !(desc.value === undefined && desc.writable === undefined); +} + +function _optionalCallableProperty(obj, name) { + var value = obj[name]; + + if (value !== undefined && typeof value !== "function") { + throw new TypeError("Expected '" + name + "' to be a function"); + } + + return value; +} + +module.exports = _decorate; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/defaults.js b/node_modules/@babel/runtime/helpers/defaults.js new file mode 100644 index 0000000000..576c5a4b42 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/defaults.js @@ -0,0 +1,17 @@ +function _defaults(obj, defaults) { + var keys = Object.getOwnPropertyNames(defaults); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = Object.getOwnPropertyDescriptor(defaults, key); + + if (value && value.configurable && obj[key] === undefined) { + Object.defineProperty(obj, key, value); + } + } + + return obj; +} + +module.exports = _defaults; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js b/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js new file mode 100644 index 0000000000..4fe90c3c97 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js @@ -0,0 +1,25 @@ +function _defineEnumerableProperties(obj, descs) { + for (var key in descs) { + var desc = descs[key]; + desc.configurable = desc.enumerable = true; + if ("value" in desc) desc.writable = true; + Object.defineProperty(obj, key, desc); + } + + if (Object.getOwnPropertySymbols) { + var objectSymbols = Object.getOwnPropertySymbols(descs); + + for (var i = 0; i < objectSymbols.length; i++) { + var sym = objectSymbols[i]; + var desc = descs[sym]; + desc.configurable = desc.enumerable = true; + if ("value" in desc) desc.writable = true; + Object.defineProperty(obj, sym, desc); + } + } + + return obj; +} + +module.exports = _defineEnumerableProperties; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/defineProperty.js b/node_modules/@babel/runtime/helpers/defineProperty.js new file mode 100644 index 0000000000..1cd65ac261 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/defineProperty.js @@ -0,0 +1,17 @@ +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +module.exports = _defineProperty; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js new file mode 100644 index 0000000000..919aab8758 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js @@ -0,0 +1,95 @@ +import AwaitValue from "./AwaitValue.js"; +export default function AsyncGenerator(gen) { + var front, back; + + function send(key, arg) { + return new Promise(function (resolve, reject) { + var request = { + key: key, + arg: arg, + resolve: resolve, + reject: reject, + next: null + }; + + if (back) { + back = back.next = request; + } else { + front = back = request; + resume(key, arg); + } + }); + } + + function resume(key, arg) { + try { + var result = gen[key](arg); + var value = result.value; + var wrappedAwait = value instanceof AwaitValue; + Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) { + if (wrappedAwait) { + resume(key === "return" ? "return" : "next", arg); + return; + } + + settle(result.done ? "return" : "normal", arg); + }, function (err) { + resume("throw", err); + }); + } catch (err) { + settle("throw", err); + } + } + + function settle(type, value) { + switch (type) { + case "return": + front.resolve({ + value: value, + done: true + }); + break; + + case "throw": + front.reject(value); + break; + + default: + front.resolve({ + value: value, + done: false + }); + break; + } + + front = front.next; + + if (front) { + resume(front.key, front.arg); + } else { + back = null; + } + } + + this._invoke = send; + + if (typeof gen["return"] !== "function") { + this["return"] = undefined; + } +} + +AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () { + return this; +}; + +AsyncGenerator.prototype.next = function (arg) { + return this._invoke("next", arg); +}; + +AsyncGenerator.prototype["throw"] = function (arg) { + return this._invoke("throw", arg); +}; + +AsyncGenerator.prototype["return"] = function (arg) { + return this._invoke("return", arg); +}; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/AwaitValue.js b/node_modules/@babel/runtime/helpers/esm/AwaitValue.js new file mode 100644 index 0000000000..5237e18fdc --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/AwaitValue.js @@ -0,0 +1,3 @@ +export default function _AwaitValue(value) { + this.wrapped = value; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js b/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js new file mode 100644 index 0000000000..84b59617c0 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js @@ -0,0 +1,28 @@ +export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach(function (key) { + desc[key] = descriptor[key]; + }); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + + if ('value' in desc || desc.initializer) { + desc.writable = true; + } + + desc = decorators.slice().reverse().reduce(function (desc, decorator) { + return decorator(target, property, desc) || desc; + }, desc); + + if (context && desc.initializer !== void 0) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = undefined; + } + + if (desc.initializer === void 0) { + Object.defineProperty(target, property, desc); + desc = null; + } + + return desc; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js b/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js new file mode 100644 index 0000000000..edbeb8ee38 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js @@ -0,0 +1,9 @@ +export default function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + + return arr2; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js b/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js new file mode 100644 index 0000000000..be734fc386 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js @@ -0,0 +1,3 @@ +export default function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js b/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js new file mode 100644 index 0000000000..f7d8dc7814 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js @@ -0,0 +1,4 @@ +import arrayLikeToArray from "./arrayLikeToArray.js"; +export default function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return arrayLikeToArray(arr); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js b/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js new file mode 100644 index 0000000000..bbf849ca50 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js @@ -0,0 +1,7 @@ +export default function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js b/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js new file mode 100644 index 0000000000..a7ccd67547 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js @@ -0,0 +1,54 @@ +export default function _asyncGeneratorDelegate(inner, awaitWrap) { + var iter = {}, + waiting = false; + + function pump(key, value) { + waiting = true; + value = new Promise(function (resolve) { + resolve(inner[key](value)); + }); + return { + done: false, + value: awaitWrap(value) + }; + } + + ; + + iter[typeof Symbol !== "undefined" && Symbol.iterator || "@@iterator"] = function () { + return this; + }; + + iter.next = function (value) { + if (waiting) { + waiting = false; + return value; + } + + return pump("next", value); + }; + + if (typeof inner["throw"] === "function") { + iter["throw"] = function (value) { + if (waiting) { + waiting = false; + throw value; + } + + return pump("throw", value); + }; + } + + if (typeof inner["return"] === "function") { + iter["return"] = function (value) { + if (waiting) { + waiting = false; + return value; + } + + return pump("return", value); + }; + } + + return iter; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/asyncIterator.js b/node_modules/@babel/runtime/helpers/esm/asyncIterator.js new file mode 100644 index 0000000000..aa7d3f26b0 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/asyncIterator.js @@ -0,0 +1,74 @@ +export default function _asyncIterator(iterable) { + var method, + async, + sync, + retry = 2; + + if (typeof Symbol !== "undefined") { + async = Symbol.asyncIterator; + sync = Symbol.iterator; + } + + while (retry--) { + if (async && (method = iterable[async]) != null) { + return method.call(iterable); + } + + if (sync && (method = iterable[sync]) != null) { + return new AsyncFromSyncIterator(method.call(iterable)); + } + + async = "@@asyncIterator"; + sync = "@@iterator"; + } + + throw new TypeError("Object is not async iterable"); +} + +function AsyncFromSyncIterator(s) { + AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { + this.s = s; + this.n = s.next; + }; + + AsyncFromSyncIterator.prototype = { + s: null, + n: null, + next: function next() { + return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); + }, + "return": function _return(value) { + var ret = this.s["return"]; + + if (ret === undefined) { + return Promise.resolve({ + value: value, + done: true + }); + } + + return AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); + }, + "throw": function _throw(value) { + var thr = this.s["return"]; + if (thr === undefined) return Promise.reject(value); + return AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); + } + }; + + function AsyncFromSyncIteratorContinuation(r) { + if (Object(r) !== r) { + return Promise.reject(new TypeError(r + " is not an object.")); + } + + var done = r.done; + return Promise.resolve(r.value).then(function (value) { + return { + value: value, + done: done + }; + }); + } + + return new AsyncFromSyncIterator(s); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js b/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js new file mode 100644 index 0000000000..2a25f543bf --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js @@ -0,0 +1,35 @@ +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} + +export default function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + + _next(undefined); + }); + }; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js new file mode 100644 index 0000000000..ccca65e53c --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js @@ -0,0 +1,4 @@ +import AwaitValue from "./AwaitValue.js"; +export default function _awaitAsyncGenerator(value) { + return new AwaitValue(value); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js b/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js new file mode 100644 index 0000000000..9901403666 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js @@ -0,0 +1,5 @@ +export default function _checkPrivateRedeclaration(obj, privateCollection) { + if (privateCollection.has(obj)) { + throw new TypeError("Cannot initialize the same private elements twice on an object"); + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js new file mode 100644 index 0000000000..4472adc640 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js @@ -0,0 +1,20 @@ +export default function _classApplyDescriptorDestructureSet(receiver, descriptor) { + if (descriptor.set) { + if (!("__destrObj" in descriptor)) { + descriptor.__destrObj = { + set value(v) { + descriptor.set.call(receiver, v); + } + + }; + } + + return descriptor.__destrObj; + } else { + if (!descriptor.writable) { + throw new TypeError("attempted to set read only private field"); + } + + return descriptor; + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js new file mode 100644 index 0000000000..0fad169d50 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js @@ -0,0 +1,7 @@ +export default function _classApplyDescriptorGet(receiver, descriptor) { + if (descriptor.get) { + return descriptor.get.call(receiver); + } + + return descriptor.value; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js new file mode 100644 index 0000000000..f295f3e364 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js @@ -0,0 +1,11 @@ +export default function _classApplyDescriptorSet(receiver, descriptor, value) { + if (descriptor.set) { + descriptor.set.call(receiver, value); + } else { + if (!descriptor.writable) { + throw new TypeError("attempted to set read only private field"); + } + + descriptor.value = value; + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classCallCheck.js b/node_modules/@babel/runtime/helpers/esm/classCallCheck.js new file mode 100644 index 0000000000..2f1738a3d6 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classCallCheck.js @@ -0,0 +1,5 @@ +export default function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js new file mode 100644 index 0000000000..098ed30900 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js @@ -0,0 +1,5 @@ +export default function _classCheckPrivateStaticAccess(receiver, classConstructor) { + if (receiver !== classConstructor) { + throw new TypeError("Private static access of wrong provenance"); + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js new file mode 100644 index 0000000000..0ef34b8d71 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js @@ -0,0 +1,5 @@ +export default function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { + if (descriptor === undefined) { + throw new TypeError("attempted to " + action + " private static field before its declaration"); + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js b/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js new file mode 100644 index 0000000000..8dabe9a32c --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js @@ -0,0 +1,7 @@ +export default function _classExtractFieldDescriptor(receiver, privateMap, action) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to " + action + " private field on non-instance"); + } + + return privateMap.get(receiver); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js b/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js new file mode 100644 index 0000000000..f7b6dd5787 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js @@ -0,0 +1,3 @@ +export default function _classNameTDZError(name) { + throw new Error("Class \"" + name + "\" cannot be referenced in computed property keys."); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js new file mode 100644 index 0000000000..fb5883369b --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js @@ -0,0 +1,6 @@ +import classApplyDescriptorDestructureSet from "./classApplyDescriptorDestructureSet.js"; +import classExtractFieldDescriptor from "./classExtractFieldDescriptor.js"; +export default function _classPrivateFieldDestructureSet(receiver, privateMap) { + var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); + return classApplyDescriptorDestructureSet(receiver, descriptor); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js new file mode 100644 index 0000000000..53cd1379cb --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js @@ -0,0 +1,6 @@ +import classApplyDescriptorGet from "./classApplyDescriptorGet.js"; +import classExtractFieldDescriptor from "./classExtractFieldDescriptor.js"; +export default function _classPrivateFieldGet(receiver, privateMap) { + var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get"); + return classApplyDescriptorGet(receiver, descriptor); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js new file mode 100644 index 0000000000..2253dd84f0 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js @@ -0,0 +1,5 @@ +import checkPrivateRedeclaration from "./checkPrivateRedeclaration.js"; +export default function _classPrivateFieldInitSpec(obj, privateMap, value) { + checkPrivateRedeclaration(obj, privateMap); + privateMap.set(obj, value); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js new file mode 100644 index 0000000000..5b10916f47 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js @@ -0,0 +1,7 @@ +export default function _classPrivateFieldBase(receiver, privateKey) { + if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { + throw new TypeError("attempted to use private field on non-instance"); + } + + return receiver; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js new file mode 100644 index 0000000000..5b7e5ac020 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js @@ -0,0 +1,4 @@ +var id = 0; +export default function _classPrivateFieldKey(name) { + return "__private_" + id++ + "_" + name; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js new file mode 100644 index 0000000000..ad91be4408 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js @@ -0,0 +1,7 @@ +import classApplyDescriptorSet from "./classApplyDescriptorSet.js"; +import classExtractFieldDescriptor from "./classExtractFieldDescriptor.js"; +export default function _classPrivateFieldSet(receiver, privateMap, value) { + var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); + classApplyDescriptorSet(receiver, descriptor, value); + return value; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js new file mode 100644 index 0000000000..38b9d584de --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js @@ -0,0 +1,7 @@ +export default function _classPrivateMethodGet(receiver, privateSet, fn) { + if (!privateSet.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + + return fn; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js new file mode 100644 index 0000000000..18d129159c --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js @@ -0,0 +1,5 @@ +import checkPrivateRedeclaration from "./checkPrivateRedeclaration.js"; +export default function _classPrivateMethodInitSpec(obj, privateSet) { + checkPrivateRedeclaration(obj, privateSet); + privateSet.add(obj); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js new file mode 100644 index 0000000000..2bbaf3a7a4 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js @@ -0,0 +1,3 @@ +export default function _classPrivateMethodSet() { + throw new TypeError("attempted to reassign private method"); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js new file mode 100644 index 0000000000..77afcfb187 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js @@ -0,0 +1,8 @@ +import classApplyDescriptorDestructureSet from "./classApplyDescriptorDestructureSet.js"; +import classCheckPrivateStaticAccess from "./classCheckPrivateStaticAccess.js"; +import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js"; +export default function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) { + classCheckPrivateStaticAccess(receiver, classConstructor); + classCheckPrivateStaticFieldDescriptor(descriptor, "set"); + return classApplyDescriptorDestructureSet(receiver, descriptor); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js new file mode 100644 index 0000000000..d253d31198 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js @@ -0,0 +1,8 @@ +import classApplyDescriptorGet from "./classApplyDescriptorGet.js"; +import classCheckPrivateStaticAccess from "./classCheckPrivateStaticAccess.js"; +import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js"; +export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { + classCheckPrivateStaticAccess(receiver, classConstructor); + classCheckPrivateStaticFieldDescriptor(descriptor, "get"); + return classApplyDescriptorGet(receiver, descriptor); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js new file mode 100644 index 0000000000..b0b0cc6444 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js @@ -0,0 +1,9 @@ +import classApplyDescriptorSet from "./classApplyDescriptorSet.js"; +import classCheckPrivateStaticAccess from "./classCheckPrivateStaticAccess.js"; +import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js"; +export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { + classCheckPrivateStaticAccess(receiver, classConstructor); + classCheckPrivateStaticFieldDescriptor(descriptor, "set"); + classApplyDescriptorSet(receiver, descriptor, value); + return value; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js new file mode 100644 index 0000000000..fddc7b2d8c --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js @@ -0,0 +1,5 @@ +import classCheckPrivateStaticAccess from "./classCheckPrivateStaticAccess.js"; +export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) { + classCheckPrivateStaticAccess(receiver, classConstructor); + return method; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js new file mode 100644 index 0000000000..d5ab60a970 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js @@ -0,0 +1,3 @@ +export default function _classStaticPrivateMethodSet() { + throw new TypeError("attempted to set read only static private field"); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/construct.js b/node_modules/@babel/runtime/helpers/esm/construct.js new file mode 100644 index 0000000000..0c39835d2d --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/construct.js @@ -0,0 +1,18 @@ +import setPrototypeOf from "./setPrototypeOf.js"; +import isNativeReflectConstruct from "./isNativeReflectConstruct.js"; +export default function _construct(Parent, args, Class) { + if (isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/createClass.js b/node_modules/@babel/runtime/helpers/esm/createClass.js new file mode 100644 index 0000000000..d6cf412203 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/createClass.js @@ -0,0 +1,15 @@ +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +export default function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js new file mode 100644 index 0000000000..a7a2a50adc --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js @@ -0,0 +1,57 @@ +import unsupportedIterableToArray from "./unsupportedIterableToArray.js"; +export default function _createForOfIteratorHelper(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + + if (!it) { + if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + + var F = function F() {}; + + return { + s: F, + n: function n() { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }, + e: function e(_e) { + throw _e; + }, + f: F + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, + didErr = false, + err; + return { + s: function s() { + it = it.call(o); + }, + n: function n() { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function e(_e2) { + didErr = true; + err = _e2; + }, + f: function f() { + try { + if (!normalCompletion && it["return"] != null) it["return"](); + } finally { + if (didErr) throw err; + } + } + }; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js new file mode 100644 index 0000000000..640ec68310 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js @@ -0,0 +1,21 @@ +import unsupportedIterableToArray from "./unsupportedIterableToArray.js"; +export default function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + if (it) return (it = it.call(o)).next.bind(it); + + if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/createSuper.js b/node_modules/@babel/runtime/helpers/esm/createSuper.js new file mode 100644 index 0000000000..ea5ea99552 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/createSuper.js @@ -0,0 +1,19 @@ +import getPrototypeOf from "./getPrototypeOf.js"; +import isNativeReflectConstruct from "./isNativeReflectConstruct.js"; +import possibleConstructorReturn from "./possibleConstructorReturn.js"; +export default function _createSuper(Derived) { + var hasNativeReflectConstruct = isNativeReflectConstruct(); + return function _createSuperInternal() { + var Super = getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = getPrototypeOf(this).constructor; + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return possibleConstructorReturn(this, result); + }; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/decorate.js b/node_modules/@babel/runtime/helpers/esm/decorate.js new file mode 100644 index 0000000000..daf56da209 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/decorate.js @@ -0,0 +1,396 @@ +import toArray from "./toArray.js"; +import toPropertyKey from "./toPropertyKey.js"; +export default function _decorate(decorators, factory, superClass, mixins) { + var api = _getDecoratorsApi(); + + if (mixins) { + for (var i = 0; i < mixins.length; i++) { + api = mixins[i](api); + } + } + + var r = factory(function initialize(O) { + api.initializeInstanceElements(O, decorated.elements); + }, superClass); + var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators); + api.initializeClassElements(r.F, decorated.elements); + return api.runClassFinishers(r.F, decorated.finishers); +} + +function _getDecoratorsApi() { + _getDecoratorsApi = function _getDecoratorsApi() { + return api; + }; + + var api = { + elementsDefinitionOrder: [["method"], ["field"]], + initializeInstanceElements: function initializeInstanceElements(O, elements) { + ["method", "field"].forEach(function (kind) { + elements.forEach(function (element) { + if (element.kind === kind && element.placement === "own") { + this.defineClassElement(O, element); + } + }, this); + }, this); + }, + initializeClassElements: function initializeClassElements(F, elements) { + var proto = F.prototype; + ["method", "field"].forEach(function (kind) { + elements.forEach(function (element) { + var placement = element.placement; + + if (element.kind === kind && (placement === "static" || placement === "prototype")) { + var receiver = placement === "static" ? F : proto; + this.defineClassElement(receiver, element); + } + }, this); + }, this); + }, + defineClassElement: function defineClassElement(receiver, element) { + var descriptor = element.descriptor; + + if (element.kind === "field") { + var initializer = element.initializer; + descriptor = { + enumerable: descriptor.enumerable, + writable: descriptor.writable, + configurable: descriptor.configurable, + value: initializer === void 0 ? void 0 : initializer.call(receiver) + }; + } + + Object.defineProperty(receiver, element.key, descriptor); + }, + decorateClass: function decorateClass(elements, decorators) { + var newElements = []; + var finishers = []; + var placements = { + "static": [], + prototype: [], + own: [] + }; + elements.forEach(function (element) { + this.addElementPlacement(element, placements); + }, this); + elements.forEach(function (element) { + if (!_hasDecorators(element)) return newElements.push(element); + var elementFinishersExtras = this.decorateElement(element, placements); + newElements.push(elementFinishersExtras.element); + newElements.push.apply(newElements, elementFinishersExtras.extras); + finishers.push.apply(finishers, elementFinishersExtras.finishers); + }, this); + + if (!decorators) { + return { + elements: newElements, + finishers: finishers + }; + } + + var result = this.decorateConstructor(newElements, decorators); + finishers.push.apply(finishers, result.finishers); + result.finishers = finishers; + return result; + }, + addElementPlacement: function addElementPlacement(element, placements, silent) { + var keys = placements[element.placement]; + + if (!silent && keys.indexOf(element.key) !== -1) { + throw new TypeError("Duplicated element (" + element.key + ")"); + } + + keys.push(element.key); + }, + decorateElement: function decorateElement(element, placements) { + var extras = []; + var finishers = []; + + for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { + var keys = placements[element.placement]; + keys.splice(keys.indexOf(element.key), 1); + var elementObject = this.fromElementDescriptor(element); + var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); + element = elementFinisherExtras.element; + this.addElementPlacement(element, placements); + + if (elementFinisherExtras.finisher) { + finishers.push(elementFinisherExtras.finisher); + } + + var newExtras = elementFinisherExtras.extras; + + if (newExtras) { + for (var j = 0; j < newExtras.length; j++) { + this.addElementPlacement(newExtras[j], placements); + } + + extras.push.apply(extras, newExtras); + } + } + + return { + element: element, + finishers: finishers, + extras: extras + }; + }, + decorateConstructor: function decorateConstructor(elements, decorators) { + var finishers = []; + + for (var i = decorators.length - 1; i >= 0; i--) { + var obj = this.fromClassDescriptor(elements); + var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); + + if (elementsAndFinisher.finisher !== undefined) { + finishers.push(elementsAndFinisher.finisher); + } + + if (elementsAndFinisher.elements !== undefined) { + elements = elementsAndFinisher.elements; + + for (var j = 0; j < elements.length - 1; j++) { + for (var k = j + 1; k < elements.length; k++) { + if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { + throw new TypeError("Duplicated element (" + elements[j].key + ")"); + } + } + } + } + } + + return { + elements: elements, + finishers: finishers + }; + }, + fromElementDescriptor: function fromElementDescriptor(element) { + var obj = { + kind: element.kind, + key: element.key, + placement: element.placement, + descriptor: element.descriptor + }; + var desc = { + value: "Descriptor", + configurable: true + }; + Object.defineProperty(obj, Symbol.toStringTag, desc); + if (element.kind === "field") obj.initializer = element.initializer; + return obj; + }, + toElementDescriptors: function toElementDescriptors(elementObjects) { + if (elementObjects === undefined) return; + return toArray(elementObjects).map(function (elementObject) { + var element = this.toElementDescriptor(elementObject); + this.disallowProperty(elementObject, "finisher", "An element descriptor"); + this.disallowProperty(elementObject, "extras", "An element descriptor"); + return element; + }, this); + }, + toElementDescriptor: function toElementDescriptor(elementObject) { + var kind = String(elementObject.kind); + + if (kind !== "method" && kind !== "field") { + throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); + } + + var key = toPropertyKey(elementObject.key); + var placement = String(elementObject.placement); + + if (placement !== "static" && placement !== "prototype" && placement !== "own") { + throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); + } + + var descriptor = elementObject.descriptor; + this.disallowProperty(elementObject, "elements", "An element descriptor"); + var element = { + kind: kind, + key: key, + placement: placement, + descriptor: Object.assign({}, descriptor) + }; + + if (kind !== "field") { + this.disallowProperty(elementObject, "initializer", "A method descriptor"); + } else { + this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); + this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); + this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); + element.initializer = elementObject.initializer; + } + + return element; + }, + toElementFinisherExtras: function toElementFinisherExtras(elementObject) { + var element = this.toElementDescriptor(elementObject); + + var finisher = _optionalCallableProperty(elementObject, "finisher"); + + var extras = this.toElementDescriptors(elementObject.extras); + return { + element: element, + finisher: finisher, + extras: extras + }; + }, + fromClassDescriptor: function fromClassDescriptor(elements) { + var obj = { + kind: "class", + elements: elements.map(this.fromElementDescriptor, this) + }; + var desc = { + value: "Descriptor", + configurable: true + }; + Object.defineProperty(obj, Symbol.toStringTag, desc); + return obj; + }, + toClassDescriptor: function toClassDescriptor(obj) { + var kind = String(obj.kind); + + if (kind !== "class") { + throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); + } + + this.disallowProperty(obj, "key", "A class descriptor"); + this.disallowProperty(obj, "placement", "A class descriptor"); + this.disallowProperty(obj, "descriptor", "A class descriptor"); + this.disallowProperty(obj, "initializer", "A class descriptor"); + this.disallowProperty(obj, "extras", "A class descriptor"); + + var finisher = _optionalCallableProperty(obj, "finisher"); + + var elements = this.toElementDescriptors(obj.elements); + return { + elements: elements, + finisher: finisher + }; + }, + runClassFinishers: function runClassFinishers(constructor, finishers) { + for (var i = 0; i < finishers.length; i++) { + var newConstructor = (0, finishers[i])(constructor); + + if (newConstructor !== undefined) { + if (typeof newConstructor !== "function") { + throw new TypeError("Finishers must return a constructor."); + } + + constructor = newConstructor; + } + } + + return constructor; + }, + disallowProperty: function disallowProperty(obj, name, objectType) { + if (obj[name] !== undefined) { + throw new TypeError(objectType + " can't have a ." + name + " property."); + } + } + }; + return api; +} + +function _createElementDescriptor(def) { + var key = toPropertyKey(def.key); + var descriptor; + + if (def.kind === "method") { + descriptor = { + value: def.value, + writable: true, + configurable: true, + enumerable: false + }; + } else if (def.kind === "get") { + descriptor = { + get: def.value, + configurable: true, + enumerable: false + }; + } else if (def.kind === "set") { + descriptor = { + set: def.value, + configurable: true, + enumerable: false + }; + } else if (def.kind === "field") { + descriptor = { + configurable: true, + writable: true, + enumerable: true + }; + } + + var element = { + kind: def.kind === "field" ? "field" : "method", + key: key, + placement: def["static"] ? "static" : def.kind === "field" ? "own" : "prototype", + descriptor: descriptor + }; + if (def.decorators) element.decorators = def.decorators; + if (def.kind === "field") element.initializer = def.value; + return element; +} + +function _coalesceGetterSetter(element, other) { + if (element.descriptor.get !== undefined) { + other.descriptor.get = element.descriptor.get; + } else { + other.descriptor.set = element.descriptor.set; + } +} + +function _coalesceClassElements(elements) { + var newElements = []; + + var isSameElement = function isSameElement(other) { + return other.kind === "method" && other.key === element.key && other.placement === element.placement; + }; + + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + var other; + + if (element.kind === "method" && (other = newElements.find(isSameElement))) { + if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { + if (_hasDecorators(element) || _hasDecorators(other)) { + throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); + } + + other.descriptor = element.descriptor; + } else { + if (_hasDecorators(element)) { + if (_hasDecorators(other)) { + throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); + } + + other.decorators = element.decorators; + } + + _coalesceGetterSetter(element, other); + } + } else { + newElements.push(element); + } + } + + return newElements; +} + +function _hasDecorators(element) { + return element.decorators && element.decorators.length; +} + +function _isDataDescriptor(desc) { + return desc !== undefined && !(desc.value === undefined && desc.writable === undefined); +} + +function _optionalCallableProperty(obj, name) { + var value = obj[name]; + + if (value !== undefined && typeof value !== "function") { + throw new TypeError("Expected '" + name + "' to be a function"); + } + + return value; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/defaults.js b/node_modules/@babel/runtime/helpers/esm/defaults.js new file mode 100644 index 0000000000..3de1d8ecfe --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/defaults.js @@ -0,0 +1,14 @@ +export default function _defaults(obj, defaults) { + var keys = Object.getOwnPropertyNames(defaults); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = Object.getOwnPropertyDescriptor(defaults, key); + + if (value && value.configurable && obj[key] === undefined) { + Object.defineProperty(obj, key, value); + } + } + + return obj; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js b/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js new file mode 100644 index 0000000000..7981acd48f --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js @@ -0,0 +1,22 @@ +export default function _defineEnumerableProperties(obj, descs) { + for (var key in descs) { + var desc = descs[key]; + desc.configurable = desc.enumerable = true; + if ("value" in desc) desc.writable = true; + Object.defineProperty(obj, key, desc); + } + + if (Object.getOwnPropertySymbols) { + var objectSymbols = Object.getOwnPropertySymbols(descs); + + for (var i = 0; i < objectSymbols.length; i++) { + var sym = objectSymbols[i]; + var desc = descs[sym]; + desc.configurable = desc.enumerable = true; + if ("value" in desc) desc.writable = true; + Object.defineProperty(obj, sym, desc); + } + } + + return obj; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/defineProperty.js b/node_modules/@babel/runtime/helpers/esm/defineProperty.js new file mode 100644 index 0000000000..7cf6e59fdf --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/defineProperty.js @@ -0,0 +1,14 @@ +export default function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/extends.js b/node_modules/@babel/runtime/helpers/esm/extends.js new file mode 100644 index 0000000000..b9b138d829 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/extends.js @@ -0,0 +1,17 @@ +export default function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/get.js b/node_modules/@babel/runtime/helpers/esm/get.js new file mode 100644 index 0000000000..92038bd132 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/get.js @@ -0,0 +1,20 @@ +import superPropBase from "./superPropBase.js"; +export default function _get() { + if (typeof Reflect !== "undefined" && Reflect.get) { + _get = Reflect.get; + } else { + _get = function _get(target, property, receiver) { + var base = superPropBase(target, property); + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.get) { + return desc.get.call(arguments.length < 3 ? target : receiver); + } + + return desc.value; + }; + } + + return _get.apply(this, arguments); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js b/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js new file mode 100644 index 0000000000..5abafe381f --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js @@ -0,0 +1,6 @@ +export default function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/inherits.js b/node_modules/@babel/runtime/helpers/esm/inherits.js new file mode 100644 index 0000000000..aee0f102c7 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/inherits.js @@ -0,0 +1,15 @@ +import setPrototypeOf from "./setPrototypeOf.js"; +export default function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) setPrototypeOf(subClass, superClass); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js b/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js new file mode 100644 index 0000000000..90bb796576 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js @@ -0,0 +1,6 @@ +import setPrototypeOf from "./setPrototypeOf.js"; +export default function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + setPrototypeOf(subClass, superClass); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js b/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js new file mode 100644 index 0000000000..26fdea084d --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js @@ -0,0 +1,9 @@ +export default function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js b/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js new file mode 100644 index 0000000000..30d518cfd6 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js @@ -0,0 +1,3 @@ +export default function _initializerWarningHelper(descriptor, context) { + throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/instanceof.js b/node_modules/@babel/runtime/helpers/esm/instanceof.js new file mode 100644 index 0000000000..8c43b71787 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/instanceof.js @@ -0,0 +1,7 @@ +export default function _instanceof(left, right) { + if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { + return !!right[Symbol.hasInstance](left); + } else { + return left instanceof right; + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js b/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js new file mode 100644 index 0000000000..c2df7b6414 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js @@ -0,0 +1,5 @@ +export default function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js b/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js new file mode 100644 index 0000000000..662ff7e6b7 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js @@ -0,0 +1,51 @@ +import _typeof from "@babel/runtime/helpers/typeof"; + +function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); +} + +export default function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + + if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { + return { + "default": obj + }; + } + + var cache = _getRequireWildcardCache(nodeInterop); + + if (cache && cache.has(obj)) { + return cache.get(obj); + } + + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + + newObj["default"] = obj; + + if (cache) { + cache.set(obj, newObj); + } + + return newObj; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js b/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js new file mode 100644 index 0000000000..7b1bc821f7 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js @@ -0,0 +1,3 @@ +export default function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js b/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js new file mode 100644 index 0000000000..0da1624ecf --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js @@ -0,0 +1,12 @@ +export default function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArray.js b/node_modules/@babel/runtime/helpers/esm/iterableToArray.js new file mode 100644 index 0000000000..cfe9fbd3bf --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/iterableToArray.js @@ -0,0 +1,3 @@ +export default function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js new file mode 100644 index 0000000000..c72ca94b7b --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js @@ -0,0 +1,29 @@ +export default function _iterableToArrayLimit(arr, i) { + var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; + + if (_i == null) return; + var _arr = []; + var _n = true; + var _d = false; + + var _s, _e; + + try { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js new file mode 100644 index 0000000000..27c15e0986 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js @@ -0,0 +1,14 @@ +export default function _iterableToArrayLimitLoose(arr, i) { + var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); + + if (_i == null) return; + var _arr = []; + + for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) { + _arr.push(_step.value); + + if (i && _arr.length === i) break; + } + + return _arr; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/jsx.js b/node_modules/@babel/runtime/helpers/esm/jsx.js new file mode 100644 index 0000000000..328fadf056 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/jsx.js @@ -0,0 +1,46 @@ +var REACT_ELEMENT_TYPE; +export default function _createRawReactElement(type, props, key, children) { + if (!REACT_ELEMENT_TYPE) { + REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol["for"] && Symbol["for"]("react.element") || 0xeac7; + } + + var defaultProps = type && type.defaultProps; + var childrenLength = arguments.length - 3; + + if (!props && childrenLength !== 0) { + props = { + children: void 0 + }; + } + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = new Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 3]; + } + + props.children = childArray; + } + + if (props && defaultProps) { + for (var propName in defaultProps) { + if (props[propName] === void 0) { + props[propName] = defaultProps[propName]; + } + } + } else if (!props) { + props = defaultProps || {}; + } + + return { + $$typeof: REACT_ELEMENT_TYPE, + type: type, + key: key === undefined ? null : "" + key, + ref: null, + props: props, + _owner: null + }; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js b/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js new file mode 100644 index 0000000000..f687959267 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js @@ -0,0 +1,9 @@ +import arrayLikeToArray from "./arrayLikeToArray.js"; +export default function _maybeArrayLike(next, arr, i) { + if (arr && !Array.isArray(arr) && typeof arr.length === "number") { + var len = arr.length; + return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len); + } + + return next(arr, i); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js b/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js new file mode 100644 index 0000000000..d6cd864377 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js @@ -0,0 +1,5 @@ +export default function _newArrowCheck(innerThis, boundThis) { + if (innerThis !== boundThis) { + throw new TypeError("Cannot instantiate an arrow function"); + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js b/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js new file mode 100644 index 0000000000..b349d006cd --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js @@ -0,0 +1,3 @@ +export default function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js b/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js new file mode 100644 index 0000000000..82d8296142 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js @@ -0,0 +1,3 @@ +export default function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js b/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js new file mode 100644 index 0000000000..82b67d2cba --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js @@ -0,0 +1,3 @@ +export default function _objectDestructuringEmpty(obj) { + if (obj == null) throw new TypeError("Cannot destructure undefined"); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/objectSpread.js b/node_modules/@babel/runtime/helpers/esm/objectSpread.js new file mode 100644 index 0000000000..889a5f0e4a --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/objectSpread.js @@ -0,0 +1,19 @@ +import defineProperty from "./defineProperty.js"; +export default function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? Object(arguments[i]) : {}; + var ownKeys = Object.keys(source); + + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + + ownKeys.forEach(function (key) { + defineProperty(target, key, source[key]); + }); + } + + return target; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/objectSpread2.js b/node_modules/@babel/runtime/helpers/esm/objectSpread2.js new file mode 100644 index 0000000000..be42b4d7b8 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/objectSpread2.js @@ -0,0 +1,39 @@ +import defineProperty from "./defineProperty.js"; + +function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + + if (enumerableOnly) { + symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + } + + keys.push.apply(keys, symbols); + } + + return keys; +} + +export default function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js b/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js new file mode 100644 index 0000000000..0fef321925 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js @@ -0,0 +1,19 @@ +import objectWithoutPropertiesLoose from "./objectWithoutPropertiesLoose.js"; +export default function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; + var target = objectWithoutPropertiesLoose(source, excluded); + var key, i; + + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; + target[key] = source[key]; + } + } + + return target; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js b/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js new file mode 100644 index 0000000000..c36815cebe --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js @@ -0,0 +1,14 @@ +export default function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + + return target; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/package.json b/node_modules/@babel/runtime/helpers/esm/package.json new file mode 100644 index 0000000000..aead43de36 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js b/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js new file mode 100644 index 0000000000..8566e11577 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js @@ -0,0 +1,11 @@ +import _typeof from "@babel/runtime/helpers/typeof"; +import assertThisInitialized from "./assertThisInitialized.js"; +export default function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/readOnlyError.js b/node_modules/@babel/runtime/helpers/esm/readOnlyError.js new file mode 100644 index 0000000000..166e40e5e7 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/readOnlyError.js @@ -0,0 +1,3 @@ +export default function _readOnlyError(name) { + throw new TypeError("\"" + name + "\" is read-only"); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/set.js b/node_modules/@babel/runtime/helpers/esm/set.js new file mode 100644 index 0000000000..9c54773906 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/set.js @@ -0,0 +1,51 @@ +import superPropBase from "./superPropBase.js"; +import defineProperty from "./defineProperty.js"; + +function set(target, property, value, receiver) { + if (typeof Reflect !== "undefined" && Reflect.set) { + set = Reflect.set; + } else { + set = function set(target, property, value, receiver) { + var base = superPropBase(target, property); + var desc; + + if (base) { + desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.set) { + desc.set.call(receiver, value); + return true; + } else if (!desc.writable) { + return false; + } + } + + desc = Object.getOwnPropertyDescriptor(receiver, property); + + if (desc) { + if (!desc.writable) { + return false; + } + + desc.value = value; + Object.defineProperty(receiver, property, desc); + } else { + defineProperty(receiver, property, value); + } + + return true; + }; + } + + return set(target, property, value, receiver); +} + +export default function _set(target, property, value, receiver, isStrict) { + var s = set(target, property, value, receiver || target); + + if (!s && isStrict) { + throw new Error('failed to set property'); + } + + return value; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js b/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js new file mode 100644 index 0000000000..e6ef03e598 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js @@ -0,0 +1,8 @@ +export default function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js b/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js new file mode 100644 index 0000000000..cadd9bb5bf --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js @@ -0,0 +1,7 @@ +export default function _skipFirstGeneratorNext(fn) { + return function () { + var it = fn.apply(this, arguments); + it.next(); + return it; + }; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/slicedToArray.js b/node_modules/@babel/runtime/helpers/esm/slicedToArray.js new file mode 100644 index 0000000000..618200b92b --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/slicedToArray.js @@ -0,0 +1,7 @@ +import arrayWithHoles from "./arrayWithHoles.js"; +import iterableToArrayLimit from "./iterableToArrayLimit.js"; +import unsupportedIterableToArray from "./unsupportedIterableToArray.js"; +import nonIterableRest from "./nonIterableRest.js"; +export default function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js b/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js new file mode 100644 index 0000000000..efc7429ef6 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js @@ -0,0 +1,7 @@ +import arrayWithHoles from "./arrayWithHoles.js"; +import iterableToArrayLimitLoose from "./iterableToArrayLimitLoose.js"; +import unsupportedIterableToArray from "./unsupportedIterableToArray.js"; +import nonIterableRest from "./nonIterableRest.js"; +export default function _slicedToArrayLoose(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimitLoose(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/superPropBase.js b/node_modules/@babel/runtime/helpers/esm/superPropBase.js new file mode 100644 index 0000000000..feffe6f7e9 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/superPropBase.js @@ -0,0 +1,9 @@ +import getPrototypeOf from "./getPrototypeOf.js"; +export default function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = getPrototypeOf(object); + if (object === null) break; + } + + return object; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js new file mode 100644 index 0000000000..421f18abde --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js @@ -0,0 +1,11 @@ +export default function _taggedTemplateLiteral(strings, raw) { + if (!raw) { + raw = strings.slice(0); + } + + return Object.freeze(Object.defineProperties(strings, { + raw: { + value: Object.freeze(raw) + } + })); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js new file mode 100644 index 0000000000..c8f081e9ee --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js @@ -0,0 +1,8 @@ +export default function _taggedTemplateLiteralLoose(strings, raw) { + if (!raw) { + raw = strings.slice(0); + } + + strings.raw = raw; + return strings; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/tdz.js b/node_modules/@babel/runtime/helpers/esm/tdz.js new file mode 100644 index 0000000000..d5d0adc8a6 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/tdz.js @@ -0,0 +1,3 @@ +export default function _tdzError(name) { + throw new ReferenceError(name + " is not defined - temporal dead zone"); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/temporalRef.js b/node_modules/@babel/runtime/helpers/esm/temporalRef.js new file mode 100644 index 0000000000..b25f7c44f4 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/temporalRef.js @@ -0,0 +1,5 @@ +import undef from "./temporalUndefined.js"; +import err from "./tdz.js"; +export default function _temporalRef(val, name) { + return val === undef ? err(name) : val; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js b/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js new file mode 100644 index 0000000000..1a35717342 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js @@ -0,0 +1 @@ +export default function _temporalUndefined() {} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/toArray.js b/node_modules/@babel/runtime/helpers/esm/toArray.js new file mode 100644 index 0000000000..ad7c871a54 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/toArray.js @@ -0,0 +1,7 @@ +import arrayWithHoles from "./arrayWithHoles.js"; +import iterableToArray from "./iterableToArray.js"; +import unsupportedIterableToArray from "./unsupportedIterableToArray.js"; +import nonIterableRest from "./nonIterableRest.js"; +export default function _toArray(arr) { + return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest(); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js b/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js new file mode 100644 index 0000000000..bd91285592 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js @@ -0,0 +1,7 @@ +import arrayWithoutHoles from "./arrayWithoutHoles.js"; +import iterableToArray from "./iterableToArray.js"; +import unsupportedIterableToArray from "./unsupportedIterableToArray.js"; +import nonIterableSpread from "./nonIterableSpread.js"; +export default function _toConsumableArray(arr) { + return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/toPrimitive.js b/node_modules/@babel/runtime/helpers/esm/toPrimitive.js new file mode 100644 index 0000000000..4cb70a546d --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/toPrimitive.js @@ -0,0 +1,13 @@ +import _typeof from "@babel/runtime/helpers/typeof"; +export default function _toPrimitive(input, hint) { + if (_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if (_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + + return (hint === "string" ? String : Number)(input); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js b/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js new file mode 100644 index 0000000000..f1ba8a258a --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js @@ -0,0 +1,6 @@ +import _typeof from "@babel/runtime/helpers/typeof"; +import toPrimitive from "./toPrimitive.js"; +export default function _toPropertyKey(arg) { + var key = toPrimitive(arg, "string"); + return _typeof(key) === "symbol" ? key : String(key); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/typeof.js b/node_modules/@babel/runtime/helpers/esm/typeof.js new file mode 100644 index 0000000000..eb444f73d8 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/typeof.js @@ -0,0 +1,15 @@ +export default function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof(obj) { + return typeof obj; + }; + } else { + _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js b/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js new file mode 100644 index 0000000000..c0f63bd5a8 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js @@ -0,0 +1,9 @@ +import arrayLikeToArray from "./arrayLikeToArray.js"; +export default function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js new file mode 100644 index 0000000000..723b2ddacd --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js @@ -0,0 +1,6 @@ +import AsyncGenerator from "./AsyncGenerator.js"; +export default function _wrapAsyncGenerator(fn) { + return function () { + return new AsyncGenerator(fn.apply(this, arguments)); + }; +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js b/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js new file mode 100644 index 0000000000..512630d0ea --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js @@ -0,0 +1,37 @@ +import getPrototypeOf from "./getPrototypeOf.js"; +import setPrototypeOf from "./setPrototypeOf.js"; +import isNativeFunction from "./isNativeFunction.js"; +import construct from "./construct.js"; +export default function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return construct(Class, arguments, getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return setPrototypeOf(Wrapper, Class); + }; + + return _wrapNativeSuper(Class); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js b/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js new file mode 100644 index 0000000000..4d65336149 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js @@ -0,0 +1,65 @@ +import _typeof from "@babel/runtime/helpers/typeof"; +import setPrototypeOf from "./setPrototypeOf.js"; +import inherits from "./inherits.js"; +export default function _wrapRegExp() { + _wrapRegExp = function _wrapRegExp(re, groups) { + return new BabelRegExp(re, undefined, groups); + }; + + var _super = RegExp.prototype; + + var _groups = new WeakMap(); + + function BabelRegExp(re, flags, groups) { + var _this = new RegExp(re, flags); + + _groups.set(_this, groups || _groups.get(re)); + + return setPrototypeOf(_this, BabelRegExp.prototype); + } + + inherits(BabelRegExp, RegExp); + + BabelRegExp.prototype.exec = function (str) { + var result = _super.exec.call(this, str); + + if (result) result.groups = buildGroups(result, this); + return result; + }; + + BabelRegExp.prototype[Symbol.replace] = function (str, substitution) { + if (typeof substitution === "string") { + var groups = _groups.get(this); + + return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) { + return "$" + groups[name]; + })); + } else if (typeof substitution === "function") { + var _this = this; + + return _super[Symbol.replace].call(this, str, function () { + var args = arguments; + + if (_typeof(args[args.length - 1]) !== "object") { + args = [].slice.call(args); + args.push(buildGroups(args, _this)); + } + + return substitution.apply(this, args); + }); + } else { + return _super[Symbol.replace].call(this, str, substitution); + } + }; + + function buildGroups(result, re) { + var g = _groups.get(re); + + return Object.keys(g).reduce(function (groups, name) { + groups[name] = result[g[name]]; + return groups; + }, Object.create(null)); + } + + return _wrapRegExp.apply(this, arguments); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js b/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js new file mode 100644 index 0000000000..9170bd45d8 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js @@ -0,0 +1,3 @@ +export default function _writeOnlyError(name) { + throw new TypeError("\"" + name + "\" is write-only"); +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/extends.js b/node_modules/@babel/runtime/helpers/extends.js new file mode 100644 index 0000000000..eaf954719d --- /dev/null +++ b/node_modules/@babel/runtime/helpers/extends.js @@ -0,0 +1,21 @@ +function _extends() { + module.exports = _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + return _extends.apply(this, arguments); +} + +module.exports = _extends; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/get.js b/node_modules/@babel/runtime/helpers/get.js new file mode 100644 index 0000000000..c681140d1d --- /dev/null +++ b/node_modules/@babel/runtime/helpers/get.js @@ -0,0 +1,27 @@ +var superPropBase = require("./superPropBase.js"); + +function _get() { + if (typeof Reflect !== "undefined" && Reflect.get) { + module.exports = _get = Reflect.get; + module.exports["default"] = module.exports, module.exports.__esModule = true; + } else { + module.exports = _get = function _get(target, property, receiver) { + var base = superPropBase(target, property); + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.get) { + return desc.get.call(arguments.length < 3 ? target : receiver); + } + + return desc.value; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } + + return _get.apply(this, arguments); +} + +module.exports = _get; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/getPrototypeOf.js b/node_modules/@babel/runtime/helpers/getPrototypeOf.js new file mode 100644 index 0000000000..a6916ebc1f --- /dev/null +++ b/node_modules/@babel/runtime/helpers/getPrototypeOf.js @@ -0,0 +1,10 @@ +function _getPrototypeOf(o) { + module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + module.exports["default"] = module.exports, module.exports.__esModule = true; + return _getPrototypeOf(o); +} + +module.exports = _getPrototypeOf; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/inherits.js b/node_modules/@babel/runtime/helpers/inherits.js new file mode 100644 index 0000000000..3003e015d0 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/inherits.js @@ -0,0 +1,19 @@ +var setPrototypeOf = require("./setPrototypeOf.js"); + +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) setPrototypeOf(subClass, superClass); +} + +module.exports = _inherits; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/inheritsLoose.js b/node_modules/@babel/runtime/helpers/inheritsLoose.js new file mode 100644 index 0000000000..93e4305967 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/inheritsLoose.js @@ -0,0 +1,10 @@ +var setPrototypeOf = require("./setPrototypeOf.js"); + +function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + setPrototypeOf(subClass, superClass); +} + +module.exports = _inheritsLoose; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/initializerDefineProperty.js b/node_modules/@babel/runtime/helpers/initializerDefineProperty.js new file mode 100644 index 0000000000..6b1069e6d5 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/initializerDefineProperty.js @@ -0,0 +1,12 @@ +function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); +} + +module.exports = _initializerDefineProperty; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/initializerWarningHelper.js b/node_modules/@babel/runtime/helpers/initializerWarningHelper.js new file mode 100644 index 0000000000..9d02886547 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/initializerWarningHelper.js @@ -0,0 +1,6 @@ +function _initializerWarningHelper(descriptor, context) { + throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); +} + +module.exports = _initializerWarningHelper; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/instanceof.js b/node_modules/@babel/runtime/helpers/instanceof.js new file mode 100644 index 0000000000..654ebc8a17 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/instanceof.js @@ -0,0 +1,10 @@ +function _instanceof(left, right) { + if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { + return !!right[Symbol.hasInstance](left); + } else { + return left instanceof right; + } +} + +module.exports = _instanceof; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/interopRequireDefault.js b/node_modules/@babel/runtime/helpers/interopRequireDefault.js new file mode 100644 index 0000000000..6a2136859b --- /dev/null +++ b/node_modules/@babel/runtime/helpers/interopRequireDefault.js @@ -0,0 +1,8 @@ +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} + +module.exports = _interopRequireDefault; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/interopRequireWildcard.js b/node_modules/@babel/runtime/helpers/interopRequireWildcard.js new file mode 100644 index 0000000000..635f8bb60b --- /dev/null +++ b/node_modules/@babel/runtime/helpers/interopRequireWildcard.js @@ -0,0 +1,54 @@ +var _typeof = require("@babel/runtime/helpers/typeof")["default"]; + +function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); +} + +function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + + if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { + return { + "default": obj + }; + } + + var cache = _getRequireWildcardCache(nodeInterop); + + if (cache && cache.has(obj)) { + return cache.get(obj); + } + + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + + newObj["default"] = obj; + + if (cache) { + cache.set(obj, newObj); + } + + return newObj; +} + +module.exports = _interopRequireWildcard; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/isNativeFunction.js b/node_modules/@babel/runtime/helpers/isNativeFunction.js new file mode 100644 index 0000000000..50eb8f5b02 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/isNativeFunction.js @@ -0,0 +1,6 @@ +function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; +} + +module.exports = _isNativeFunction; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js b/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js new file mode 100644 index 0000000000..3a201a6d99 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js @@ -0,0 +1,15 @@ +function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } +} + +module.exports = _isNativeReflectConstruct; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/iterableToArray.js b/node_modules/@babel/runtime/helpers/iterableToArray.js new file mode 100644 index 0000000000..03f955d68e --- /dev/null +++ b/node_modules/@babel/runtime/helpers/iterableToArray.js @@ -0,0 +1,6 @@ +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); +} + +module.exports = _iterableToArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js b/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js new file mode 100644 index 0000000000..da9cee0c4a --- /dev/null +++ b/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js @@ -0,0 +1,32 @@ +function _iterableToArrayLimit(arr, i) { + var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; + + if (_i == null) return; + var _arr = []; + var _n = true; + var _d = false; + + var _s, _e; + + try { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; +} + +module.exports = _iterableToArrayLimit; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js b/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js new file mode 100644 index 0000000000..fb05b126e6 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js @@ -0,0 +1,17 @@ +function _iterableToArrayLimitLoose(arr, i) { + var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); + + if (_i == null) return; + var _arr = []; + + for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) { + _arr.push(_step.value); + + if (i && _arr.length === i) break; + } + + return _arr; +} + +module.exports = _iterableToArrayLimitLoose; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/jsx.js b/node_modules/@babel/runtime/helpers/jsx.js new file mode 100644 index 0000000000..21ac8470f0 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/jsx.js @@ -0,0 +1,50 @@ +var REACT_ELEMENT_TYPE; + +function _createRawReactElement(type, props, key, children) { + if (!REACT_ELEMENT_TYPE) { + REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol["for"] && Symbol["for"]("react.element") || 0xeac7; + } + + var defaultProps = type && type.defaultProps; + var childrenLength = arguments.length - 3; + + if (!props && childrenLength !== 0) { + props = { + children: void 0 + }; + } + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = new Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 3]; + } + + props.children = childArray; + } + + if (props && defaultProps) { + for (var propName in defaultProps) { + if (props[propName] === void 0) { + props[propName] = defaultProps[propName]; + } + } + } else if (!props) { + props = defaultProps || {}; + } + + return { + $$typeof: REACT_ELEMENT_TYPE, + type: type, + key: key === undefined ? null : "" + key, + ref: null, + props: props, + _owner: null + }; +} + +module.exports = _createRawReactElement; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/maybeArrayLike.js b/node_modules/@babel/runtime/helpers/maybeArrayLike.js new file mode 100644 index 0000000000..3ab618be0a --- /dev/null +++ b/node_modules/@babel/runtime/helpers/maybeArrayLike.js @@ -0,0 +1,13 @@ +var arrayLikeToArray = require("./arrayLikeToArray.js"); + +function _maybeArrayLike(next, arr, i) { + if (arr && !Array.isArray(arr) && typeof arr.length === "number") { + var len = arr.length; + return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len); + } + + return next(arr, i); +} + +module.exports = _maybeArrayLike; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/newArrowCheck.js b/node_modules/@babel/runtime/helpers/newArrowCheck.js new file mode 100644 index 0000000000..8d7570b6a6 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/newArrowCheck.js @@ -0,0 +1,8 @@ +function _newArrowCheck(innerThis, boundThis) { + if (innerThis !== boundThis) { + throw new TypeError("Cannot instantiate an arrow function"); + } +} + +module.exports = _newArrowCheck; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/nonIterableRest.js b/node_modules/@babel/runtime/helpers/nonIterableRest.js new file mode 100644 index 0000000000..22be4f5376 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/nonIterableRest.js @@ -0,0 +1,6 @@ +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +module.exports = _nonIterableRest; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/nonIterableSpread.js b/node_modules/@babel/runtime/helpers/nonIterableSpread.js new file mode 100644 index 0000000000..4ba722d09a --- /dev/null +++ b/node_modules/@babel/runtime/helpers/nonIterableSpread.js @@ -0,0 +1,6 @@ +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +module.exports = _nonIterableSpread; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js b/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js new file mode 100644 index 0000000000..1bb88acd73 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js @@ -0,0 +1,6 @@ +function _objectDestructuringEmpty(obj) { + if (obj == null) throw new TypeError("Cannot destructure undefined"); +} + +module.exports = _objectDestructuringEmpty; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/objectSpread.js b/node_modules/@babel/runtime/helpers/objectSpread.js new file mode 100644 index 0000000000..6b340b4404 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/objectSpread.js @@ -0,0 +1,23 @@ +var defineProperty = require("./defineProperty.js"); + +function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? Object(arguments[i]) : {}; + var ownKeys = Object.keys(source); + + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + + ownKeys.forEach(function (key) { + defineProperty(target, key, source[key]); + }); + } + + return target; +} + +module.exports = _objectSpread; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/objectSpread2.js b/node_modules/@babel/runtime/helpers/objectSpread2.js new file mode 100644 index 0000000000..337d30e510 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/objectSpread2.js @@ -0,0 +1,42 @@ +var defineProperty = require("./defineProperty.js"); + +function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + + if (enumerableOnly) { + symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + } + + keys.push.apply(keys, symbols); + } + + return keys; +} + +function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; +} + +module.exports = _objectSpread2; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/objectWithoutProperties.js b/node_modules/@babel/runtime/helpers/objectWithoutProperties.js new file mode 100644 index 0000000000..c000db73cf --- /dev/null +++ b/node_modules/@babel/runtime/helpers/objectWithoutProperties.js @@ -0,0 +1,23 @@ +var objectWithoutPropertiesLoose = require("./objectWithoutPropertiesLoose.js"); + +function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; + var target = objectWithoutPropertiesLoose(source, excluded); + var key, i; + + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; + target[key] = source[key]; + } + } + + return target; +} + +module.exports = _objectWithoutProperties; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js b/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js new file mode 100644 index 0000000000..d9a73de0a3 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js @@ -0,0 +1,17 @@ +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + + return target; +} + +module.exports = _objectWithoutPropertiesLoose; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js b/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js new file mode 100644 index 0000000000..21455d38a2 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js @@ -0,0 +1,16 @@ +var _typeof = require("@babel/runtime/helpers/typeof")["default"]; + +var assertThisInitialized = require("./assertThisInitialized.js"); + +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); +} + +module.exports = _possibleConstructorReturn; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/readOnlyError.js b/node_modules/@babel/runtime/helpers/readOnlyError.js new file mode 100644 index 0000000000..e805f89c08 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/readOnlyError.js @@ -0,0 +1,6 @@ +function _readOnlyError(name) { + throw new TypeError("\"" + name + "\" is read-only"); +} + +module.exports = _readOnlyError; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/set.js b/node_modules/@babel/runtime/helpers/set.js new file mode 100644 index 0000000000..b7d184dc54 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/set.js @@ -0,0 +1,55 @@ +var superPropBase = require("./superPropBase.js"); + +var defineProperty = require("./defineProperty.js"); + +function set(target, property, value, receiver) { + if (typeof Reflect !== "undefined" && Reflect.set) { + set = Reflect.set; + } else { + set = function set(target, property, value, receiver) { + var base = superPropBase(target, property); + var desc; + + if (base) { + desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.set) { + desc.set.call(receiver, value); + return true; + } else if (!desc.writable) { + return false; + } + } + + desc = Object.getOwnPropertyDescriptor(receiver, property); + + if (desc) { + if (!desc.writable) { + return false; + } + + desc.value = value; + Object.defineProperty(receiver, property, desc); + } else { + defineProperty(receiver, property, value); + } + + return true; + }; + } + + return set(target, property, value, receiver); +} + +function _set(target, property, value, receiver, isStrict) { + var s = set(target, property, value, receiver || target); + + if (!s && isStrict) { + throw new Error('failed to set property'); + } + + return value; +} + +module.exports = _set; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/setPrototypeOf.js b/node_modules/@babel/runtime/helpers/setPrototypeOf.js new file mode 100644 index 0000000000..415797b3a0 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/setPrototypeOf.js @@ -0,0 +1,12 @@ +function _setPrototypeOf(o, p) { + module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + return _setPrototypeOf(o, p); +} + +module.exports = _setPrototypeOf; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js b/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js new file mode 100644 index 0000000000..ed605859d3 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js @@ -0,0 +1,10 @@ +function _skipFirstGeneratorNext(fn) { + return function () { + var it = fn.apply(this, arguments); + it.next(); + return it; + }; +} + +module.exports = _skipFirstGeneratorNext; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/slicedToArray.js b/node_modules/@babel/runtime/helpers/slicedToArray.js new file mode 100644 index 0000000000..101f404b17 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/slicedToArray.js @@ -0,0 +1,14 @@ +var arrayWithHoles = require("./arrayWithHoles.js"); + +var iterableToArrayLimit = require("./iterableToArrayLimit.js"); + +var unsupportedIterableToArray = require("./unsupportedIterableToArray.js"); + +var nonIterableRest = require("./nonIterableRest.js"); + +function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); +} + +module.exports = _slicedToArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js b/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js new file mode 100644 index 0000000000..188db631de --- /dev/null +++ b/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js @@ -0,0 +1,14 @@ +var arrayWithHoles = require("./arrayWithHoles.js"); + +var iterableToArrayLimitLoose = require("./iterableToArrayLimitLoose.js"); + +var unsupportedIterableToArray = require("./unsupportedIterableToArray.js"); + +var nonIterableRest = require("./nonIterableRest.js"); + +function _slicedToArrayLoose(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimitLoose(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); +} + +module.exports = _slicedToArrayLoose; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/superPropBase.js b/node_modules/@babel/runtime/helpers/superPropBase.js new file mode 100644 index 0000000000..ce12a88617 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/superPropBase.js @@ -0,0 +1,13 @@ +var getPrototypeOf = require("./getPrototypeOf.js"); + +function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = getPrototypeOf(object); + if (object === null) break; + } + + return object; +} + +module.exports = _superPropBase; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js b/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js new file mode 100644 index 0000000000..1a524b387f --- /dev/null +++ b/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js @@ -0,0 +1,14 @@ +function _taggedTemplateLiteral(strings, raw) { + if (!raw) { + raw = strings.slice(0); + } + + return Object.freeze(Object.defineProperties(strings, { + raw: { + value: Object.freeze(raw) + } + })); +} + +module.exports = _taggedTemplateLiteral; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js b/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js new file mode 100644 index 0000000000..ab78e62fd2 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js @@ -0,0 +1,11 @@ +function _taggedTemplateLiteralLoose(strings, raw) { + if (!raw) { + raw = strings.slice(0); + } + + strings.raw = raw; + return strings; +} + +module.exports = _taggedTemplateLiteralLoose; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/tdz.js b/node_modules/@babel/runtime/helpers/tdz.js new file mode 100644 index 0000000000..a5b35a6b6b --- /dev/null +++ b/node_modules/@babel/runtime/helpers/tdz.js @@ -0,0 +1,6 @@ +function _tdzError(name) { + throw new ReferenceError(name + " is not defined - temporal dead zone"); +} + +module.exports = _tdzError; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/temporalRef.js b/node_modules/@babel/runtime/helpers/temporalRef.js new file mode 100644 index 0000000000..d4e9460656 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/temporalRef.js @@ -0,0 +1,10 @@ +var temporalUndefined = require("./temporalUndefined.js"); + +var tdz = require("./tdz.js"); + +function _temporalRef(val, name) { + return val === temporalUndefined ? tdz(name) : val; +} + +module.exports = _temporalRef; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/temporalUndefined.js b/node_modules/@babel/runtime/helpers/temporalUndefined.js new file mode 100644 index 0000000000..aeae645a0f --- /dev/null +++ b/node_modules/@babel/runtime/helpers/temporalUndefined.js @@ -0,0 +1,4 @@ +function _temporalUndefined() {} + +module.exports = _temporalUndefined; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/toArray.js b/node_modules/@babel/runtime/helpers/toArray.js new file mode 100644 index 0000000000..3b911bda31 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/toArray.js @@ -0,0 +1,14 @@ +var arrayWithHoles = require("./arrayWithHoles.js"); + +var iterableToArray = require("./iterableToArray.js"); + +var unsupportedIterableToArray = require("./unsupportedIterableToArray.js"); + +var nonIterableRest = require("./nonIterableRest.js"); + +function _toArray(arr) { + return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest(); +} + +module.exports = _toArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/toConsumableArray.js b/node_modules/@babel/runtime/helpers/toConsumableArray.js new file mode 100644 index 0000000000..f084cd1bcd --- /dev/null +++ b/node_modules/@babel/runtime/helpers/toConsumableArray.js @@ -0,0 +1,14 @@ +var arrayWithoutHoles = require("./arrayWithoutHoles.js"); + +var iterableToArray = require("./iterableToArray.js"); + +var unsupportedIterableToArray = require("./unsupportedIterableToArray.js"); + +var nonIterableSpread = require("./nonIterableSpread.js"); + +function _toConsumableArray(arr) { + return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); +} + +module.exports = _toConsumableArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/toPrimitive.js b/node_modules/@babel/runtime/helpers/toPrimitive.js new file mode 100644 index 0000000000..ac40338459 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/toPrimitive.js @@ -0,0 +1,17 @@ +var _typeof = require("@babel/runtime/helpers/typeof")["default"]; + +function _toPrimitive(input, hint) { + if (_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if (_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + + return (hint === "string" ? String : Number)(input); +} + +module.exports = _toPrimitive; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/toPropertyKey.js b/node_modules/@babel/runtime/helpers/toPropertyKey.js new file mode 100644 index 0000000000..066b3f279d --- /dev/null +++ b/node_modules/@babel/runtime/helpers/toPropertyKey.js @@ -0,0 +1,11 @@ +var _typeof = require("@babel/runtime/helpers/typeof")["default"]; + +var toPrimitive = require("./toPrimitive.js"); + +function _toPropertyKey(arg) { + var key = toPrimitive(arg, "string"); + return _typeof(key) === "symbol" ? key : String(key); +} + +module.exports = _toPropertyKey; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/typeof.js b/node_modules/@babel/runtime/helpers/typeof.js new file mode 100644 index 0000000000..02a5d8a8c5 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/typeof.js @@ -0,0 +1,22 @@ +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + module.exports = _typeof = function _typeof(obj) { + return typeof obj; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } else { + module.exports = _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } + + return _typeof(obj); +} + +module.exports = _typeof; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js b/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js new file mode 100644 index 0000000000..11bca7b566 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js @@ -0,0 +1,13 @@ +var arrayLikeToArray = require("./arrayLikeToArray.js"); + +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); +} + +module.exports = _unsupportedIterableToArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js b/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js new file mode 100644 index 0000000000..057cd196b8 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js @@ -0,0 +1,10 @@ +var AsyncGenerator = require("./AsyncGenerator.js"); + +function _wrapAsyncGenerator(fn) { + return function () { + return new AsyncGenerator(fn.apply(this, arguments)); + }; +} + +module.exports = _wrapAsyncGenerator; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/wrapNativeSuper.js b/node_modules/@babel/runtime/helpers/wrapNativeSuper.js new file mode 100644 index 0000000000..981c8dd4e0 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/wrapNativeSuper.js @@ -0,0 +1,45 @@ +var getPrototypeOf = require("./getPrototypeOf.js"); + +var setPrototypeOf = require("./setPrototypeOf.js"); + +var isNativeFunction = require("./isNativeFunction.js"); + +var construct = require("./construct.js"); + +function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return construct(Class, arguments, getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return setPrototypeOf(Wrapper, Class); + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + return _wrapNativeSuper(Class); +} + +module.exports = _wrapNativeSuper; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/wrapRegExp.js b/node_modules/@babel/runtime/helpers/wrapRegExp.js new file mode 100644 index 0000000000..e80a8b6ab2 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/wrapRegExp.js @@ -0,0 +1,72 @@ +var _typeof = require("@babel/runtime/helpers/typeof")["default"]; + +var setPrototypeOf = require("./setPrototypeOf.js"); + +var inherits = require("./inherits.js"); + +function _wrapRegExp() { + module.exports = _wrapRegExp = function _wrapRegExp(re, groups) { + return new BabelRegExp(re, undefined, groups); + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + var _super = RegExp.prototype; + + var _groups = new WeakMap(); + + function BabelRegExp(re, flags, groups) { + var _this = new RegExp(re, flags); + + _groups.set(_this, groups || _groups.get(re)); + + return setPrototypeOf(_this, BabelRegExp.prototype); + } + + inherits(BabelRegExp, RegExp); + + BabelRegExp.prototype.exec = function (str) { + var result = _super.exec.call(this, str); + + if (result) result.groups = buildGroups(result, this); + return result; + }; + + BabelRegExp.prototype[Symbol.replace] = function (str, substitution) { + if (typeof substitution === "string") { + var groups = _groups.get(this); + + return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) { + return "$" + groups[name]; + })); + } else if (typeof substitution === "function") { + var _this = this; + + return _super[Symbol.replace].call(this, str, function () { + var args = arguments; + + if (_typeof(args[args.length - 1]) !== "object") { + args = [].slice.call(args); + args.push(buildGroups(args, _this)); + } + + return substitution.apply(this, args); + }); + } else { + return _super[Symbol.replace].call(this, str, substitution); + } + }; + + function buildGroups(result, re) { + var g = _groups.get(re); + + return Object.keys(g).reduce(function (groups, name) { + groups[name] = result[g[name]]; + return groups; + }, Object.create(null)); + } + + return _wrapRegExp.apply(this, arguments); +} + +module.exports = _wrapRegExp; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/helpers/writeOnlyError.js b/node_modules/@babel/runtime/helpers/writeOnlyError.js new file mode 100644 index 0000000000..6751a74d58 --- /dev/null +++ b/node_modules/@babel/runtime/helpers/writeOnlyError.js @@ -0,0 +1,6 @@ +function _writeOnlyError(name) { + throw new TypeError("\"" + name + "\" is write-only"); +} + +module.exports = _writeOnlyError; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/node_modules/@babel/runtime/package.json b/node_modules/@babel/runtime/package.json new file mode 100644 index 0000000000..7c72887525 --- /dev/null +++ b/node_modules/@babel/runtime/package.json @@ -0,0 +1,848 @@ +{ + "name": "@babel/runtime", + "version": "7.16.3", + "description": "babel's modular runtime helpers", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-runtime" + }, + "homepage": "https://babel.dev/docs/en/next/babel-runtime", + "author": "The Babel Team (https://babel.dev/team)", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "exports": { + "./helpers/asyncIterator": [ + { + "node": "./helpers/asyncIterator.js", + "import": "./helpers/esm/asyncIterator.js", + "default": "./helpers/asyncIterator.js" + }, + "./helpers/asyncIterator.js" + ], + "./helpers/esm/asyncIterator": "./helpers/esm/asyncIterator.js", + "./helpers/jsx": [ + { + "node": "./helpers/jsx.js", + "import": "./helpers/esm/jsx.js", + "default": "./helpers/jsx.js" + }, + "./helpers/jsx.js" + ], + "./helpers/esm/jsx": "./helpers/esm/jsx.js", + "./helpers/objectSpread2": [ + { + "node": "./helpers/objectSpread2.js", + "import": "./helpers/esm/objectSpread2.js", + "default": "./helpers/objectSpread2.js" + }, + "./helpers/objectSpread2.js" + ], + "./helpers/esm/objectSpread2": "./helpers/esm/objectSpread2.js", + "./helpers/typeof": [ + { + "node": "./helpers/typeof.js", + "import": "./helpers/esm/typeof.js", + "default": "./helpers/typeof.js" + }, + "./helpers/typeof.js" + ], + "./helpers/esm/typeof": "./helpers/esm/typeof.js", + "./helpers/wrapRegExp": [ + { + "node": "./helpers/wrapRegExp.js", + "import": "./helpers/esm/wrapRegExp.js", + "default": "./helpers/wrapRegExp.js" + }, + "./helpers/wrapRegExp.js" + ], + "./helpers/esm/wrapRegExp": "./helpers/esm/wrapRegExp.js", + "./helpers/AwaitValue": [ + { + "node": "./helpers/AwaitValue.js", + "import": "./helpers/esm/AwaitValue.js", + "default": "./helpers/AwaitValue.js" + }, + "./helpers/AwaitValue.js" + ], + "./helpers/esm/AwaitValue": "./helpers/esm/AwaitValue.js", + "./helpers/AsyncGenerator": [ + { + "node": "./helpers/AsyncGenerator.js", + "import": "./helpers/esm/AsyncGenerator.js", + "default": "./helpers/AsyncGenerator.js" + }, + "./helpers/AsyncGenerator.js" + ], + "./helpers/esm/AsyncGenerator": "./helpers/esm/AsyncGenerator.js", + "./helpers/wrapAsyncGenerator": [ + { + "node": "./helpers/wrapAsyncGenerator.js", + "import": "./helpers/esm/wrapAsyncGenerator.js", + "default": "./helpers/wrapAsyncGenerator.js" + }, + "./helpers/wrapAsyncGenerator.js" + ], + "./helpers/esm/wrapAsyncGenerator": "./helpers/esm/wrapAsyncGenerator.js", + "./helpers/awaitAsyncGenerator": [ + { + "node": "./helpers/awaitAsyncGenerator.js", + "import": "./helpers/esm/awaitAsyncGenerator.js", + "default": "./helpers/awaitAsyncGenerator.js" + }, + "./helpers/awaitAsyncGenerator.js" + ], + "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js", + "./helpers/asyncGeneratorDelegate": [ + { + "node": "./helpers/asyncGeneratorDelegate.js", + "import": "./helpers/esm/asyncGeneratorDelegate.js", + "default": "./helpers/asyncGeneratorDelegate.js" + }, + "./helpers/asyncGeneratorDelegate.js" + ], + "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js", + "./helpers/asyncToGenerator": [ + { + "node": "./helpers/asyncToGenerator.js", + "import": "./helpers/esm/asyncToGenerator.js", + "default": "./helpers/asyncToGenerator.js" + }, + "./helpers/asyncToGenerator.js" + ], + "./helpers/esm/asyncToGenerator": "./helpers/esm/asyncToGenerator.js", + "./helpers/classCallCheck": [ + { + "node": "./helpers/classCallCheck.js", + "import": "./helpers/esm/classCallCheck.js", + "default": "./helpers/classCallCheck.js" + }, + "./helpers/classCallCheck.js" + ], + "./helpers/esm/classCallCheck": "./helpers/esm/classCallCheck.js", + "./helpers/createClass": [ + { + "node": "./helpers/createClass.js", + "import": "./helpers/esm/createClass.js", + "default": "./helpers/createClass.js" + }, + "./helpers/createClass.js" + ], + "./helpers/esm/createClass": "./helpers/esm/createClass.js", + "./helpers/defineEnumerableProperties": [ + { + "node": "./helpers/defineEnumerableProperties.js", + "import": "./helpers/esm/defineEnumerableProperties.js", + "default": "./helpers/defineEnumerableProperties.js" + }, + "./helpers/defineEnumerableProperties.js" + ], + "./helpers/esm/defineEnumerableProperties": "./helpers/esm/defineEnumerableProperties.js", + "./helpers/defaults": [ + { + "node": "./helpers/defaults.js", + "import": "./helpers/esm/defaults.js", + "default": "./helpers/defaults.js" + }, + "./helpers/defaults.js" + ], + "./helpers/esm/defaults": "./helpers/esm/defaults.js", + "./helpers/defineProperty": [ + { + "node": "./helpers/defineProperty.js", + "import": "./helpers/esm/defineProperty.js", + "default": "./helpers/defineProperty.js" + }, + "./helpers/defineProperty.js" + ], + "./helpers/esm/defineProperty": "./helpers/esm/defineProperty.js", + "./helpers/extends": [ + { + "node": "./helpers/extends.js", + "import": "./helpers/esm/extends.js", + "default": "./helpers/extends.js" + }, + "./helpers/extends.js" + ], + "./helpers/esm/extends": "./helpers/esm/extends.js", + "./helpers/objectSpread": [ + { + "node": "./helpers/objectSpread.js", + "import": "./helpers/esm/objectSpread.js", + "default": "./helpers/objectSpread.js" + }, + "./helpers/objectSpread.js" + ], + "./helpers/esm/objectSpread": "./helpers/esm/objectSpread.js", + "./helpers/inherits": [ + { + "node": "./helpers/inherits.js", + "import": "./helpers/esm/inherits.js", + "default": "./helpers/inherits.js" + }, + "./helpers/inherits.js" + ], + "./helpers/esm/inherits": "./helpers/esm/inherits.js", + "./helpers/inheritsLoose": [ + { + "node": "./helpers/inheritsLoose.js", + "import": "./helpers/esm/inheritsLoose.js", + "default": "./helpers/inheritsLoose.js" + }, + "./helpers/inheritsLoose.js" + ], + "./helpers/esm/inheritsLoose": "./helpers/esm/inheritsLoose.js", + "./helpers/getPrototypeOf": [ + { + "node": "./helpers/getPrototypeOf.js", + "import": "./helpers/esm/getPrototypeOf.js", + "default": "./helpers/getPrototypeOf.js" + }, + "./helpers/getPrototypeOf.js" + ], + "./helpers/esm/getPrototypeOf": "./helpers/esm/getPrototypeOf.js", + "./helpers/setPrototypeOf": [ + { + "node": "./helpers/setPrototypeOf.js", + "import": "./helpers/esm/setPrototypeOf.js", + "default": "./helpers/setPrototypeOf.js" + }, + "./helpers/setPrototypeOf.js" + ], + "./helpers/esm/setPrototypeOf": "./helpers/esm/setPrototypeOf.js", + "./helpers/isNativeReflectConstruct": [ + { + "node": "./helpers/isNativeReflectConstruct.js", + "import": "./helpers/esm/isNativeReflectConstruct.js", + "default": "./helpers/isNativeReflectConstruct.js" + }, + "./helpers/isNativeReflectConstruct.js" + ], + "./helpers/esm/isNativeReflectConstruct": "./helpers/esm/isNativeReflectConstruct.js", + "./helpers/construct": [ + { + "node": "./helpers/construct.js", + "import": "./helpers/esm/construct.js", + "default": "./helpers/construct.js" + }, + "./helpers/construct.js" + ], + "./helpers/esm/construct": "./helpers/esm/construct.js", + "./helpers/isNativeFunction": [ + { + "node": "./helpers/isNativeFunction.js", + "import": "./helpers/esm/isNativeFunction.js", + "default": "./helpers/isNativeFunction.js" + }, + "./helpers/isNativeFunction.js" + ], + "./helpers/esm/isNativeFunction": "./helpers/esm/isNativeFunction.js", + "./helpers/wrapNativeSuper": [ + { + "node": "./helpers/wrapNativeSuper.js", + "import": "./helpers/esm/wrapNativeSuper.js", + "default": "./helpers/wrapNativeSuper.js" + }, + "./helpers/wrapNativeSuper.js" + ], + "./helpers/esm/wrapNativeSuper": "./helpers/esm/wrapNativeSuper.js", + "./helpers/instanceof": [ + { + "node": "./helpers/instanceof.js", + "import": "./helpers/esm/instanceof.js", + "default": "./helpers/instanceof.js" + }, + "./helpers/instanceof.js" + ], + "./helpers/esm/instanceof": "./helpers/esm/instanceof.js", + "./helpers/interopRequireDefault": [ + { + "node": "./helpers/interopRequireDefault.js", + "import": "./helpers/esm/interopRequireDefault.js", + "default": "./helpers/interopRequireDefault.js" + }, + "./helpers/interopRequireDefault.js" + ], + "./helpers/esm/interopRequireDefault": "./helpers/esm/interopRequireDefault.js", + "./helpers/interopRequireWildcard": [ + { + "node": "./helpers/interopRequireWildcard.js", + "import": "./helpers/esm/interopRequireWildcard.js", + "default": "./helpers/interopRequireWildcard.js" + }, + "./helpers/interopRequireWildcard.js" + ], + "./helpers/esm/interopRequireWildcard": "./helpers/esm/interopRequireWildcard.js", + "./helpers/newArrowCheck": [ + { + "node": "./helpers/newArrowCheck.js", + "import": "./helpers/esm/newArrowCheck.js", + "default": "./helpers/newArrowCheck.js" + }, + "./helpers/newArrowCheck.js" + ], + "./helpers/esm/newArrowCheck": "./helpers/esm/newArrowCheck.js", + "./helpers/objectDestructuringEmpty": [ + { + "node": "./helpers/objectDestructuringEmpty.js", + "import": "./helpers/esm/objectDestructuringEmpty.js", + "default": "./helpers/objectDestructuringEmpty.js" + }, + "./helpers/objectDestructuringEmpty.js" + ], + "./helpers/esm/objectDestructuringEmpty": "./helpers/esm/objectDestructuringEmpty.js", + "./helpers/objectWithoutPropertiesLoose": [ + { + "node": "./helpers/objectWithoutPropertiesLoose.js", + "import": "./helpers/esm/objectWithoutPropertiesLoose.js", + "default": "./helpers/objectWithoutPropertiesLoose.js" + }, + "./helpers/objectWithoutPropertiesLoose.js" + ], + "./helpers/esm/objectWithoutPropertiesLoose": "./helpers/esm/objectWithoutPropertiesLoose.js", + "./helpers/objectWithoutProperties": [ + { + "node": "./helpers/objectWithoutProperties.js", + "import": "./helpers/esm/objectWithoutProperties.js", + "default": "./helpers/objectWithoutProperties.js" + }, + "./helpers/objectWithoutProperties.js" + ], + "./helpers/esm/objectWithoutProperties": "./helpers/esm/objectWithoutProperties.js", + "./helpers/assertThisInitialized": [ + { + "node": "./helpers/assertThisInitialized.js", + "import": "./helpers/esm/assertThisInitialized.js", + "default": "./helpers/assertThisInitialized.js" + }, + "./helpers/assertThisInitialized.js" + ], + "./helpers/esm/assertThisInitialized": "./helpers/esm/assertThisInitialized.js", + "./helpers/possibleConstructorReturn": [ + { + "node": "./helpers/possibleConstructorReturn.js", + "import": "./helpers/esm/possibleConstructorReturn.js", + "default": "./helpers/possibleConstructorReturn.js" + }, + "./helpers/possibleConstructorReturn.js" + ], + "./helpers/esm/possibleConstructorReturn": "./helpers/esm/possibleConstructorReturn.js", + "./helpers/createSuper": [ + { + "node": "./helpers/createSuper.js", + "import": "./helpers/esm/createSuper.js", + "default": "./helpers/createSuper.js" + }, + "./helpers/createSuper.js" + ], + "./helpers/esm/createSuper": "./helpers/esm/createSuper.js", + "./helpers/superPropBase": [ + { + "node": "./helpers/superPropBase.js", + "import": "./helpers/esm/superPropBase.js", + "default": "./helpers/superPropBase.js" + }, + "./helpers/superPropBase.js" + ], + "./helpers/esm/superPropBase": "./helpers/esm/superPropBase.js", + "./helpers/get": [ + { + "node": "./helpers/get.js", + "import": "./helpers/esm/get.js", + "default": "./helpers/get.js" + }, + "./helpers/get.js" + ], + "./helpers/esm/get": "./helpers/esm/get.js", + "./helpers/set": [ + { + "node": "./helpers/set.js", + "import": "./helpers/esm/set.js", + "default": "./helpers/set.js" + }, + "./helpers/set.js" + ], + "./helpers/esm/set": "./helpers/esm/set.js", + "./helpers/taggedTemplateLiteral": [ + { + "node": "./helpers/taggedTemplateLiteral.js", + "import": "./helpers/esm/taggedTemplateLiteral.js", + "default": "./helpers/taggedTemplateLiteral.js" + }, + "./helpers/taggedTemplateLiteral.js" + ], + "./helpers/esm/taggedTemplateLiteral": "./helpers/esm/taggedTemplateLiteral.js", + "./helpers/taggedTemplateLiteralLoose": [ + { + "node": "./helpers/taggedTemplateLiteralLoose.js", + "import": "./helpers/esm/taggedTemplateLiteralLoose.js", + "default": "./helpers/taggedTemplateLiteralLoose.js" + }, + "./helpers/taggedTemplateLiteralLoose.js" + ], + "./helpers/esm/taggedTemplateLiteralLoose": "./helpers/esm/taggedTemplateLiteralLoose.js", + "./helpers/readOnlyError": [ + { + "node": "./helpers/readOnlyError.js", + "import": "./helpers/esm/readOnlyError.js", + "default": "./helpers/readOnlyError.js" + }, + "./helpers/readOnlyError.js" + ], + "./helpers/esm/readOnlyError": "./helpers/esm/readOnlyError.js", + "./helpers/writeOnlyError": [ + { + "node": "./helpers/writeOnlyError.js", + "import": "./helpers/esm/writeOnlyError.js", + "default": "./helpers/writeOnlyError.js" + }, + "./helpers/writeOnlyError.js" + ], + "./helpers/esm/writeOnlyError": "./helpers/esm/writeOnlyError.js", + "./helpers/classNameTDZError": [ + { + "node": "./helpers/classNameTDZError.js", + "import": "./helpers/esm/classNameTDZError.js", + "default": "./helpers/classNameTDZError.js" + }, + "./helpers/classNameTDZError.js" + ], + "./helpers/esm/classNameTDZError": "./helpers/esm/classNameTDZError.js", + "./helpers/temporalUndefined": [ + { + "node": "./helpers/temporalUndefined.js", + "import": "./helpers/esm/temporalUndefined.js", + "default": "./helpers/temporalUndefined.js" + }, + "./helpers/temporalUndefined.js" + ], + "./helpers/esm/temporalUndefined": "./helpers/esm/temporalUndefined.js", + "./helpers/tdz": [ + { + "node": "./helpers/tdz.js", + "import": "./helpers/esm/tdz.js", + "default": "./helpers/tdz.js" + }, + "./helpers/tdz.js" + ], + "./helpers/esm/tdz": "./helpers/esm/tdz.js", + "./helpers/temporalRef": [ + { + "node": "./helpers/temporalRef.js", + "import": "./helpers/esm/temporalRef.js", + "default": "./helpers/temporalRef.js" + }, + "./helpers/temporalRef.js" + ], + "./helpers/esm/temporalRef": "./helpers/esm/temporalRef.js", + "./helpers/slicedToArray": [ + { + "node": "./helpers/slicedToArray.js", + "import": "./helpers/esm/slicedToArray.js", + "default": "./helpers/slicedToArray.js" + }, + "./helpers/slicedToArray.js" + ], + "./helpers/esm/slicedToArray": "./helpers/esm/slicedToArray.js", + "./helpers/slicedToArrayLoose": [ + { + "node": "./helpers/slicedToArrayLoose.js", + "import": "./helpers/esm/slicedToArrayLoose.js", + "default": "./helpers/slicedToArrayLoose.js" + }, + "./helpers/slicedToArrayLoose.js" + ], + "./helpers/esm/slicedToArrayLoose": "./helpers/esm/slicedToArrayLoose.js", + "./helpers/toArray": [ + { + "node": "./helpers/toArray.js", + "import": "./helpers/esm/toArray.js", + "default": "./helpers/toArray.js" + }, + "./helpers/toArray.js" + ], + "./helpers/esm/toArray": "./helpers/esm/toArray.js", + "./helpers/toConsumableArray": [ + { + "node": "./helpers/toConsumableArray.js", + "import": "./helpers/esm/toConsumableArray.js", + "default": "./helpers/toConsumableArray.js" + }, + "./helpers/toConsumableArray.js" + ], + "./helpers/esm/toConsumableArray": "./helpers/esm/toConsumableArray.js", + "./helpers/arrayWithoutHoles": [ + { + "node": "./helpers/arrayWithoutHoles.js", + "import": "./helpers/esm/arrayWithoutHoles.js", + "default": "./helpers/arrayWithoutHoles.js" + }, + "./helpers/arrayWithoutHoles.js" + ], + "./helpers/esm/arrayWithoutHoles": "./helpers/esm/arrayWithoutHoles.js", + "./helpers/arrayWithHoles": [ + { + "node": "./helpers/arrayWithHoles.js", + "import": "./helpers/esm/arrayWithHoles.js", + "default": "./helpers/arrayWithHoles.js" + }, + "./helpers/arrayWithHoles.js" + ], + "./helpers/esm/arrayWithHoles": "./helpers/esm/arrayWithHoles.js", + "./helpers/maybeArrayLike": [ + { + "node": "./helpers/maybeArrayLike.js", + "import": "./helpers/esm/maybeArrayLike.js", + "default": "./helpers/maybeArrayLike.js" + }, + "./helpers/maybeArrayLike.js" + ], + "./helpers/esm/maybeArrayLike": "./helpers/esm/maybeArrayLike.js", + "./helpers/iterableToArray": [ + { + "node": "./helpers/iterableToArray.js", + "import": "./helpers/esm/iterableToArray.js", + "default": "./helpers/iterableToArray.js" + }, + "./helpers/iterableToArray.js" + ], + "./helpers/esm/iterableToArray": "./helpers/esm/iterableToArray.js", + "./helpers/iterableToArrayLimit": [ + { + "node": "./helpers/iterableToArrayLimit.js", + "import": "./helpers/esm/iterableToArrayLimit.js", + "default": "./helpers/iterableToArrayLimit.js" + }, + "./helpers/iterableToArrayLimit.js" + ], + "./helpers/esm/iterableToArrayLimit": "./helpers/esm/iterableToArrayLimit.js", + "./helpers/iterableToArrayLimitLoose": [ + { + "node": "./helpers/iterableToArrayLimitLoose.js", + "import": "./helpers/esm/iterableToArrayLimitLoose.js", + "default": "./helpers/iterableToArrayLimitLoose.js" + }, + "./helpers/iterableToArrayLimitLoose.js" + ], + "./helpers/esm/iterableToArrayLimitLoose": "./helpers/esm/iterableToArrayLimitLoose.js", + "./helpers/unsupportedIterableToArray": [ + { + "node": "./helpers/unsupportedIterableToArray.js", + "import": "./helpers/esm/unsupportedIterableToArray.js", + "default": "./helpers/unsupportedIterableToArray.js" + }, + "./helpers/unsupportedIterableToArray.js" + ], + "./helpers/esm/unsupportedIterableToArray": "./helpers/esm/unsupportedIterableToArray.js", + "./helpers/arrayLikeToArray": [ + { + "node": "./helpers/arrayLikeToArray.js", + "import": "./helpers/esm/arrayLikeToArray.js", + "default": "./helpers/arrayLikeToArray.js" + }, + "./helpers/arrayLikeToArray.js" + ], + "./helpers/esm/arrayLikeToArray": "./helpers/esm/arrayLikeToArray.js", + "./helpers/nonIterableSpread": [ + { + "node": "./helpers/nonIterableSpread.js", + "import": "./helpers/esm/nonIterableSpread.js", + "default": "./helpers/nonIterableSpread.js" + }, + "./helpers/nonIterableSpread.js" + ], + "./helpers/esm/nonIterableSpread": "./helpers/esm/nonIterableSpread.js", + "./helpers/nonIterableRest": [ + { + "node": "./helpers/nonIterableRest.js", + "import": "./helpers/esm/nonIterableRest.js", + "default": "./helpers/nonIterableRest.js" + }, + "./helpers/nonIterableRest.js" + ], + "./helpers/esm/nonIterableRest": "./helpers/esm/nonIterableRest.js", + "./helpers/createForOfIteratorHelper": [ + { + "node": "./helpers/createForOfIteratorHelper.js", + "import": "./helpers/esm/createForOfIteratorHelper.js", + "default": "./helpers/createForOfIteratorHelper.js" + }, + "./helpers/createForOfIteratorHelper.js" + ], + "./helpers/esm/createForOfIteratorHelper": "./helpers/esm/createForOfIteratorHelper.js", + "./helpers/createForOfIteratorHelperLoose": [ + { + "node": "./helpers/createForOfIteratorHelperLoose.js", + "import": "./helpers/esm/createForOfIteratorHelperLoose.js", + "default": "./helpers/createForOfIteratorHelperLoose.js" + }, + "./helpers/createForOfIteratorHelperLoose.js" + ], + "./helpers/esm/createForOfIteratorHelperLoose": "./helpers/esm/createForOfIteratorHelperLoose.js", + "./helpers/skipFirstGeneratorNext": [ + { + "node": "./helpers/skipFirstGeneratorNext.js", + "import": "./helpers/esm/skipFirstGeneratorNext.js", + "default": "./helpers/skipFirstGeneratorNext.js" + }, + "./helpers/skipFirstGeneratorNext.js" + ], + "./helpers/esm/skipFirstGeneratorNext": "./helpers/esm/skipFirstGeneratorNext.js", + "./helpers/toPrimitive": [ + { + "node": "./helpers/toPrimitive.js", + "import": "./helpers/esm/toPrimitive.js", + "default": "./helpers/toPrimitive.js" + }, + "./helpers/toPrimitive.js" + ], + "./helpers/esm/toPrimitive": "./helpers/esm/toPrimitive.js", + "./helpers/toPropertyKey": [ + { + "node": "./helpers/toPropertyKey.js", + "import": "./helpers/esm/toPropertyKey.js", + "default": "./helpers/toPropertyKey.js" + }, + "./helpers/toPropertyKey.js" + ], + "./helpers/esm/toPropertyKey": "./helpers/esm/toPropertyKey.js", + "./helpers/initializerWarningHelper": [ + { + "node": "./helpers/initializerWarningHelper.js", + "import": "./helpers/esm/initializerWarningHelper.js", + "default": "./helpers/initializerWarningHelper.js" + }, + "./helpers/initializerWarningHelper.js" + ], + "./helpers/esm/initializerWarningHelper": "./helpers/esm/initializerWarningHelper.js", + "./helpers/initializerDefineProperty": [ + { + "node": "./helpers/initializerDefineProperty.js", + "import": "./helpers/esm/initializerDefineProperty.js", + "default": "./helpers/initializerDefineProperty.js" + }, + "./helpers/initializerDefineProperty.js" + ], + "./helpers/esm/initializerDefineProperty": "./helpers/esm/initializerDefineProperty.js", + "./helpers/applyDecoratedDescriptor": [ + { + "node": "./helpers/applyDecoratedDescriptor.js", + "import": "./helpers/esm/applyDecoratedDescriptor.js", + "default": "./helpers/applyDecoratedDescriptor.js" + }, + "./helpers/applyDecoratedDescriptor.js" + ], + "./helpers/esm/applyDecoratedDescriptor": "./helpers/esm/applyDecoratedDescriptor.js", + "./helpers/classPrivateFieldLooseKey": [ + { + "node": "./helpers/classPrivateFieldLooseKey.js", + "import": "./helpers/esm/classPrivateFieldLooseKey.js", + "default": "./helpers/classPrivateFieldLooseKey.js" + }, + "./helpers/classPrivateFieldLooseKey.js" + ], + "./helpers/esm/classPrivateFieldLooseKey": "./helpers/esm/classPrivateFieldLooseKey.js", + "./helpers/classPrivateFieldLooseBase": [ + { + "node": "./helpers/classPrivateFieldLooseBase.js", + "import": "./helpers/esm/classPrivateFieldLooseBase.js", + "default": "./helpers/classPrivateFieldLooseBase.js" + }, + "./helpers/classPrivateFieldLooseBase.js" + ], + "./helpers/esm/classPrivateFieldLooseBase": "./helpers/esm/classPrivateFieldLooseBase.js", + "./helpers/classPrivateFieldGet": [ + { + "node": "./helpers/classPrivateFieldGet.js", + "import": "./helpers/esm/classPrivateFieldGet.js", + "default": "./helpers/classPrivateFieldGet.js" + }, + "./helpers/classPrivateFieldGet.js" + ], + "./helpers/esm/classPrivateFieldGet": "./helpers/esm/classPrivateFieldGet.js", + "./helpers/classPrivateFieldSet": [ + { + "node": "./helpers/classPrivateFieldSet.js", + "import": "./helpers/esm/classPrivateFieldSet.js", + "default": "./helpers/classPrivateFieldSet.js" + }, + "./helpers/classPrivateFieldSet.js" + ], + "./helpers/esm/classPrivateFieldSet": "./helpers/esm/classPrivateFieldSet.js", + "./helpers/classPrivateFieldDestructureSet": [ + { + "node": "./helpers/classPrivateFieldDestructureSet.js", + "import": "./helpers/esm/classPrivateFieldDestructureSet.js", + "default": "./helpers/classPrivateFieldDestructureSet.js" + }, + "./helpers/classPrivateFieldDestructureSet.js" + ], + "./helpers/esm/classPrivateFieldDestructureSet": "./helpers/esm/classPrivateFieldDestructureSet.js", + "./helpers/classExtractFieldDescriptor": [ + { + "node": "./helpers/classExtractFieldDescriptor.js", + "import": "./helpers/esm/classExtractFieldDescriptor.js", + "default": "./helpers/classExtractFieldDescriptor.js" + }, + "./helpers/classExtractFieldDescriptor.js" + ], + "./helpers/esm/classExtractFieldDescriptor": "./helpers/esm/classExtractFieldDescriptor.js", + "./helpers/classStaticPrivateFieldSpecGet": [ + { + "node": "./helpers/classStaticPrivateFieldSpecGet.js", + "import": "./helpers/esm/classStaticPrivateFieldSpecGet.js", + "default": "./helpers/classStaticPrivateFieldSpecGet.js" + }, + "./helpers/classStaticPrivateFieldSpecGet.js" + ], + "./helpers/esm/classStaticPrivateFieldSpecGet": "./helpers/esm/classStaticPrivateFieldSpecGet.js", + "./helpers/classStaticPrivateFieldSpecSet": [ + { + "node": "./helpers/classStaticPrivateFieldSpecSet.js", + "import": "./helpers/esm/classStaticPrivateFieldSpecSet.js", + "default": "./helpers/classStaticPrivateFieldSpecSet.js" + }, + "./helpers/classStaticPrivateFieldSpecSet.js" + ], + "./helpers/esm/classStaticPrivateFieldSpecSet": "./helpers/esm/classStaticPrivateFieldSpecSet.js", + "./helpers/classStaticPrivateMethodGet": [ + { + "node": "./helpers/classStaticPrivateMethodGet.js", + "import": "./helpers/esm/classStaticPrivateMethodGet.js", + "default": "./helpers/classStaticPrivateMethodGet.js" + }, + "./helpers/classStaticPrivateMethodGet.js" + ], + "./helpers/esm/classStaticPrivateMethodGet": "./helpers/esm/classStaticPrivateMethodGet.js", + "./helpers/classStaticPrivateMethodSet": [ + { + "node": "./helpers/classStaticPrivateMethodSet.js", + "import": "./helpers/esm/classStaticPrivateMethodSet.js", + "default": "./helpers/classStaticPrivateMethodSet.js" + }, + "./helpers/classStaticPrivateMethodSet.js" + ], + "./helpers/esm/classStaticPrivateMethodSet": "./helpers/esm/classStaticPrivateMethodSet.js", + "./helpers/classApplyDescriptorGet": [ + { + "node": "./helpers/classApplyDescriptorGet.js", + "import": "./helpers/esm/classApplyDescriptorGet.js", + "default": "./helpers/classApplyDescriptorGet.js" + }, + "./helpers/classApplyDescriptorGet.js" + ], + "./helpers/esm/classApplyDescriptorGet": "./helpers/esm/classApplyDescriptorGet.js", + "./helpers/classApplyDescriptorSet": [ + { + "node": "./helpers/classApplyDescriptorSet.js", + "import": "./helpers/esm/classApplyDescriptorSet.js", + "default": "./helpers/classApplyDescriptorSet.js" + }, + "./helpers/classApplyDescriptorSet.js" + ], + "./helpers/esm/classApplyDescriptorSet": "./helpers/esm/classApplyDescriptorSet.js", + "./helpers/classApplyDescriptorDestructureSet": [ + { + "node": "./helpers/classApplyDescriptorDestructureSet.js", + "import": "./helpers/esm/classApplyDescriptorDestructureSet.js", + "default": "./helpers/classApplyDescriptorDestructureSet.js" + }, + "./helpers/classApplyDescriptorDestructureSet.js" + ], + "./helpers/esm/classApplyDescriptorDestructureSet": "./helpers/esm/classApplyDescriptorDestructureSet.js", + "./helpers/classStaticPrivateFieldDestructureSet": [ + { + "node": "./helpers/classStaticPrivateFieldDestructureSet.js", + "import": "./helpers/esm/classStaticPrivateFieldDestructureSet.js", + "default": "./helpers/classStaticPrivateFieldDestructureSet.js" + }, + "./helpers/classStaticPrivateFieldDestructureSet.js" + ], + "./helpers/esm/classStaticPrivateFieldDestructureSet": "./helpers/esm/classStaticPrivateFieldDestructureSet.js", + "./helpers/classCheckPrivateStaticAccess": [ + { + "node": "./helpers/classCheckPrivateStaticAccess.js", + "import": "./helpers/esm/classCheckPrivateStaticAccess.js", + "default": "./helpers/classCheckPrivateStaticAccess.js" + }, + "./helpers/classCheckPrivateStaticAccess.js" + ], + "./helpers/esm/classCheckPrivateStaticAccess": "./helpers/esm/classCheckPrivateStaticAccess.js", + "./helpers/classCheckPrivateStaticFieldDescriptor": [ + { + "node": "./helpers/classCheckPrivateStaticFieldDescriptor.js", + "import": "./helpers/esm/classCheckPrivateStaticFieldDescriptor.js", + "default": "./helpers/classCheckPrivateStaticFieldDescriptor.js" + }, + "./helpers/classCheckPrivateStaticFieldDescriptor.js" + ], + "./helpers/esm/classCheckPrivateStaticFieldDescriptor": "./helpers/esm/classCheckPrivateStaticFieldDescriptor.js", + "./helpers/decorate": [ + { + "node": "./helpers/decorate.js", + "import": "./helpers/esm/decorate.js", + "default": "./helpers/decorate.js" + }, + "./helpers/decorate.js" + ], + "./helpers/esm/decorate": "./helpers/esm/decorate.js", + "./helpers/classPrivateMethodGet": [ + { + "node": "./helpers/classPrivateMethodGet.js", + "import": "./helpers/esm/classPrivateMethodGet.js", + "default": "./helpers/classPrivateMethodGet.js" + }, + "./helpers/classPrivateMethodGet.js" + ], + "./helpers/esm/classPrivateMethodGet": "./helpers/esm/classPrivateMethodGet.js", + "./helpers/checkPrivateRedeclaration": [ + { + "node": "./helpers/checkPrivateRedeclaration.js", + "import": "./helpers/esm/checkPrivateRedeclaration.js", + "default": "./helpers/checkPrivateRedeclaration.js" + }, + "./helpers/checkPrivateRedeclaration.js" + ], + "./helpers/esm/checkPrivateRedeclaration": "./helpers/esm/checkPrivateRedeclaration.js", + "./helpers/classPrivateFieldInitSpec": [ + { + "node": "./helpers/classPrivateFieldInitSpec.js", + "import": "./helpers/esm/classPrivateFieldInitSpec.js", + "default": "./helpers/classPrivateFieldInitSpec.js" + }, + "./helpers/classPrivateFieldInitSpec.js" + ], + "./helpers/esm/classPrivateFieldInitSpec": "./helpers/esm/classPrivateFieldInitSpec.js", + "./helpers/classPrivateMethodInitSpec": [ + { + "node": "./helpers/classPrivateMethodInitSpec.js", + "import": "./helpers/esm/classPrivateMethodInitSpec.js", + "default": "./helpers/classPrivateMethodInitSpec.js" + }, + "./helpers/classPrivateMethodInitSpec.js" + ], + "./helpers/esm/classPrivateMethodInitSpec": "./helpers/esm/classPrivateMethodInitSpec.js", + "./helpers/classPrivateMethodSet": [ + { + "node": "./helpers/classPrivateMethodSet.js", + "import": "./helpers/esm/classPrivateMethodSet.js", + "default": "./helpers/classPrivateMethodSet.js" + }, + "./helpers/classPrivateMethodSet.js" + ], + "./helpers/esm/classPrivateMethodSet": "./helpers/esm/classPrivateMethodSet.js", + "./package": "./package.json", + "./package.json": "./package.json", + "./regenerator": "./regenerator/index.js", + "./regenerator/*.js": "./regenerator/*.js", + "./regenerator/": "./regenerator/" + }, + "engines": { + "node": ">=6.9.0" + } +} \ No newline at end of file diff --git a/node_modules/@babel/runtime/regenerator/index.js b/node_modules/@babel/runtime/regenerator/index.js new file mode 100644 index 0000000000..9fd4158a6d --- /dev/null +++ b/node_modules/@babel/runtime/regenerator/index.js @@ -0,0 +1 @@ +module.exports = require("regenerator-runtime"); diff --git a/node_modules/redux-thunk/LICENSE.md b/node_modules/redux-thunk/LICENSE.md new file mode 100644 index 0000000000..55bc8dfbe9 --- /dev/null +++ b/node_modules/redux-thunk/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-present Dan Abramov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/redux-thunk/README.md b/node_modules/redux-thunk/README.md new file mode 100644 index 0000000000..1d8b6b27f1 --- /dev/null +++ b/node_modules/redux-thunk/README.md @@ -0,0 +1,407 @@ +# Redux Thunk + +Thunk [middleware](https://redux.js.org/tutorials/fundamentals/part-4-store#middleware) for Redux. It allows writing functions with logic inside that can interact with a Redux store's `dispatch` and `getState` methods. + +For complete usage instructions and useful patterns, see the [Redux docs **Writing Logic with Thunks** page](https://redux.js.org/usage/writing-logic-thunks). + +![GitHub Workflow Status](https://img.shields.io/github/workflow/status/reduxjs/redux-thunk/Tests) +[![npm version](https://img.shields.io/npm/v/redux-thunk.svg?style=flat-square)](https://www.npmjs.com/package/redux-thunk) +[![npm downloads](https://img.shields.io/npm/dm/redux-thunk.svg?style=flat-square)](https://www.npmjs.com/package/redux-thunk) + +## Installation and Setup + +### Redux Toolkit + +If you're using [our official Redux Toolkit package](https://redux-toolkit.js.org) as recommended, there's nothing to install - RTK's `configureStore` API already adds the thunk middleware by default: + +```js +import { configureStore } from '@reduxjs/toolkit' + +import todosReducer from './features/todos/todosSlice' +import filtersReducer from './features/filters/filtersSlice' + +const store = configureStore({ + reducer: { + todos: todosReducer, + filters: filtersReducer + } +}) + +// The thunk middleware was automatically added +``` + +### Manual Setup + +If you're using the basic Redux `createStore` API and need to set this up manually, first add the `redux-thunk` package: + +```sh +npm install redux-thunk + +yarn add redux-thunk +``` + +The thunk middleware is the default export. + +
+More Details: Importing the thunk middleware + +If you're using ES modules: + +```js +import thunk from 'redux-thunk' // no changes here 😀 +``` + +If you use Redux Thunk 2.x in a CommonJS environment, +[don’t forget to add `.default` to your import](https://github.com/reduxjs/redux-thunk/releases/tag/v2.0.0): + +```diff +- const thunk = require('redux-thunk') ++ const thunk = require('redux-thunk').default +``` + +Additionally, since 2.x, we also support a +[UMD build](https://unpkg.com/redux-thunk/dist/redux-thunk.min.js): + +```js +const ReduxThunk = window.ReduxThunk +``` + +
+ +Then, to enable Redux Thunk, use +[`applyMiddleware()`](https://redux.js.org/api/applymiddleware): + +```js +import { createStore, applyMiddleware } from 'redux' +import thunk from 'redux-thunk' +import rootReducer from './reducers/index' + +// Note: this API requires redux@>=3.1.0 +const store = createStore(rootReducer, applyMiddleware(thunk)) +``` + +### Injecting a Custom Argument + +Since 2.1.0, Redux Thunk supports injecting a custom argument into the thunk middleware. This is typically useful for cases like using an API service layer that could be swapped out for a mock service in tests. + +For Redux Toolkit, the `getDefaultMiddleware` callback inside of `configureStore` lets you pass in a custom `extraArgument`: + +```js +import { configureStore } from '@reduxjs/toolkit' +import rootReducer from './reducer' +import { myCustomApiService } from './api' + +const store = configureStore({ + reducer: rootReducer, + middleware: getDefaultMiddleware => + getDefaultMiddleware({ + thunk: { + extraArgument: myCustomApiService + } + }) +}) + +// later +function fetchUser(id) { + // The `extraArgument` is the third arg for thunk functions + return (dispatch, getState, api) => { + // you can use api here + } +} +``` + +If you need to pass in multiple values, combine them into a single object: + +```js +const store = configureStore({ + reducer: rootReducer, + middleware: getDefaultMiddleware => + getDefaultMiddleware({ + thunk: { + extraArgument: { + api: myCustomApiService, + otherValue: 42 + } + } + }) +}) + +// later +function fetchUser(id) { + return (dispatch, getState, { api, otherValue }) => { + // you can use api and something else here + } +} +``` + +If you're setting up the store by hand, the default `thunk` export has an attached `thunk.withExtraArgument()` function that should be used to generate the correct thunk middleware: + +```js +const store = createStore( + reducer, + applyMiddleware(thunk.withExtraArgument(api)) +) +``` + +## Why Do I Need This? + +With a plain basic Redux store, you can only do simple synchronous updates by +dispatching an action. Middleware extends the store's abilities, and lets you +write async logic that interacts with the store. + +Thunks are the recommended middleware for basic Redux side effects logic, +including complex synchronous logic that needs access to the store, and simple +async logic like AJAX requests. + +For more details on why thunks are useful, see: + +- **Redux docs: Writing Logic with Thunks** + https://redux.js.org/usage/writing-logic-thunks + The official usage guide page on thunks. Covers why they exist, how the thunk middleware works, and uesful patterns for using thunks. + +- **Stack Overflow: Dispatching Redux Actions with a Timeout** + http://stackoverflow.com/questions/35411423/how-to-dispatch-a-redux-action-with-a-timeout/35415559#35415559 + Dan Abramov explains the basics of managing async behavior in Redux, walking + through a progressive series of approaches (inline async calls, async action + creators, thunk middleware). + +- **Stack Overflow: Why do we need middleware for async flow in Redux?** + http://stackoverflow.com/questions/34570758/why-do-we-need-middleware-for-async-flow-in-redux/34599594#34599594 + Dan Abramov gives reasons for using thunks and async middleware, and some + useful patterns for using thunks. + +- **What the heck is a "thunk"?** + https://daveceddia.com/what-is-a-thunk/ + A quick explanation for what the word "thunk" means in general, and for Redux + specifically. + +- **Thunks in Redux: The Basics** + https://medium.com/fullstack-academy/thunks-in-redux-the-basics-85e538a3fe60 + A detailed look at what thunks are, what they solve, and how to use them. + +You may also want to read the +**[Redux FAQ entry on choosing which async middleware to use](https://redux.js.org/faq/actions#what-async-middleware-should-i-use-how-do-you-decide-between-thunks-sagas-observables-or-something-else)**. + +While the thunk middleware is not directly included with the Redux core library, +it is used by default in our +**[`@reduxjs/toolkit` package](https://github.com/reduxjs/redux-toolkit)**. + +## Motivation + +Redux Thunk [middleware](https://redux.js.org/tutorials/fundamentals/part-4-store#middleware) +allows you to write action creators that return a function instead of an action. +The thunk can be used to delay the dispatch of an action, or to dispatch only if +a certain condition is met. The inner function receives the store methods +`dispatch` and `getState` as parameters. + +An action creator that returns a function to perform asynchronous dispatch: + +```js +const INCREMENT_COUNTER = 'INCREMENT_COUNTER' + +function increment() { + return { + type: INCREMENT_COUNTER + } +} + +function incrementAsync() { + return dispatch => { + setTimeout(() => { + // Yay! Can invoke sync or async actions with `dispatch` + dispatch(increment()) + }, 1000) + } +} +``` + +An action creator that returns a function to perform conditional dispatch: + +```js +function incrementIfOdd() { + return (dispatch, getState) => { + const { counter } = getState() + + if (counter % 2 === 0) { + return + } + + dispatch(increment()) + } +} +``` + +## What’s a thunk?! + +A [thunk](https://en.wikipedia.org/wiki/Thunk) is a function that wraps an +expression to delay its evaluation. + +```js +// calculation of 1 + 2 is immediate +// x === 3 +let x = 1 + 2 + +// calculation of 1 + 2 is delayed +// foo can be called later to perform the calculation +// foo is a thunk! +let foo = () => 1 + 2 +``` + +The term [originated](https://en.wikipedia.org/wiki/Thunk#cite_note-1) as a +humorous past-tense version of "think". + +## Composition + +Any return value from the inner function will be available as the return value +of `dispatch` itself. This is convenient for orchestrating an asynchronous +control flow with thunk action creators dispatching each other and returning +Promises to wait for each other’s completion: + +```js +import { createStore, applyMiddleware } from 'redux' +import thunk from 'redux-thunk' +import rootReducer from './reducers' + +// Note: this API requires redux@>=3.1.0 +const store = createStore(rootReducer, applyMiddleware(thunk)) + +function fetchSecretSauce() { + return fetch('https://www.google.com/search?q=secret+sauce') +} + +// These are the normal action creators you have seen so far. +// The actions they return can be dispatched without any middleware. +// However, they only express “facts” and not the “async flow”. + +function makeASandwich(forPerson, secretSauce) { + return { + type: 'MAKE_SANDWICH', + forPerson, + secretSauce + } +} + +function apologize(fromPerson, toPerson, error) { + return { + type: 'APOLOGIZE', + fromPerson, + toPerson, + error + } +} + +function withdrawMoney(amount) { + return { + type: 'WITHDRAW', + amount + } +} + +// Even without middleware, you can dispatch an action: +store.dispatch(withdrawMoney(100)) + +// But what do you do when you need to start an asynchronous action, +// such as an API call, or a router transition? + +// Meet thunks. +// A thunk in this context is a function that can be dispatched to perform async +// activity and can dispatch actions and read state. +// This is an action creator that returns a thunk: +function makeASandwichWithSecretSauce(forPerson) { + // We can invert control here by returning a function - the "thunk". + // When this function is passed to `dispatch`, the thunk middleware will intercept it, + // and call it with `dispatch` and `getState` as arguments. + // This gives the thunk function the ability to run some logic, and still interact with the store. + return function (dispatch) { + return fetchSecretSauce().then( + sauce => dispatch(makeASandwich(forPerson, sauce)), + error => dispatch(apologize('The Sandwich Shop', forPerson, error)) + ) + } +} + +// Thunk middleware lets me dispatch thunk async actions +// as if they were actions! + +store.dispatch(makeASandwichWithSecretSauce('Me')) + +// It even takes care to return the thunk’s return value +// from the dispatch, so I can chain Promises as long as I return them. + +store.dispatch(makeASandwichWithSecretSauce('My partner')).then(() => { + console.log('Done!') +}) + +// In fact I can write action creators that dispatch +// actions and async actions from other action creators, +// and I can build my control flow with Promises. + +function makeSandwichesForEverybody() { + return function (dispatch, getState) { + if (!getState().sandwiches.isShopOpen) { + // You don’t have to return Promises, but it’s a handy convention + // so the caller can always call .then() on async dispatch result. + + return Promise.resolve() + } + + // We can dispatch both plain object actions and other thunks, + // which lets us compose the asynchronous actions in a single flow. + + return dispatch(makeASandwichWithSecretSauce('My Grandma')) + .then(() => + Promise.all([ + dispatch(makeASandwichWithSecretSauce('Me')), + dispatch(makeASandwichWithSecretSauce('My wife')) + ]) + ) + .then(() => dispatch(makeASandwichWithSecretSauce('Our kids'))) + .then(() => + dispatch( + getState().myMoney > 42 + ? withdrawMoney(42) + : apologize('Me', 'The Sandwich Shop') + ) + ) + } +} + +// This is very useful for server side rendering, because I can wait +// until data is available, then synchronously render the app. + +store + .dispatch(makeSandwichesForEverybody()) + .then(() => + response.send(ReactDOMServer.renderToString()) + ) + +// I can also dispatch a thunk async action from a component +// any time its props change to load the missing data. + +import { connect } from 'react-redux' +import { Component } from 'react' + +class SandwichShop extends Component { + componentDidMount() { + this.props.dispatch(makeASandwichWithSecretSauce(this.props.forPerson)) + } + + componentDidUpdate(prevProps) { + if (prevProps.forPerson !== this.props.forPerson) { + this.props.dispatch(makeASandwichWithSecretSauce(this.props.forPerson)) + } + } + + render() { + return

{this.props.sandwiches.join('mustard')}

+ } +} + +export default connect(state => ({ + sandwiches: state.sandwiches +}))(SandwichShop) +``` + +## License + +MIT diff --git a/node_modules/redux-thunk/dist/redux-thunk.js b/node_modules/redux-thunk/dist/redux-thunk.js new file mode 100644 index 0000000000..2ea049049f --- /dev/null +++ b/node_modules/redux-thunk/dist/redux-thunk.js @@ -0,0 +1,41 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ReduxThunk = factory()); +})(this, (function () { 'use strict'; + + /** A function that accepts a potential "extra argument" value to be injected later, + * and returns an instance of the thunk middleware that uses that value + */ + function createThunkMiddleware(extraArgument) { + // Standard Redux middleware definition pattern: + // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware + var middleware = function middleware(_ref) { + var dispatch = _ref.dispatch, + getState = _ref.getState; + return function (next) { + return function (action) { + // The thunk middleware looks for any functions that were passed to `store.dispatch`. + // If this "action" is really a function, call it and return the result. + if (typeof action === 'function') { + // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg" + return action(dispatch, getState, extraArgument); + } // Otherwise, pass the action down the middleware chain as usual + + + return next(action); + }; + }; + }; + + return middleware; + } + + var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version + // with whatever "extra arg" they want to inject into their thunks + + thunk.withExtraArgument = createThunkMiddleware; + + return thunk; + +})); diff --git a/node_modules/redux-thunk/dist/redux-thunk.min.js b/node_modules/redux-thunk/dist/redux-thunk.min.js new file mode 100644 index 0000000000..78578ccf71 --- /dev/null +++ b/node_modules/redux-thunk/dist/redux-thunk.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).ReduxThunk=t()}(this,(function(){"use strict";function e(e){return function(t){var n=t.dispatch,u=t.getState;return function(t){return function(o){return"function"==typeof o?o(n,u,e):t(o)}}}}var t=e();return t.withExtraArgument=e,t})); diff --git a/node_modules/redux-thunk/es/index.d.ts b/node_modules/redux-thunk/es/index.d.ts new file mode 100644 index 0000000000..703c9c1e3a --- /dev/null +++ b/node_modules/redux-thunk/es/index.d.ts @@ -0,0 +1,7 @@ +import type { Action, AnyAction } from 'redux'; +import type { ThunkMiddleware } from './types'; +export type { ThunkAction, ThunkDispatch, ThunkActionDispatch, ThunkMiddleware } from './types'; +declare const thunk: ThunkMiddleware & { + withExtraArgument = AnyAction>(extraArgument: ExtraThunkArg): ThunkMiddleware; +}; +export default thunk; diff --git a/node_modules/redux-thunk/es/index.js b/node_modules/redux-thunk/es/index.js new file mode 100644 index 0000000000..fb2146808e --- /dev/null +++ b/node_modules/redux-thunk/es/index.js @@ -0,0 +1,32 @@ +/** A function that accepts a potential "extra argument" value to be injected later, + * and returns an instance of the thunk middleware that uses that value + */ +function createThunkMiddleware(extraArgument) { + // Standard Redux middleware definition pattern: + // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware + var middleware = function middleware(_ref) { + var dispatch = _ref.dispatch, + getState = _ref.getState; + return function (next) { + return function (action) { + // The thunk middleware looks for any functions that were passed to `store.dispatch`. + // If this "action" is really a function, call it and return the result. + if (typeof action === 'function') { + // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg" + return action(dispatch, getState, extraArgument); + } // Otherwise, pass the action down the middleware chain as usual + + + return next(action); + }; + }; + }; + + return middleware; +} + +var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version +// with whatever "extra arg" they want to inject into their thunks + +thunk.withExtraArgument = createThunkMiddleware; +export default thunk; \ No newline at end of file diff --git a/node_modules/redux-thunk/es/types.d.ts b/node_modules/redux-thunk/es/types.d.ts new file mode 100644 index 0000000000..b6d470251d --- /dev/null +++ b/node_modules/redux-thunk/es/types.d.ts @@ -0,0 +1,50 @@ +import { Action, AnyAction, Middleware, Dispatch } from 'redux'; +/** + * The dispatch method as modified by React-Thunk; overloaded so that you can + * dispatch: + * - standard (object) actions: `dispatch()` returns the action itself + * - thunk actions: `dispatch()` returns the thunk's return value + * + * @template State The redux state + * @template ExtraThunkArg The extra argument passed to the inner function of + * thunks (if specified when setting up the Thunk middleware) + * @template BasicAction The (non-thunk) actions that can be dispatched. + */ +export interface ThunkDispatch extends Dispatch { + /** Accepts a thunk function, runs it, and returns whatever the thunk itself returns */ + (thunkAction: ThunkAction): ReturnType; + /** A union of the other two overloads. This overload exists to work around a problem + * with TS inference ( see https://github.com/microsoft/TypeScript/issues/14107 ) + */ + (action: Action | ThunkAction): Action | ReturnType; +} +/** + * A "thunk" action (a callback function that can be dispatched to the Redux + * store.) + * + * Also known as the "thunk inner function", when used with the typical pattern + * of an action creator function that returns a thunk action. + * + * @template ReturnType The return type of the thunk's inner function + * @template State The redux state + * @template ExtraThunkArg Optional extra argument passed to the inner function + * (if specified when setting up the Thunk middleware) + * @template BasicAction The (non-thunk) actions that can be dispatched. + */ +export declare type ThunkAction = (dispatch: ThunkDispatch, getState: () => State, extraArgument: ExtraThunkArg) => ReturnType; +/** + * A generic type that takes a thunk action creator and returns a function + * signature which matches how it would appear after being processed using + * bindActionCreators(): a function that takes the arguments of the outer + * function, and returns the return type of the inner "thunk" function. + * + * @template ActionCreator Thunk action creator to be wrapped + */ +export declare type ThunkActionDispatch ThunkAction> = (...args: Parameters) => ReturnType>; +/** + * @template State The redux state + * @template BasicAction The (non-thunk) actions that can be dispatched + * @template ExtraThunkArg An optional extra argument to pass to a thunk's + * inner function. (Only used if you call `thunk.withExtraArgument()`) + */ +export declare type ThunkMiddleware = Middleware, State, ThunkDispatch>; diff --git a/node_modules/redux-thunk/extend-redux.d.ts b/node_modules/redux-thunk/extend-redux.d.ts new file mode 100644 index 0000000000..3b5a540a6a --- /dev/null +++ b/node_modules/redux-thunk/extend-redux.d.ts @@ -0,0 +1,42 @@ +import { ThunkAction } from './src/index' + +/** + * Globally alter the Redux `bindActionCreators` and `Dispatch` types to assume + * that the thunk middleware always exists, for ease of use. + * This is kept as a separate file that may be optionally imported, to + * avoid polluting the default types in case the thunk middleware is _not_ + * actually being used. + * + * To add these types to your app: + * import 'redux-thunk/extend-redux' + */ +declare module 'redux' { + /** + * Overload for bindActionCreators redux function, returns expects responses + * from thunk actions + */ + function bindActionCreators< + ActionCreators extends ActionCreatorsMapObject + >( + actionCreators: ActionCreators, + dispatch: Dispatch + ): { + [ActionCreatorName in keyof ActionCreators]: ReturnType< + ActionCreators[ActionCreatorName] + > extends ThunkAction + ? ( + ...args: Parameters + ) => ReturnType> + : ActionCreators[ActionCreatorName] + } + + /* + * Overload to add thunk support to Redux's dispatch() function. + * Useful for react-redux or any other library which could use this type. + */ + export interface Dispatch
{ + ( + thunkAction: ThunkAction + ): ReturnType + } +} diff --git a/node_modules/redux-thunk/lib/index.js b/node_modules/redux-thunk/lib/index.js new file mode 100644 index 0000000000..4318cdc6d0 --- /dev/null +++ b/node_modules/redux-thunk/lib/index.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +/** A function that accepts a potential "extra argument" value to be injected later, + * and returns an instance of the thunk middleware that uses that value + */ +function createThunkMiddleware(extraArgument) { + // Standard Redux middleware definition pattern: + // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware + var middleware = function middleware(_ref) { + var dispatch = _ref.dispatch, + getState = _ref.getState; + return function (next) { + return function (action) { + // The thunk middleware looks for any functions that were passed to `store.dispatch`. + // If this "action" is really a function, call it and return the result. + if (typeof action === 'function') { + // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg" + return action(dispatch, getState, extraArgument); + } // Otherwise, pass the action down the middleware chain as usual + + + return next(action); + }; + }; + }; + + return middleware; +} + +var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version +// with whatever "extra arg" they want to inject into their thunks + +thunk.withExtraArgument = createThunkMiddleware; +var _default = thunk; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/redux-thunk/package.json b/node_modules/redux-thunk/package.json new file mode 100644 index 0000000000..66eaf4b000 --- /dev/null +++ b/node_modules/redux-thunk/package.json @@ -0,0 +1,76 @@ +{ + "name": "redux-thunk", + "version": "2.4.0", + "license": "MIT", + "description": "Thunk middleware for Redux.", + "repository": "github:reduxjs/redux-thunk", + "bugs": "https://github.com/reduxjs/redux-thunk/issues", + "homepage": "https://github.com/reduxjs/redux-thunk", + "keywords": [ + "redux", + "thunk", + "middleware", + "redux-middleware", + "flux" + ], + "author": "Dan Abramov ", + "main": "lib/index.js", + "module": "es/index.js", + "types": "es/index.d.ts", + "sideEffects": false, + "files": [ + "lib", + "es", + "src", + "dist", + "extend-redux.d.ts" + ], + "scripts": { + "clean": "rimraf lib dist es", + "prepublishOnly": "npm run clean && npm run lint && npm run test && npm run build", + "format": "prettier --write {src,test,typescript_test}/**/*.{js,ts}", + "format:check": "prettier --check {src,test,typescript_test}/**/*.{js,ts}", + "lint": "eslint {src,test,typescript_test}/**/*.{js,ts}", + "test": "jest", + "test:cov": "jest --coverage", + "test:typescript": "npm run test:typescript:main && npm run test:typescript:extended", + "test:typescript:main": "tsc --noEmit -p typescript_test/tsconfig.json", + "test:typescript:extended": "tsc --noEmit -p typescript_test/typescript_extended/tsconfig.json", + "build:commonjs": "cross-env BABEL_ENV=commonjs babel src/*.ts --ignore src/types.ts --extensions .ts --out-dir lib ", + "build:es": "babel src/*.ts --ignore src/types.ts --extensions .ts --out-dir es", + "build:umd": "cross-env NODE_ENV=development rollup -c -o dist/redux-thunk.js", + "build:umd:min": "cross-env NODE_ENV=production rollup -c -o dist/redux-thunk.min.js", + "build:types": "tsc", + "build": "rimraf dist lib es && npm run build:types && npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min", + "api-types": "api-extractor run --local" + }, + "peerDependencies": { + "redux": "^4" + }, + "devDependencies": { + "@babel/cli": "^7.15.7", + "@babel/core": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "@babel/preset-typescript": "^7.15.0", + "@babel/register": "^7.15.3", + "@microsoft/api-extractor": "^7.18.16", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.0.6", + "@rollup/plugin-replace": "^3.0.0", + "@types/jest": "^27.0.2", + "@typescript-eslint/eslint-plugin": "^5.1.0", + "@typescript-eslint/parser": "^5.1.0", + "cross-env": "^7.0.3", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "jest": "^27.3.1", + "prettier": "^2.4.1", + "redux": "^4", + "rimraf": "^3.0.2", + "rollup": "^2.58.1", + "rollup-plugin-terser": "^7.0.2", + "ts-jest": "27.0.7", + "typescript": "^4.4" + } +} diff --git a/node_modules/redux-thunk/src/index.ts b/node_modules/redux-thunk/src/index.ts new file mode 100644 index 0000000000..b348642117 --- /dev/null +++ b/node_modules/redux-thunk/src/index.ts @@ -0,0 +1,53 @@ +import type { Action, AnyAction } from 'redux' + +import type { ThunkMiddleware } from './types' + +export type { + ThunkAction, + ThunkDispatch, + ThunkActionDispatch, + ThunkMiddleware +} from './types' + +/** A function that accepts a potential "extra argument" value to be injected later, + * and returns an instance of the thunk middleware that uses that value + */ +function createThunkMiddleware< + State = any, + BasicAction extends Action = AnyAction, + ExtraThunkArg = undefined +>(extraArgument?: ExtraThunkArg) { + // Standard Redux middleware definition pattern: + // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware + const middleware: ThunkMiddleware = + ({ dispatch, getState }) => + next => + action => { + // The thunk middleware looks for any functions that were passed to `store.dispatch`. + // If this "action" is really a function, call it and return the result. + if (typeof action === 'function') { + // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg" + return action(dispatch, getState, extraArgument) + } + + // Otherwise, pass the action down the middleware chain as usual + return next(action) + } + return middleware +} + +const thunk = createThunkMiddleware() as ThunkMiddleware & { + withExtraArgument< + ExtraThunkArg, + State = any, + BasicAction extends Action = AnyAction + >( + extraArgument: ExtraThunkArg + ): ThunkMiddleware +} + +// Attach the factory function so users can create a customized version +// with whatever "extra arg" they want to inject into their thunks +thunk.withExtraArgument = createThunkMiddleware + +export default thunk diff --git a/node_modules/redux-thunk/src/types.ts b/node_modules/redux-thunk/src/types.ts new file mode 100644 index 0000000000..3bd33680b4 --- /dev/null +++ b/node_modules/redux-thunk/src/types.ts @@ -0,0 +1,87 @@ +import { Action, AnyAction, Middleware, Dispatch } from 'redux' + +/** + * The dispatch method as modified by React-Thunk; overloaded so that you can + * dispatch: + * - standard (object) actions: `dispatch()` returns the action itself + * - thunk actions: `dispatch()` returns the thunk's return value + * + * @template State The redux state + * @template ExtraThunkArg The extra argument passed to the inner function of + * thunks (if specified when setting up the Thunk middleware) + * @template BasicAction The (non-thunk) actions that can be dispatched. + */ +export interface ThunkDispatch + extends Dispatch { + // When the thunk middleware is added, `store.dispatch` now has three overloads: + + // 1) The base overload, which accepts a standard action object, and returns that action object + + // 2) The specific thunk function overload + /** Accepts a thunk function, runs it, and returns whatever the thunk itself returns */ + ( + thunkAction: ThunkAction + ): ReturnType + + // 3) + /** A union of the other two overloads. This overload exists to work around a problem + * with TS inference ( see https://github.com/microsoft/TypeScript/issues/14107 ) + */ + ( + action: Action | ThunkAction + ): Action | ReturnType +} + +/** + * A "thunk" action (a callback function that can be dispatched to the Redux + * store.) + * + * Also known as the "thunk inner function", when used with the typical pattern + * of an action creator function that returns a thunk action. + * + * @template ReturnType The return type of the thunk's inner function + * @template State The redux state + * @template ExtraThunkArg Optional extra argument passed to the inner function + * (if specified when setting up the Thunk middleware) + * @template BasicAction The (non-thunk) actions that can be dispatched. + */ +export type ThunkAction< + ReturnType, + State, + ExtraThunkArg, + BasicAction extends Action +> = ( + dispatch: ThunkDispatch, + getState: () => State, + extraArgument: ExtraThunkArg +) => ReturnType + +/** + * A generic type that takes a thunk action creator and returns a function + * signature which matches how it would appear after being processed using + * bindActionCreators(): a function that takes the arguments of the outer + * function, and returns the return type of the inner "thunk" function. + * + * @template ActionCreator Thunk action creator to be wrapped + */ +export type ThunkActionDispatch< + ActionCreator extends (...args: any[]) => ThunkAction +> = ( + ...args: Parameters +) => ReturnType> + +/** + * @template State The redux state + * @template BasicAction The (non-thunk) actions that can be dispatched + * @template ExtraThunkArg An optional extra argument to pass to a thunk's + * inner function. (Only used if you call `thunk.withExtraArgument()`) + */ +export type ThunkMiddleware< + State = any, + BasicAction extends Action = AnyAction, + ExtraThunkArg = undefined +> = Middleware< + ThunkDispatch, + State, + ThunkDispatch +> diff --git a/node_modules/redux/CHANGELOG.md b/node_modules/redux/CHANGELOG.md new file mode 100644 index 0000000000..9cfbce0b22 --- /dev/null +++ b/node_modules/redux/CHANGELOG.md @@ -0,0 +1,4 @@ +# Change Log + +This project adheres to [Semantic Versioning](http://semver.org/). +Every release, along with the migration instructions, is documented on the Github [Releases](https://github.com/reduxjs/redux/releases) page. diff --git a/node_modules/redux/LICENSE.md b/node_modules/redux/LICENSE.md new file mode 100644 index 0000000000..55bc8dfbe9 --- /dev/null +++ b/node_modules/redux/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-present Dan Abramov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/redux/README.md b/node_modules/redux/README.md new file mode 100644 index 0000000000..5ea9b3d7a6 --- /dev/null +++ b/node_modules/redux/README.md @@ -0,0 +1,322 @@ +# Redux Logo + +Redux is a predictable state container for JavaScript apps. +(Not to be confused with a WordPress framework – [Redux Framework](https://reduxframework.com/).) + +It helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test. On top of that, it provides a great developer experience, such as [live code editing combined with a time traveling debugger](https://github.com/reduxjs/redux-devtools). + +You can use Redux together with [React](https://reactjs.org), or with any other view library. +It is tiny (2kB, including dependencies). + +> **Note**: We are currently planning a rewrite of the Redux docs. Please take some time to **[fill out this survey on what content is most important in a docs site](https://docs.google.com/forms/d/e/1FAIpQLSfzIkY3fXZ8PrQKScYMK0YoEgALfAK2qQ0mOj1_ibKv2qDTuQ/viewform)**. Thanks! + +[![build status](https://img.shields.io/travis/reduxjs/redux/master.svg?style=flat-square)](https://travis-ci.org/reduxjs/redux) +[![npm version](https://img.shields.io/npm/v/redux.svg?style=flat-square)](https://www.npmjs.com/package/redux) +[![npm downloads](https://img.shields.io/npm/dm/redux.svg?style=flat-square)](https://www.npmjs.com/package/redux) +[![redux channel on discord](https://img.shields.io/badge/discord-%23redux%20%40%20reactiflux-61dafb.svg?style=flat-square)](https://discord.gg/0ZcbPKXt5bZ6au5t) +[![Changelog #187](https://img.shields.io/badge/changelog-%23187-lightgrey.svg?style=flat-square)](https://changelog.com/187) + +## Learn Redux + +We have a variety of resources available to help you learn Redux, no matter what your background or learning style is. + +### Just the Basics + +If you're brand new to Redux and want to understand the basic concepts, see: + +- The **[Motivation](https://redux.js.org/introduction/motivation)** behind building Redux, the **[Core Concepts](https://redux.js.org/introduction/coreconcepts)**, and the **[Three Principles](https://redux.js.org/introduction/threeprinciples)**. +- The **[basic tutorial in the Redux docs](https://redux.js.org/basics)** +- Redux creator Dan Abramov's **free ["Getting Started with Redux" video series](https://egghead.io/series/getting-started-with-redux)** on Egghead.io +- Redux co-maintainer Mark Erikson's **["Redux Fundamentals" slideshow](http://blog.isquaredsoftware.com/2018/03/presentation-reactathon-redux-fundamentals/)** and **[list of suggested resources for learning Redux](http://blog.isquaredsoftware.com/2017/12/blogged-answers-learn-redux/)** +- If you learn best by looking at code and playing with it, check out our list of **[Redux example applications](https://redux.js.org/introduction/examples)**, available as separate projects in the Redux repo, and also as interactive online examples on CodeSandbox. +- The **[Redux Tutorials](https://github.com/markerikson/react-redux-links/blob/master/redux-tutorials.md)** section of the **[React/Redux links list](https://github.com/markerikson/react-redux-links)**. Here's a top list of our recommended tutorials: + - Dave Ceddia's posts [What Does Redux Do? (and when should you use it?)](https://daveceddia.com/what-does-redux-do/) and [How Redux Works: A Counter-Example](https://daveceddia.com/how-does-redux-work/) are a great intro to the basics of Redux and how to use it with React, as is this post on [React and Redux: An Introduction](http://jakesidsmith.com/blog/post/2017-11-18-redux-and-react-an-introduction/). + - Valentino Gagliardi's post [React Redux Tutorial for Beginners: Learning Redux in 2018](https://www.valentinog.com/blog/react-redux-tutorial-beginners/) is an excellent extended introduction to many aspects of using Redux. + - The CSS Tricks article [Leveling Up with React: Redux](https://css-tricks.com/learning-react-redux/) covers the Redux basics well. + - This [DevGuides: Introduction to Redux](http://devguides.io/redux/) tutorial covers several aspects of Redux, including actions, reducers, usage with React, and middleware. + +### Intermediate Concepts + +Once you've picked up the basics of working with actions, reducers, and the store, you may have questions about topics like working with asynchronous logic and AJAX requests, connecting a UI framework like React to your Redux store, and setting up an application to use Redux: + +- The **["Advanced" docs section](https://redux.js.org/advanced)** covers working with async logic, middleware, routing. +- The Redux docs **["Learning Resources"](https://redux.js.org/introduction/learning-resources)** page points to recommended articles on a variety of Redux-related topics. +- Sophie DeBenedetto's 8-part **[Building a Simple CRUD App with React + Redux](http://www.thegreatcodeadventure.com/building-a-simple-crud-app-with-react-redux-part-1/)** series shows how to put together a basic CRUD app from scratch. + +### Real-World Usage + +Going from a TodoMVC app to a real production application can be a big jump, but we've got plenty of resources to help: + +- Redux creator Dan Abramov's **[free "Building React Applications with Idiomatic Redux" video series](https://egghead.io/courses/building-react-applications-with-idiomatic-redux)** builds on his first video series and covers topics like middleware, routing, and persistence. +- The **[Redux FAQ](https://redux.js.org/faq)** answers many common questions about how to use Redux, and the **["Recipes" docs section](https://redux.js.org/recipes)** has information on handling derived data, testing, structuring reducer logic, and reducing boilerplate. +- Redux co-maintainer Mark Erikson's **["Practical Redux" tutorial series](http://blog.isquaredsoftware.com/series/practical-redux/)** demonstrates real-world intermediate and advanced techniques for working with React and Redux (also available as **[an interactive course on Educative.io](https://www.educative.io/collection/5687753853370368/5707702298738688)**). +- The **[React/Redux links list](https://github.com/markerikson/react-redux-links)** has categorized articles on working with [reducers and selectors](https://github.com/markerikson/react-redux-links/blob/master/redux-reducers-selectors.md), [managing side effects](https://github.com/markerikson/react-redux-links/blob/master/redux-side-effects.md), [Redux architecture and best practices](https://github.com/markerikson/react-redux-links/blob/master/redux-architecture.md), and more. +- Our community has created thousands of Redux-related libraries, addons, and tools. The **["Ecosystem" docs page](https://redux.js.org/introduction/ecosystem)** lists our recommendations, and there's a complete listing available in the **[Redux addons catalog](https://github.com/markerikson/redux-ecosystem-links)**. +- If you're looking to learn from actual application codebases, the addons catalog also has a list of **[purpose-built examples and real-world applications](https://github.com/markerikson/redux-ecosystem-links/blob/master/apps-and-examples.md)**. + +Finally, Mark Erikson is teaching a series of **[Redux workshops through Workshop.me](#redux-workshops)**. Check the [workshop schedule](https://workshop.me/?a=mark) for upcoming dates and locations. + +### Help and Discussion + +The **[#redux channel](https://discord.gg/0ZcbPKXt5bZ6au5t)** of the **[Reactiflux Discord community](http://www.reactiflux.com)** is our official resource for all questions related to learning and using Redux. Reactiflux is a great place to hang out, ask questions, and learn - come join us! + +## Before Proceeding Further + +Redux is a valuable tool for organizing your state, but you should also consider whether it's appropriate for your situation. Don't use Redux just because someone said you should - take some time to understand the potential benefits and tradeoffs of using it. + +Here are some suggestions on when it makes sense to use Redux: + +- You have reasonable amounts of data changing over time +- You need a single source of truth for your state +- You find that keeping all your state in a top-level component is no longer sufficient + +Yes, these guidelines are subjective and vague, but this is for good reason. The point at which you should integrate Redux into your application is different for every user and different for every application. + +> **For more thoughts on how Redux is meant to be used, see:**
+> +> - **[You Might Not Need Redux](https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367)**
+> - **[The Tao of Redux, Part 1 - Implementation and Intent](http://blog.isquaredsoftware.com/2017/05/idiomatic-redux-tao-of-redux-part-1/)**
+> - **[The Tao of Redux, Part 2 - Practice and Philosophy](http://blog.isquaredsoftware.com/2017/05/idiomatic-redux-tao-of-redux-part-2/)** +> - **[Redux FAQ](https://redux.js.org/faq)** + +## Developer Experience + +Dan Abramov (author of Redux) wrote Redux while working on his React Europe talk called [“Hot Reloading with Time Travel”](https://www.youtube.com/watch?v=xsSnOQynTHs). His goal was to create a state management library with a minimal API but completely predictable behavior. Redux makes it possible to implement logging, hot reloading, time travel, universal apps, record and replay, without any buy-in from the developer. + +## Influences + +Redux evolves the ideas of [Flux](http://facebook.github.io/flux/), but avoids its complexity by taking cues from [Elm](https://github.com/evancz/elm-architecture-tutorial/). +Even if you haven't used Flux or Elm, Redux only takes a few minutes to get started with. + +## Installation + +To install the stable version: + +```sh +npm install --save redux +``` + +This assumes you are using [npm](https://www.npmjs.com/) as your package manager. + +If you're not, you can [access these files on unpkg](https://unpkg.com/redux/), download them, or point your package manager to them. + +Most commonly, people consume Redux as a collection of [CommonJS](https://github.com/webpack/docs/wiki/commonjs) modules. These modules are what you get when you import `redux` in a [Webpack](https://webpack.js.org/), [Browserify](http://browserify.org/), or a Node environment. If you like to live on the edge and use [Rollup](https://rollupjs.org), we support that as well. + +If you don't use a module bundler, it's also fine. The `redux` npm package includes precompiled production and development [UMD](https://github.com/umdjs/umd) builds in the [`dist` folder](https://unpkg.com/redux/dist/). They can be used directly without a bundler and are thus compatible with many popular JavaScript module loaders and environments. For example, you can drop a UMD build as a [` + + + +``` + +* [**cdnjs**](https://cdnjs.com/libraries/prop-types) +```html + + + + + +``` + +To load a specific version of `prop-types` replace `15.6.0` with the version number. + +## Usage + +PropTypes was originally exposed as part of the React core module, and is +commonly used with React components. +Here is an example of using PropTypes with a React component, which also +documents the different validators provided: + +```js +import React from 'react'; +import PropTypes from 'prop-types'; + +class MyComponent extends React.Component { + render() { + // ... do things with the props + } +} + +MyComponent.propTypes = { + // You can declare that a prop is a specific JS primitive. By default, these + // are all optional. + optionalArray: PropTypes.array, + optionalBool: PropTypes.bool, + optionalFunc: PropTypes.func, + optionalNumber: PropTypes.number, + optionalObject: PropTypes.object, + optionalString: PropTypes.string, + optionalSymbol: PropTypes.symbol, + + // Anything that can be rendered: numbers, strings, elements or an array + // (or fragment) containing these types. + optionalNode: PropTypes.node, + + // A React element (ie. ). + optionalElement: PropTypes.element, + + // A React element type (ie. MyComponent). + optionalElementType: PropTypes.elementType, + + // You can also declare that a prop is an instance of a class. This uses + // JS's instanceof operator. + optionalMessage: PropTypes.instanceOf(Message), + + // You can ensure that your prop is limited to specific values by treating + // it as an enum. + optionalEnum: PropTypes.oneOf(['News', 'Photos']), + + // An object that could be one of many types + optionalUnion: PropTypes.oneOfType([ + PropTypes.string, + PropTypes.number, + PropTypes.instanceOf(Message) + ]), + + // An array of a certain type + optionalArrayOf: PropTypes.arrayOf(PropTypes.number), + + // An object with property values of a certain type + optionalObjectOf: PropTypes.objectOf(PropTypes.number), + + // You can chain any of the above with `isRequired` to make sure a warning + // is shown if the prop isn't provided. + + // An object taking on a particular shape + optionalObjectWithShape: PropTypes.shape({ + optionalProperty: PropTypes.string, + requiredProperty: PropTypes.number.isRequired + }), + + // An object with warnings on extra properties + optionalObjectWithStrictShape: PropTypes.exact({ + optionalProperty: PropTypes.string, + requiredProperty: PropTypes.number.isRequired + }), + + requiredFunc: PropTypes.func.isRequired, + + // A value of any data type + requiredAny: PropTypes.any.isRequired, + + // You can also specify a custom validator. It should return an Error + // object if the validation fails. Don't `console.warn` or throw, as this + // won't work inside `oneOfType`. + customProp: function(props, propName, componentName) { + if (!/matchme/.test(props[propName])) { + return new Error( + 'Invalid prop `' + propName + '` supplied to' + + ' `' + componentName + '`. Validation failed.' + ); + } + }, + + // You can also supply a custom validator to `arrayOf` and `objectOf`. + // It should return an Error object if the validation fails. The validator + // will be called for each key in the array or object. The first two + // arguments of the validator are the array or object itself, and the + // current item's key. + customArrayProp: PropTypes.arrayOf(function(propValue, key, componentName, location, propFullName) { + if (!/matchme/.test(propValue[key])) { + return new Error( + 'Invalid prop `' + propFullName + '` supplied to' + + ' `' + componentName + '`. Validation failed.' + ); + } + }) +}; +``` + +Refer to the [React documentation](https://facebook.github.io/react/docs/typechecking-with-proptypes.html) for more information. + +## Migrating from React.PropTypes + +Check out [Migrating from React.PropTypes](https://facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) for details on how to migrate to `prop-types` from `React.PropTypes`. + +Note that this blog posts **mentions a codemod script that performs the conversion automatically**. + +There are also important notes below. + +## How to Depend on This Package? + +For apps, we recommend putting it in `dependencies` with a caret range. +For example: + +```js + "dependencies": { + "prop-types": "^15.5.7" + } +``` + +For libraries, we *also* recommend leaving it in `dependencies`: + +```js + "dependencies": { + "prop-types": "^15.5.7" + }, + "peerDependencies": { + "react": "^15.5.0" + } +``` + +**Note:** there are known issues in versions before 15.5.7 so we recommend using it as the minimal version. + +Make sure that the version range uses a caret (`^`) and thus is broad enough for npm to efficiently deduplicate packages. + +For UMD bundles of your components, make sure you **don’t** include `PropTypes` in the build. Usually this is done by marking it as an external (the specifics depend on your bundler), just like you do with React. + +## Compatibility + +### React 0.14 + +This package is compatible with **React 0.14.9**. Compared to 0.14.8 (which was released in March of 2016), there are no other changes in 0.14.9, so it should be a painless upgrade. + +```shell +# ATTENTION: Only run this if you still use React 0.14! +npm install --save react@^0.14.9 react-dom@^0.14.9 +``` + +### React 15+ + +This package is compatible with **React 15.3.0** and higher. + +``` +npm install --save react@^15.3.0 react-dom@^15.3.0 +``` + +### What happens on other React versions? + +It outputs warnings with the message below even though the developer doesn’t do anything wrong. Unfortunately there is no solution for this other than updating React to either 15.3.0 or higher, or 0.14.9 if you’re using React 0.14. + +## Difference from `React.PropTypes`: Don’t Call Validator Functions + +First of all, **which version of React are you using**? You might be seeing this message because a component library has updated to use `prop-types` package, but your version of React is incompatible with it. See the [above section](#compatibility) for more details. + +Are you using either React 0.14.9 or a version higher than React 15.3.0? Read on. + +When you migrate components to use the standalone `prop-types`, **all validator functions will start throwing an error if you call them directly**. This makes sure that nobody relies on them in production code, and it is safe to strip their implementations to optimize the bundle size. + +Code like this is still fine: + +```js +MyComponent.propTypes = { + myProp: PropTypes.bool +}; +``` + +However, code like this will not work with the `prop-types` package: + +```js +// Will not work with `prop-types` package! +var errorOrNull = PropTypes.bool(42, 'myProp', 'MyComponent', 'prop'); +``` + +It will throw an error: + +``` +Calling PropTypes validators directly is not supported by the `prop-types` package. +Use PropTypes.checkPropTypes() to call them. +``` + +(If you see **a warning** rather than an error with this message, please check the [above section about compatibility](#compatibility).) + +This is new behavior, and you will only encounter it when you migrate from `React.PropTypes` to the `prop-types` package. For the vast majority of components, this doesn’t matter, and if you didn’t see [this warning](https://facebook.github.io/react/warnings/dont-call-proptypes.html) in your components, your code is safe to migrate. This is not a breaking change in React because you are only opting into this change for a component by explicitly changing your imports to use `prop-types`. If you temporarily need the old behavior, you can keep using `React.PropTypes` until React 16. + +**If you absolutely need to trigger the validation manually**, call `PropTypes.checkPropTypes()`. Unlike the validators themselves, this function is safe to call in production, as it will be replaced by an empty function: + +```js +// Works with standalone PropTypes +PropTypes.checkPropTypes(MyComponent.propTypes, props, 'prop', 'MyComponent'); +``` +See below for more info. + +**You might also see this error** if you’re calling a `PropTypes` validator from your own custom `PropTypes` validator. In this case, the fix is to make sure that you are passing *all* of the arguments to the inner function. There is a more in-depth explanation of how to fix it [on this page](https://facebook.github.io/react/warnings/dont-call-proptypes.html#fixing-the-false-positive-in-third-party-proptypes). Alternatively, you can temporarily keep using `React.PropTypes` until React 16, as it would still only warn in this case. + +If you use a bundler like Browserify or Webpack, don’t forget to [follow these instructions](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build) to correctly bundle your application in development or production mode. Otherwise you’ll ship unnecessary code to your users. + +## PropTypes.checkPropTypes + +React will automatically check the propTypes you set on the component, but if +you are using PropTypes without React then you may want to manually call +`PropTypes.checkPropTypes`, like so: + +```js +const myPropTypes = { + name: PropTypes.string, + age: PropTypes.number, + // ... define your prop validations +}; + +const props = { + name: 'hello', // is valid + age: 'world', // not valid +}; + +// Let's say your component is called 'MyComponent' + +// Works with standalone PropTypes +PropTypes.checkPropTypes(myPropTypes, props, 'age', 'MyComponent'); +// This will warn as follows: +// Warning: Failed prop type: Invalid prop `age` of type `string` supplied to +// `MyComponent`, expected `number`. +``` + +## PropTypes.resetWarningCache() + +`PropTypes.checkPropTypes(...)` only `console.error.log(...)`s a given message once. To reset the cache while testing call `PropTypes.resetWarningCache()` + +### License + +prop-types is [MIT licensed](./LICENSE). diff --git a/node_modules/prop-types/checkPropTypes.js b/node_modules/prop-types/checkPropTypes.js new file mode 100644 index 0000000000..49111df95d --- /dev/null +++ b/node_modules/prop-types/checkPropTypes.js @@ -0,0 +1,102 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + var loggedTypeFailures = {}; + var has = Function.call.bind(Object.prototype.hasOwnProperty); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (process.env.NODE_ENV !== 'production') { + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + ); + err.name = 'Invariant Violation'; + throw err; + } + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); + } + } + } + } +} + +/** + * Resets warning cache when testing. + * + * @private + */ +checkPropTypes.resetWarningCache = function() { + if (process.env.NODE_ENV !== 'production') { + loggedTypeFailures = {}; + } +} + +module.exports = checkPropTypes; diff --git a/node_modules/prop-types/factory.js b/node_modules/prop-types/factory.js new file mode 100644 index 0000000000..abdf8e6dc7 --- /dev/null +++ b/node_modules/prop-types/factory.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +// React 15.5 references this module, and assumes PropTypes are still callable in production. +// Therefore we re-export development-only version with all the PropTypes checks here. +// However if one is migrating to the `prop-types` npm library, they will go through the +// `index.js` entry point, and it will branch depending on the environment. +var factory = require('./factoryWithTypeCheckers'); +module.exports = function(isValidElement) { + // It is still allowed in 15.5. + var throwOnDirectAccess = false; + return factory(isValidElement, throwOnDirectAccess); +}; diff --git a/node_modules/prop-types/factoryWithThrowingShims.js b/node_modules/prop-types/factoryWithThrowingShims.js new file mode 100644 index 0000000000..e5b2f9ce0f --- /dev/null +++ b/node_modules/prop-types/factoryWithThrowingShims.js @@ -0,0 +1,64 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + +function emptyFunction() {} +function emptyFunctionWithReset() {} +emptyFunctionWithReset.resetWarningCache = emptyFunction; + +module.exports = function() { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret) { + // It is still safe when called from React. + return; + } + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use PropTypes.checkPropTypes() to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + }; + shim.isRequired = shim; + function getShim() { + return shim; + }; + // Important! + // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. + var ReactPropTypes = { + array: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, + + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, + + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction + }; + + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; diff --git a/node_modules/prop-types/factoryWithTypeCheckers.js b/node_modules/prop-types/factoryWithTypeCheckers.js new file mode 100644 index 0000000000..3711f0b6ee --- /dev/null +++ b/node_modules/prop-types/factoryWithTypeCheckers.js @@ -0,0 +1,591 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactIs = require('react-is'); +var assign = require('object-assign'); + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); +var checkPropTypes = require('./checkPropTypes'); + +var has = Function.call.bind(Object.prototype.hasOwnProperty); +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +function emptyFunctionThatReturnsNull() { + return null; +} + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message) { + this.message = message; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (process.env.NODE_ENV !== 'production') { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (process.env.NODE_ENV !== 'production') { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (!checker) { + continue; + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from + // props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; diff --git a/node_modules/prop-types/index.js b/node_modules/prop-types/index.js new file mode 100644 index 0000000000..e9ef51d6f3 --- /dev/null +++ b/node_modules/prop-types/index.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (process.env.NODE_ENV !== 'production') { + var ReactIs = require('react-is'); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess); +} else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = require('./factoryWithThrowingShims')(); +} diff --git a/node_modules/prop-types/lib/ReactPropTypesSecret.js b/node_modules/prop-types/lib/ReactPropTypesSecret.js new file mode 100644 index 0000000000..f54525e7f1 --- /dev/null +++ b/node_modules/prop-types/lib/ReactPropTypesSecret.js @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; diff --git a/node_modules/create-react-app/node_modules/.bin/envinfo b/node_modules/prop-types/node_modules/.bin/loose-envify similarity index 63% rename from node_modules/create-react-app/node_modules/.bin/envinfo rename to node_modules/prop-types/node_modules/.bin/loose-envify index c1f61124c1..d96b002396 100644 --- a/node_modules/create-react-app/node_modules/.bin/envinfo +++ b/node_modules/prop-types/node_modules/.bin/loose-envify @@ -6,10 +6,10 @@ case `uname` in esac if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../../../envinfo/dist/cli.js" "$@" + "$basedir/node" "$basedir/../../../loose-envify/cli.js" "$@" ret=$? else - node "$basedir/../../../envinfo/dist/cli.js" "$@" + node "$basedir/../../../loose-envify/cli.js" "$@" ret=$? fi exit $ret diff --git a/node_modules/prop-types/node_modules/.bin/loose-envify.cmd b/node_modules/prop-types/node_modules/.bin/loose-envify.cmd new file mode 100644 index 0000000000..0bd27344fe --- /dev/null +++ b/node_modules/prop-types/node_modules/.bin/loose-envify.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\..\..\loose-envify\cli.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\..\..\loose-envify\cli.js" %* +) \ No newline at end of file diff --git a/node_modules/prop-types/node_modules/react-is/LICENSE b/node_modules/prop-types/node_modules/react-is/LICENSE new file mode 100644 index 0000000000..b96dcb0480 --- /dev/null +++ b/node_modules/prop-types/node_modules/react-is/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/prop-types/node_modules/react-is/README.md b/node_modules/prop-types/node_modules/react-is/README.md new file mode 100644 index 0000000000..d255977618 --- /dev/null +++ b/node_modules/prop-types/node_modules/react-is/README.md @@ -0,0 +1,104 @@ +# `react-is` + +This package allows you to test arbitrary values and see if they're a particular React element type. + +## Installation + +```sh +# Yarn +yarn add react-is + +# NPM +npm install react-is +``` + +## Usage + +### Determining if a Component is Valid + +```js +import React from "react"; +import * as ReactIs from "react-is"; + +class ClassComponent extends React.Component { + render() { + return React.createElement("div"); + } +} + +const FunctionComponent = () => React.createElement("div"); + +const ForwardRefComponent = React.forwardRef((props, ref) => + React.createElement(Component, { forwardedRef: ref, ...props }) +); + +const Context = React.createContext(false); + +ReactIs.isValidElementType("div"); // true +ReactIs.isValidElementType(ClassComponent); // true +ReactIs.isValidElementType(FunctionComponent); // true +ReactIs.isValidElementType(ForwardRefComponent); // true +ReactIs.isValidElementType(Context.Provider); // true +ReactIs.isValidElementType(Context.Consumer); // true +ReactIs.isValidElementType(React.createFactory("div")); // true +``` + +### Determining an Element's Type + +#### Context + +```js +import React from "react"; +import * as ReactIs from 'react-is'; + +const ThemeContext = React.createContext("blue"); + +ReactIs.isContextConsumer(); // true +ReactIs.isContextProvider(); // true +ReactIs.typeOf() === ReactIs.ContextProvider; // true +ReactIs.typeOf() === ReactIs.ContextConsumer; // true +``` + +#### Element + +```js +import React from "react"; +import * as ReactIs from 'react-is'; + +ReactIs.isElement(
); // true +ReactIs.typeOf(
) === ReactIs.Element; // true +``` + +#### Fragment + +```js +import React from "react"; +import * as ReactIs from 'react-is'; + +ReactIs.isFragment(<>); // true +ReactIs.typeOf(<>) === ReactIs.Fragment; // true +``` + +#### Portal + +```js +import React from "react"; +import ReactDOM from "react-dom"; +import * as ReactIs from 'react-is'; + +const div = document.createElement("div"); +const portal = ReactDOM.createPortal(
, div); + +ReactIs.isPortal(portal); // true +ReactIs.typeOf(portal) === ReactIs.Portal; // true +``` + +#### StrictMode + +```js +import React from "react"; +import * as ReactIs from 'react-is'; + +ReactIs.isStrictMode(); // true +ReactIs.typeOf() === ReactIs.StrictMode; // true +``` diff --git a/node_modules/prop-types/node_modules/react-is/build-info.json b/node_modules/prop-types/node_modules/react-is/build-info.json new file mode 100644 index 0000000000..4094da67d5 --- /dev/null +++ b/node_modules/prop-types/node_modules/react-is/build-info.json @@ -0,0 +1,8 @@ +{ + "branch": "pull/18344", + "buildNumber": "106499", + "checksum": "7fe5a2e", + "commit": "da834083c", + "environment": "ci", + "reactVersion": "16.12.0-da834083c" +} diff --git a/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js b/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js new file mode 100644 index 0000000000..8a80b768ad --- /dev/null +++ b/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js @@ -0,0 +1,181 @@ +/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + + + +if (process.env.NODE_ENV !== "production") { + (function() { +'use strict'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary +// (unstable) APIs that have been removed. Can we remove the symbols? + +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} // AsyncMode is deprecated along with isAsyncMode + +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} diff --git a/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js b/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js new file mode 100644 index 0000000000..3e83c7ab49 --- /dev/null +++ b/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js @@ -0,0 +1,15 @@ +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict';var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b? +Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119; +function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d; +exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t}; +exports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p}; +exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z; diff --git a/node_modules/prop-types/node_modules/react-is/index.js b/node_modules/prop-types/node_modules/react-is/index.js new file mode 100644 index 0000000000..3ae098d078 --- /dev/null +++ b/node_modules/prop-types/node_modules/react-is/index.js @@ -0,0 +1,7 @@ +'use strict'; + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./cjs/react-is.production.min.js'); +} else { + module.exports = require('./cjs/react-is.development.js'); +} diff --git a/node_modules/prop-types/node_modules/react-is/package.json b/node_modules/prop-types/node_modules/react-is/package.json new file mode 100644 index 0000000000..5f32de2e85 --- /dev/null +++ b/node_modules/prop-types/node_modules/react-is/package.json @@ -0,0 +1,27 @@ +{ + "name": "react-is", + "version": "16.13.1", + "description": "Brand checking of React Elements.", + "main": "index.js", + "repository": { + "type": "git", + "url": "https://github.com/facebook/react.git", + "directory": "packages/react-is" + }, + "keywords": [ + "react" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/facebook/react/issues" + }, + "homepage": "https://reactjs.org/", + "files": [ + "LICENSE", + "README.md", + "build-info.json", + "index.js", + "cjs/", + "umd/" + ] +} diff --git a/node_modules/prop-types/node_modules/react-is/umd/react-is.development.js b/node_modules/prop-types/node_modules/react-is/umd/react-is.development.js new file mode 100644 index 0000000000..a6bc018a74 --- /dev/null +++ b/node_modules/prop-types/node_modules/react-is/umd/react-is.development.js @@ -0,0 +1,181 @@ +/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.ReactIs = {})); +}(this, (function (exports) { 'use strict'; + + // The Symbol used to tag the ReactElement-like types. If there is no native Symbol + // nor polyfill, then a plain number is used for performance. + var hasSymbol = typeof Symbol === 'function' && Symbol.for; + var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; + var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; + var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; + var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; + var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; + var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; + var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary + // (unstable) APIs that have been removed. Can we remove the symbols? + + var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; + var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; + var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; + var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; + var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; + var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; + var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; + var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; + var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; + var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; + var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + + function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); + } + + function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; + } // AsyncMode is deprecated along with isAsyncMode + + var AsyncMode = REACT_ASYNC_MODE_TYPE; + var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; + var ContextConsumer = REACT_CONTEXT_TYPE; + var ContextProvider = REACT_PROVIDER_TYPE; + var Element = REACT_ELEMENT_TYPE; + var ForwardRef = REACT_FORWARD_REF_TYPE; + var Fragment = REACT_FRAGMENT_TYPE; + var Lazy = REACT_LAZY_TYPE; + var Memo = REACT_MEMO_TYPE; + var Portal = REACT_PORTAL_TYPE; + var Profiler = REACT_PROFILER_TYPE; + var StrictMode = REACT_STRICT_MODE_TYPE; + var Suspense = REACT_SUSPENSE_TYPE; + var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + + function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; + } + function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; + } + function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; + } + function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; + } + function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; + } + function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; + } + function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; + } + function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; + } + function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; + } + function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; + } + function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; + } + function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; + } + + exports.AsyncMode = AsyncMode; + exports.ConcurrentMode = ConcurrentMode; + exports.ContextConsumer = ContextConsumer; + exports.ContextProvider = ContextProvider; + exports.Element = Element; + exports.ForwardRef = ForwardRef; + exports.Fragment = Fragment; + exports.Lazy = Lazy; + exports.Memo = Memo; + exports.Portal = Portal; + exports.Profiler = Profiler; + exports.StrictMode = StrictMode; + exports.Suspense = Suspense; + exports.isAsyncMode = isAsyncMode; + exports.isConcurrentMode = isConcurrentMode; + exports.isContextConsumer = isContextConsumer; + exports.isContextProvider = isContextProvider; + exports.isElement = isElement; + exports.isForwardRef = isForwardRef; + exports.isFragment = isFragment; + exports.isLazy = isLazy; + exports.isMemo = isMemo; + exports.isPortal = isPortal; + exports.isProfiler = isProfiler; + exports.isStrictMode = isStrictMode; + exports.isSuspense = isSuspense; + exports.isValidElementType = isValidElementType; + exports.typeOf = typeOf; + +}))); diff --git a/node_modules/prop-types/node_modules/react-is/umd/react-is.production.min.js b/node_modules/prop-types/node_modules/react-is/umd/react-is.production.min.js new file mode 100644 index 0000000000..62fe6b226e --- /dev/null +++ b/node_modules/prop-types/node_modules/react-is/umd/react-is.production.min.js @@ -0,0 +1,13 @@ +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +'use strict';(function(b,d){"object"===typeof exports&&"undefined"!==typeof module?d(exports):"function"===typeof define&&define.amd?define(["exports"],d):(b=b||self,d(b.ReactIs={}))})(this,function(b){function d(a){if("object"===typeof a&&null!==a){var b=a.$$typeof;switch(b){case r:switch(a=a.type,a){case t:case e:case f:case g:case h:case k:return a;default:switch(a=a&&a.$$typeof,a){case l:case m:case n:case p:case q:return a;default:return b}}case u:return b}}}function v(a){return d(a)===e}var c= +"function"===typeof Symbol&&Symbol.for,r=c?Symbol.for("react.element"):60103,u=c?Symbol.for("react.portal"):60106,f=c?Symbol.for("react.fragment"):60107,h=c?Symbol.for("react.strict_mode"):60108,g=c?Symbol.for("react.profiler"):60114,q=c?Symbol.for("react.provider"):60109,l=c?Symbol.for("react.context"):60110,t=c?Symbol.for("react.async_mode"):60111,e=c?Symbol.for("react.concurrent_mode"):60111,m=c?Symbol.for("react.forward_ref"):60112,k=c?Symbol.for("react.suspense"):60113,w=c?Symbol.for("react.suspense_list"): +60120,p=c?Symbol.for("react.memo"):60115,n=c?Symbol.for("react.lazy"):60116,x=c?Symbol.for("react.block"):60121,y=c?Symbol.for("react.fundamental"):60117,z=c?Symbol.for("react.responder"):60118,A=c?Symbol.for("react.scope"):60119;b.AsyncMode=t;b.ConcurrentMode=e;b.ContextConsumer=l;b.ContextProvider=q;b.Element=r;b.ForwardRef=m;b.Fragment=f;b.Lazy=n;b.Memo=p;b.Portal=u;b.Profiler=g;b.StrictMode=h;b.Suspense=k;b.isAsyncMode=function(a){return v(a)||d(a)===t};b.isConcurrentMode=v;b.isContextConsumer= +function(a){return d(a)===l};b.isContextProvider=function(a){return d(a)===q};b.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===r};b.isForwardRef=function(a){return d(a)===m};b.isFragment=function(a){return d(a)===f};b.isLazy=function(a){return d(a)===n};b.isMemo=function(a){return d(a)===p};b.isPortal=function(a){return d(a)===u};b.isProfiler=function(a){return d(a)===g};b.isStrictMode=function(a){return d(a)===h};b.isSuspense=function(a){return d(a)===k};b.isValidElementType= +function(a){return"string"===typeof a||"function"===typeof a||a===f||a===e||a===g||a===h||a===k||a===w||"object"===typeof a&&null!==a&&(a.$$typeof===n||a.$$typeof===p||a.$$typeof===q||a.$$typeof===l||a.$$typeof===m||a.$$typeof===y||a.$$typeof===z||a.$$typeof===A||a.$$typeof===x)};b.typeOf=d}); diff --git a/node_modules/prop-types/package.json b/node_modules/prop-types/package.json new file mode 100644 index 0000000000..2675a422c2 --- /dev/null +++ b/node_modules/prop-types/package.json @@ -0,0 +1,58 @@ +{ + "name": "prop-types", + "version": "15.7.2", + "description": "Runtime type checking for React props and similar objects.", + "main": "index.js", + "license": "MIT", + "files": [ + "LICENSE", + "README.md", + "checkPropTypes.js", + "factory.js", + "factoryWithThrowingShims.js", + "factoryWithTypeCheckers.js", + "index.js", + "prop-types.js", + "prop-types.min.js", + "lib" + ], + "repository": "facebook/prop-types", + "keywords": [ + "react" + ], + "bugs": { + "url": "https://github.com/facebook/prop-types/issues" + }, + "homepage": "https://facebook.github.io/react/", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "scripts": { + "pretest": "npm run lint", + "lint": "eslint .", + "test": "npm run tests-only", + "tests-only": "jest", + "umd": "NODE_ENV=development browserify index.js -t loose-envify --standalone PropTypes -o prop-types.js", + "umd-min": "NODE_ENV=production browserify index.js -t loose-envify -t uglifyify --standalone PropTypes -p bundle-collapser/plugin -o | uglifyjs --compress unused,dead_code -o prop-types.min.js", + "build": "yarn umd && yarn umd-min", + "prepublish": "yarn build" + }, + "devDependencies": { + "babel-jest": "^19.0.0", + "babel-preset-react": "^6.24.1", + "browserify": "^16.2.3", + "bundle-collapser": "^1.2.1", + "eslint": "^5.13.0", + "jest": "^19.0.2", + "react": "^15.5.1", + "uglifyify": "^3.0.4", + "uglifyjs": "^2.4.10" + }, + "browserify": { + "transform": [ + "loose-envify" + ] + } +} diff --git a/node_modules/prop-types/prop-types.js b/node_modules/prop-types/prop-types.js new file mode 100644 index 0000000000..867d6993c6 --- /dev/null +++ b/node_modules/prop-types/prop-types.js @@ -0,0 +1,1337 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.PropTypes = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + "development" !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (!checker) { + continue; + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from + // props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + +},{"./checkPropTypes":1,"./lib/ReactPropTypesSecret":5,"object-assign":6,"react-is":10}],4:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if ("development" !== 'production') { + var ReactIs = require('react-is'); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess); +} else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = require('./factoryWithThrowingShims')(); +} + +},{"./factoryWithThrowingShims":2,"./factoryWithTypeCheckers":3,"react-is":10}],5:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + +},{}],6:[function(require,module,exports){ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +},{}],7:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],8:[function(require,module,exports){ +(function (process){ +/** @license React v16.8.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + + + +if (process.env.NODE_ENV !== "production") { + (function() { +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; + +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || + // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE); +} + +/** + * Forked from fbjs/warning: + * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js + * + * Only change is we use console.warn instead of console.error, + * and do nothing when 'console' is not supported. + * This really simplifies the code. + * --- + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + +var lowPriorityWarning = function () {}; + +{ + var printWarning = function (format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.warn(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + lowPriorityWarning = function (condition, format) { + if (format === undefined) { + throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; +} + +var lowPriorityWarning$1 = lowPriorityWarning; + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + default: + return $$typeof; + } + } + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} + +// AsyncMode is deprecated along with isAsyncMode +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; + +var hasWarnedAboutDeprecatedIsAsyncMode = false; + +// AsyncMode should be deprecated +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; + lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.typeOf = typeOf; +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isValidElementType = isValidElementType; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; + })(); +} + +}).call(this,require('_process')) +},{"_process":7}],9:[function(require,module,exports){ +/** @license React v16.8.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict';Object.defineProperty(exports,"__esModule",{value:!0}); +var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b?Symbol.for("react.memo"): +60115,r=b?Symbol.for("react.lazy"):60116;function t(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n; +exports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||"object"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k}; +exports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f}; +exports.isSuspense=function(a){return t(a)===p}; + +},{}],10:[function(require,module,exports){ +(function (process){ +'use strict'; + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./cjs/react-is.production.min.js'); +} else { + module.exports = require('./cjs/react-is.development.js'); +} + +}).call(this,require('_process')) +},{"./cjs/react-is.development.js":8,"./cjs/react-is.production.min.js":9,"_process":7}]},{},[4])(4) +}); \ No newline at end of file diff --git a/node_modules/prop-types/prop-types.min.js b/node_modules/prop-types/prop-types.min.js new file mode 100644 index 0000000000..c902433158 --- /dev/null +++ b/node_modules/prop-types/prop-types.min.js @@ -0,0 +1 @@ +!function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{var g;g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,g.PropTypes=f()}}(function(){return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;oHello World
; + } +} + +ReactDOM.render(, node); +``` + +### On the server + +```js +var React = require('react'); +var ReactDOMServer = require('react-dom/server'); + +class MyComponent extends React.Component { + render() { + return
Hello World
; + } +} + +ReactDOMServer.renderToString(); +``` + +## API + +### `react-dom` + +- `findDOMNode` +- `render` +- `unmountComponentAtNode` + +### `react-dom/server` + +- `renderToString` +- `renderToStaticMarkup` diff --git a/node_modules/react-dom/build-info.json b/node_modules/react-dom/build-info.json new file mode 100644 index 0000000000..db5dbe5e2e --- /dev/null +++ b/node_modules/react-dom/build-info.json @@ -0,0 +1,8 @@ +{ + "branch": "pull/21051", + "buildNumber": "287151", + "checksum": "94f5c65", + "commit": "12adaffef", + "environment": "ci", + "reactVersion": "17.0.0-12adaffef" +} diff --git a/node_modules/react-dom/cjs/react-dom-server.browser.development.js b/node_modules/react-dom/cjs/react-dom-server.browser.development.js new file mode 100644 index 0000000000..37fe89d0aa --- /dev/null +++ b/node_modules/react-dom/cjs/react-dom-server.browser.development.js @@ -0,0 +1,4342 @@ +/** @license React v17.0.2 + * react-dom-server.browser.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +if (process.env.NODE_ENV !== "production") { + (function() { +'use strict'; + +var React = require('react'); +var _assign = require('object-assign'); + +// Do not require this module directly! Use normal `invariant` calls with +// template literal strings. The messages will be replaced with error codes +// during build. +function formatProdErrorMessage(code) { + var url = 'https://reactjs.org/docs/error-decoder.html?invariant=' + code; + + for (var i = 1; i < arguments.length; i++) { + url += '&args[]=' + encodeURIComponent(arguments[i]); + } + + return "Minified React error #" + code + "; visit " + url + " for the full message or " + 'use the non-minified dev environment for full errors and additional ' + 'helpful warnings.'; +} + +// TODO: this is special because it gets imported during build. +var ReactVersion = '17.0.2'; + +var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + +// by calls to these methods by a Babel plugin. +// +// In PROD (or in packages without access to React internals), +// they are left as they are instead. + +function warn(format) { + { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + printWarning('warn', format, args); + } +} +function error(format) { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + printWarning('error', format, args); + } +} + +function printWarning(level, format, args) { + // When changing this logic, you might want to also + // update consoleWithStackDev.www.js as well. + { + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame.getStackAddendum(); + + if (stack !== '') { + format += '%s'; + args = args.concat([stack]); + } + + var argsWithFormat = args.map(function (item) { + return '' + item; + }); // Careful: RN currently depends on this prefix + + argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it + // breaks IE9: https://github.com/facebook/react/issues/13610 + // eslint-disable-next-line react-internal/no-production-logging + + Function.prototype.apply.call(console[level], console, argsWithFormat); + } +} + +// ATTENTION +// When adding new symbols to this file, +// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var REACT_ELEMENT_TYPE = 0xeac7; +var REACT_PORTAL_TYPE = 0xeaca; +var REACT_FRAGMENT_TYPE = 0xeacb; +var REACT_STRICT_MODE_TYPE = 0xeacc; +var REACT_PROFILER_TYPE = 0xead2; +var REACT_PROVIDER_TYPE = 0xeacd; +var REACT_CONTEXT_TYPE = 0xeace; +var REACT_FORWARD_REF_TYPE = 0xead0; +var REACT_SUSPENSE_TYPE = 0xead1; +var REACT_SUSPENSE_LIST_TYPE = 0xead8; +var REACT_MEMO_TYPE = 0xead3; +var REACT_LAZY_TYPE = 0xead4; +var REACT_BLOCK_TYPE = 0xead9; +var REACT_SERVER_BLOCK_TYPE = 0xeada; +var REACT_FUNDAMENTAL_TYPE = 0xead5; +var REACT_SCOPE_TYPE = 0xead7; +var REACT_OPAQUE_ID_TYPE = 0xeae0; +var REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1; +var REACT_OFFSCREEN_TYPE = 0xeae2; +var REACT_LEGACY_HIDDEN_TYPE = 0xeae3; + +if (typeof Symbol === 'function' && Symbol.for) { + var symbolFor = Symbol.for; + REACT_ELEMENT_TYPE = symbolFor('react.element'); + REACT_PORTAL_TYPE = symbolFor('react.portal'); + REACT_FRAGMENT_TYPE = symbolFor('react.fragment'); + REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode'); + REACT_PROFILER_TYPE = symbolFor('react.profiler'); + REACT_PROVIDER_TYPE = symbolFor('react.provider'); + REACT_CONTEXT_TYPE = symbolFor('react.context'); + REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref'); + REACT_SUSPENSE_TYPE = symbolFor('react.suspense'); + REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list'); + REACT_MEMO_TYPE = symbolFor('react.memo'); + REACT_LAZY_TYPE = symbolFor('react.lazy'); + REACT_BLOCK_TYPE = symbolFor('react.block'); + REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block'); + REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental'); + REACT_SCOPE_TYPE = symbolFor('react.scope'); + REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id'); + REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode'); + REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen'); + REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden'); +} + +function getWrappedName(outerType, innerType, wrapperName) { + var functionName = innerType.displayName || innerType.name || ''; + return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName); +} + +function getContextName(type) { + return type.displayName || 'Context'; +} + +function getComponentName(type) { + if (type == null) { + // Host root, text node or just invalid type. + return null; + } + + { + if (typeof type.tag === 'number') { + error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.'); + } + } + + if (typeof type === 'function') { + return type.displayName || type.name || null; + } + + if (typeof type === 'string') { + return type; + } + + switch (type) { + case REACT_FRAGMENT_TYPE: + return 'Fragment'; + + case REACT_PORTAL_TYPE: + return 'Portal'; + + case REACT_PROFILER_TYPE: + return 'Profiler'; + + case REACT_STRICT_MODE_TYPE: + return 'StrictMode'; + + case REACT_SUSPENSE_TYPE: + return 'Suspense'; + + case REACT_SUSPENSE_LIST_TYPE: + return 'SuspenseList'; + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_CONTEXT_TYPE: + var context = type; + return getContextName(context) + '.Consumer'; + + case REACT_PROVIDER_TYPE: + var provider = type; + return getContextName(provider._context) + '.Provider'; + + case REACT_FORWARD_REF_TYPE: + return getWrappedName(type, type.render, 'ForwardRef'); + + case REACT_MEMO_TYPE: + return getComponentName(type.type); + + case REACT_BLOCK_TYPE: + return getComponentName(type._render); + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + return getComponentName(init(payload)); + } catch (x) { + return null; + } + } + } + } + + return null; +} + +// Filter certain DOM attributes (e.g. src, href) if their values are empty strings. + +var enableSuspenseServerRenderer = false; + +// Helpers to patch console.logs to avoid logging during side-effect free +// replaying on render function. This currently only patches the object +// lazily which won't cover if the log function was extracted eagerly. +// We could also eagerly patch the method. +var disabledDepth = 0; +var prevLog; +var prevInfo; +var prevWarn; +var prevError; +var prevGroup; +var prevGroupCollapsed; +var prevGroupEnd; + +function disabledLog() {} + +disabledLog.__reactDisabledLog = true; +function disableLogs() { + { + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099 + + var props = { + configurable: true, + enumerable: true, + value: disabledLog, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + /* eslint-enable react-internal/no-production-logging */ + } + + disabledDepth++; + } +} +function reenableLogs() { + { + disabledDepth--; + + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + var props = { + configurable: true, + enumerable: true, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + log: _assign({}, props, { + value: prevLog + }), + info: _assign({}, props, { + value: prevInfo + }), + warn: _assign({}, props, { + value: prevWarn + }), + error: _assign({}, props, { + value: prevError + }), + group: _assign({}, props, { + value: prevGroup + }), + groupCollapsed: _assign({}, props, { + value: prevGroupCollapsed + }), + groupEnd: _assign({}, props, { + value: prevGroupEnd + }) + }); + /* eslint-enable react-internal/no-production-logging */ + } + + if (disabledDepth < 0) { + error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.'); + } + } +} + +var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher; +var prefix; +function describeBuiltInComponentFrame(name, source, ownerFn) { + { + if (prefix === undefined) { + // Extract the VM specific prefix used by each line. + try { + throw Error(); + } catch (x) { + var match = x.stack.trim().match(/\n( *(at )?)/); + prefix = match && match[1] || ''; + } + } // We use the prefix to ensure our stacks line up with native stack frames. + + + return '\n' + prefix + name; + } +} +var reentry = false; +var componentFrameCache; + +{ + var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; + componentFrameCache = new PossiblyWeakMap(); +} + +function describeNativeComponentFrame(fn, construct) { + // If something asked for a stack inside a fake render, it should get ignored. + if (!fn || reentry) { + return ''; + } + + { + var frame = componentFrameCache.get(fn); + + if (frame !== undefined) { + return frame; + } + } + + var control; + reentry = true; + var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined. + + Error.prepareStackTrace = undefined; + var previousDispatcher; + + { + previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function + // for warnings. + + ReactCurrentDispatcher.current = null; + disableLogs(); + } + + try { + // This should throw. + if (construct) { + // Something should be setting the props in the constructor. + var Fake = function () { + throw Error(); + }; // $FlowFixMe + + + Object.defineProperty(Fake.prototype, 'props', { + set: function () { + // We use a throwing setter instead of frozen or non-writable props + // because that won't throw in a non-strict mode function. + throw Error(); + } + }); + + if (typeof Reflect === 'object' && Reflect.construct) { + // We construct a different control for this case to include any extra + // frames added by the construct call. + try { + Reflect.construct(Fake, []); + } catch (x) { + control = x; + } + + Reflect.construct(fn, [], Fake); + } else { + try { + Fake.call(); + } catch (x) { + control = x; + } + + fn.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x) { + control = x; + } + + fn(); + } + } catch (sample) { + // This is inlined manually because closure doesn't do it for us. + if (sample && control && typeof sample.stack === 'string') { + // This extracts the first frame from the sample that isn't also in the control. + // Skipping one frame that we assume is the frame that calls the two. + var sampleLines = sample.stack.split('\n'); + var controlLines = control.stack.split('\n'); + var s = sampleLines.length - 1; + var c = controlLines.length - 1; + + while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) { + // We expect at least one stack frame to be shared. + // Typically this will be the root most one. However, stack frames may be + // cut off due to maximum stack limits. In this case, one maybe cut off + // earlier than the other. We assume that the sample is longer or the same + // and there for cut off earlier. So we should find the root most frame in + // the sample somewhere in the control. + c--; + } + + for (; s >= 1 && c >= 0; s--, c--) { + // Next we find the first one that isn't the same which should be the + // frame that called our sample function and the control. + if (sampleLines[s] !== controlLines[c]) { + // In V8, the first line is describing the message but other VMs don't. + // If we're about to return the first line, and the control is also on the same + // line, that's a pretty good indicator that our sample threw at same line as + // the control. I.e. before we entered the sample frame. So we ignore this result. + // This can happen if you passed a class to function component, or non-function. + if (s !== 1 || c !== 1) { + do { + s--; + c--; // We may still have similar intermediate frames from the construct call. + // The next one that isn't the same should be our match though. + + if (c < 0 || sampleLines[s] !== controlLines[c]) { + // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. + var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, _frame); + } + } // Return the line we found. + + + return _frame; + } + } while (s >= 1 && c >= 0); + } + + break; + } + } + } + } finally { + reentry = false; + + { + ReactCurrentDispatcher.current = previousDispatcher; + reenableLogs(); + } + + Error.prepareStackTrace = previousPrepareStackTrace; + } // Fallback to just using the name if we couldn't make it throw. + + + var name = fn ? fn.displayName || fn.name : ''; + var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ''; + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, syntheticFrame); + } + } + + return syntheticFrame; +} +function describeFunctionComponentFrame(fn, source, ownerFn) { + { + return describeNativeComponentFrame(fn, false); + } +} + +function shouldConstruct(Component) { + var prototype = Component.prototype; + return !!(prototype && prototype.isReactComponent); +} + +function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { + + if (type == null) { + return ''; + } + + if (typeof type === 'function') { + { + return describeNativeComponentFrame(type, shouldConstruct(type)); + } + } + + if (typeof type === 'string') { + return describeBuiltInComponentFrame(type); + } + + switch (type) { + case REACT_SUSPENSE_TYPE: + return describeBuiltInComponentFrame('Suspense'); + + case REACT_SUSPENSE_LIST_TYPE: + return describeBuiltInComponentFrame('SuspenseList'); + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + return describeFunctionComponentFrame(type.render); + + case REACT_MEMO_TYPE: + // Memo may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); + + case REACT_BLOCK_TYPE: + return describeFunctionComponentFrame(type._render); + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + // Lazy may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + } catch (x) {} + } + } + } + + return ''; +} + +var loggedTypeFailures = {}; +var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + +function setCurrentlyValidatingElement(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + ReactDebugCurrentFrame.setExtraStackFrame(stack); + } else { + ReactDebugCurrentFrame.setExtraStackFrame(null); + } + } +} + +function checkPropTypes(typeSpecs, values, location, componentName, element) { + { + // $FlowFixMe This is okay but Flow doesn't know it. + var has = Function.call.bind(Object.prototype.hasOwnProperty); + + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'); + err.name = 'Invariant Violation'; + throw err; + } + + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'); + } catch (ex) { + error$1 = ex; + } + + if (error$1 && !(error$1 instanceof Error)) { + setCurrentlyValidatingElement(element); + + error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1); + + setCurrentlyValidatingElement(null); + } + + if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error$1.message] = true; + setCurrentlyValidatingElement(element); + + error('Failed %s type: %s', location, error$1.message); + + setCurrentlyValidatingElement(null); + } + } + } + } +} + +var didWarnAboutInvalidateContextType; + +{ + didWarnAboutInvalidateContextType = new Set(); +} + +var emptyObject = {}; + +{ + Object.freeze(emptyObject); +} + +function maskContext(type, context) { + var contextTypes = type.contextTypes; + + if (!contextTypes) { + return emptyObject; + } + + var maskedContext = {}; + + for (var contextName in contextTypes) { + maskedContext[contextName] = context[contextName]; + } + + return maskedContext; +} + +function checkContextTypes(typeSpecs, values, location) { + { + checkPropTypes(typeSpecs, values, location, 'Component'); + } +} + +function validateContextBounds(context, threadID) { + // If we don't have enough slots in this context to store this threadID, + // fill it in without leaving any holes to ensure that the VM optimizes + // this as non-holey index properties. + // (Note: If `react` package is < 16.6, _threadCount is undefined.) + for (var i = context._threadCount | 0; i <= threadID; i++) { + // We assume that this is the same as the defaultValue which might not be + // true if we're rendering inside a secondary renderer but they are + // secondary because these use cases are very rare. + context[i] = context._currentValue2; + context._threadCount = i + 1; + } +} +function processContext(type, context, threadID, isClass) { + if (isClass) { + var contextType = type.contextType; + + { + if ('contextType' in type) { + var isValid = // Allow null for conditional declaration + contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a + + if (!isValid && !didWarnAboutInvalidateContextType.has(type)) { + didWarnAboutInvalidateContextType.add(type); + var addendum = ''; + + if (contextType === undefined) { + addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.'; + } else if (typeof contextType !== 'object') { + addendum = ' However, it is set to a ' + typeof contextType + '.'; + } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) { + addendum = ' Did you accidentally pass the Context.Provider instead?'; + } else if (contextType._context !== undefined) { + // + addendum = ' Did you accidentally pass the Context.Consumer instead?'; + } else { + addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.'; + } + + error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(type) || 'Component', addendum); + } + } + } + + if (typeof contextType === 'object' && contextType !== null) { + validateContextBounds(contextType, threadID); + return contextType[threadID]; + } + + { + var maskedContext = maskContext(type, context); + + { + if (type.contextTypes) { + checkContextTypes(type.contextTypes, maskedContext, 'context'); + } + } + + return maskedContext; + } + } else { + { + var _maskedContext = maskContext(type, context); + + { + if (type.contextTypes) { + checkContextTypes(type.contextTypes, _maskedContext, 'context'); + } + } + + return _maskedContext; + } + } +} + +var nextAvailableThreadIDs = new Uint16Array(16); + +for (var i = 0; i < 15; i++) { + nextAvailableThreadIDs[i] = i + 1; +} + +nextAvailableThreadIDs[15] = 0; + +function growThreadCountAndReturnNextAvailable() { + var oldArray = nextAvailableThreadIDs; + var oldSize = oldArray.length; + var newSize = oldSize * 2; + + if (!(newSize <= 0x10000)) { + { + throw Error( "Maximum number of concurrent React renderers exceeded. This can happen if you are not properly destroying the Readable provided by React. Ensure that you call .destroy() on it if you no longer want to read from it, and did not read to the end. If you use .pipe() this should be automatic." ); + } + } + + var newArray = new Uint16Array(newSize); + newArray.set(oldArray); + nextAvailableThreadIDs = newArray; + nextAvailableThreadIDs[0] = oldSize + 1; + + for (var _i = oldSize; _i < newSize - 1; _i++) { + nextAvailableThreadIDs[_i] = _i + 1; + } + + nextAvailableThreadIDs[newSize - 1] = 0; + return oldSize; +} + +function allocThreadID() { + var nextID = nextAvailableThreadIDs[0]; + + if (nextID === 0) { + return growThreadCountAndReturnNextAvailable(); + } + + nextAvailableThreadIDs[0] = nextAvailableThreadIDs[nextID]; + return nextID; +} +function freeThreadID(id) { + nextAvailableThreadIDs[id] = nextAvailableThreadIDs[0]; + nextAvailableThreadIDs[0] = id; +} + +// A reserved attribute. +// It is handled by React separately and shouldn't be written to the DOM. +var RESERVED = 0; // A simple string attribute. +// Attributes that aren't in the filter are presumed to have this type. + +var STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called +// "enumerated" attributes with "true" and "false" as possible values. +// When true, it should be set to a "true" string. +// When false, it should be set to a "false" string. + +var BOOLEANISH_STRING = 2; // A real boolean attribute. +// When true, it should be present (set either to an empty string or its name). +// When false, it should be omitted. + +var BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value. +// When true, it should be present (set either to an empty string or its name). +// When false, it should be omitted. +// For any other value, should be present with that value. + +var OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric. +// When falsy, it should be removed. + +var NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric. +// When falsy, it should be removed. + +var POSITIVE_NUMERIC = 6; + +/* eslint-disable max-len */ +var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"; +/* eslint-enable max-len */ + +var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; +var ROOT_ATTRIBUTE_NAME = 'data-reactroot'; +var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$'); +var hasOwnProperty = Object.prototype.hasOwnProperty; +var illegalAttributeNameCache = {}; +var validatedAttributeNameCache = {}; +function isAttributeNameSafe(attributeName) { + if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) { + return true; + } + + if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) { + return false; + } + + if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) { + validatedAttributeNameCache[attributeName] = true; + return true; + } + + illegalAttributeNameCache[attributeName] = true; + + { + error('Invalid attribute name: `%s`', attributeName); + } + + return false; +} +function shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) { + if (propertyInfo !== null) { + return propertyInfo.type === RESERVED; + } + + if (isCustomComponentTag) { + return false; + } + + if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) { + return true; + } + + return false; +} +function shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) { + if (propertyInfo !== null && propertyInfo.type === RESERVED) { + return false; + } + + switch (typeof value) { + case 'function': // $FlowIssue symbol is perfectly valid here + + case 'symbol': + // eslint-disable-line + return true; + + case 'boolean': + { + if (isCustomComponentTag) { + return false; + } + + if (propertyInfo !== null) { + return !propertyInfo.acceptsBooleans; + } else { + var prefix = name.toLowerCase().slice(0, 5); + return prefix !== 'data-' && prefix !== 'aria-'; + } + } + + default: + return false; + } +} +function shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) { + if (value === null || typeof value === 'undefined') { + return true; + } + + if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) { + return true; + } + + if (isCustomComponentTag) { + return false; + } + + if (propertyInfo !== null) { + + switch (propertyInfo.type) { + case BOOLEAN: + return !value; + + case OVERLOADED_BOOLEAN: + return value === false; + + case NUMERIC: + return isNaN(value); + + case POSITIVE_NUMERIC: + return isNaN(value) || value < 1; + } + } + + return false; +} +function getPropertyInfo(name) { + return properties.hasOwnProperty(name) ? properties[name] : null; +} + +function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) { + this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN; + this.attributeName = attributeName; + this.attributeNamespace = attributeNamespace; + this.mustUseProperty = mustUseProperty; + this.propertyName = name; + this.type = type; + this.sanitizeURL = sanitizeURL; + this.removeEmptyString = removeEmptyString; +} // When adding attributes to this list, be sure to also add them to +// the `possibleStandardNames` module to ensure casing and incorrect +// name warnings. + + +var properties = {}; // These props are reserved by React. They shouldn't be written to the DOM. + +var reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular +// elements (not just inputs). Now that ReactDOMInput assigns to the +// defaultValue property -- do we need this? +'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style']; +reservedProps.forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // A few React string attributes have a different name. +// This is a mapping from React prop names to the attribute names. + +[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) { + var name = _ref[0], + attributeName = _ref[1]; + properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty + attributeName, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are "enumerated" HTML attributes that accept "true" and "false". +// In React, we let users pass `true` and `false` even though technically +// these aren't boolean attributes (they are coerced to strings). + +['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty + name.toLowerCase(), // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are "enumerated" SVG attributes that accept "true" and "false". +// In React, we let users pass `true` and `false` even though technically +// these aren't boolean attributes (they are coerced to strings). +// Since these are SVG attributes, their attribute names are case-sensitive. + +['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are HTML boolean attributes. + +['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM +// on the client side because the browsers are inconsistent. Instead we call focus(). +'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata +'itemScope'].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty + name.toLowerCase(), // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are the few React props that we set as DOM properties +// rather than attributes. These are all booleans. + +['checked', // Note: `option.selected` is not updated if `select.multiple` is +// disabled with `removeAttribute`. We have special logic for handling this. +'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are HTML attributes that are "overloaded booleans": they behave like +// booleans, but can also accept a string value. + +['capture', 'download' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are HTML attributes that must be positive numbers. + +['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are HTML attributes that must be numbers. + +['rowSpan', 'start'].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty + name.toLowerCase(), // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); +var CAMELIZE = /[\-\:]([a-z])/g; + +var capitalize = function (token) { + return token[1].toUpperCase(); +}; // This is a list of all SVG attributes that need special casing, namespacing, +// or boolean value assignment. Regular attributes that just accept strings +// and have the same names are omitted, just like in the HTML attribute filter. +// Some of these attributes can be hard to find. This list was created by +// scraping the MDN documentation. + + +['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (attributeName) { + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty + attributeName, null, // attributeNamespace + false, // sanitizeURL + false); +}); // String SVG attributes with the xlink namespace. + +['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (attributeName) { + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty + attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL + false); +}); // String SVG attributes with the xml namespace. + +['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (attributeName) { + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty + attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL + false); +}); // These attribute exists both in HTML and SVG. +// The attribute name is case-sensitive in SVG so we can't just use +// the React name like we do for attributes that exist only in HTML. + +['tabIndex', 'crossOrigin'].forEach(function (attributeName) { + properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty + attributeName.toLowerCase(), // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These attributes accept URLs. These must not allow javascript: URLS. +// These will also need to accept Trusted Types object in the future. + +var xlinkHref = 'xlinkHref'; +properties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty +'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL +false); +['src', 'href', 'action', 'formAction'].forEach(function (attributeName) { + properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty + attributeName.toLowerCase(), // attributeName + null, // attributeNamespace + true, // sanitizeURL + true); +}); + +// and any newline or tab are filtered out as if they're not part of the URL. +// https://url.spec.whatwg.org/#url-parsing +// Tab or newline are defined as \r\n\t: +// https://infra.spec.whatwg.org/#ascii-tab-or-newline +// A C0 control is a code point in the range \u0000 NULL to \u001F +// INFORMATION SEPARATOR ONE, inclusive: +// https://infra.spec.whatwg.org/#c0-control-or-space + +/* eslint-disable max-len */ + +var isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i; +var didWarn = false; + +function sanitizeURL(url) { + { + if (!didWarn && isJavaScriptProtocol.test(url)) { + didWarn = true; + + error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url)); + } + } +} + +// code copied and modified from escape-html + +/** + * Module variables. + * @private + */ +var matchHtmlRegExp = /["'&<>]/; +/** + * Escapes special characters and HTML entities in a given html string. + * + * @param {string} string HTML string to escape for later insertion + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + // " + escape = '"'; + break; + + case 38: + // & + escape = '&'; + break; + + case 39: + // ' + escape = '''; // modified from escape-html; used to be ''' + + break; + + case 60: + // < + escape = '<'; + break; + + case 62: + // > + escape = '>'; + break; + + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index ? html + str.substring(lastIndex, index) : html; +} // end code copied and modified from escape-html + +/** + * Escapes text to prevent scripting attacks. + * + * @param {*} text Text value to escape. + * @return {string} An escaped string. + */ + + +function escapeTextForBrowser(text) { + if (typeof text === 'boolean' || typeof text === 'number') { + // this shortcircuit helps perf for types that we know will never have + // special characters, especially given that this function is used often + // for numeric dom ids. + return '' + text; + } + + return escapeHtml(text); +} + +/** + * Escapes attribute value to prevent scripting attacks. + * + * @param {*} value Value to escape. + * @return {string} An escaped string. + */ + +function quoteAttributeValueForBrowser(value) { + return '"' + escapeTextForBrowser(value) + '"'; +} + +function createMarkupForRoot() { + return ROOT_ATTRIBUTE_NAME + '=""'; +} +/** + * Creates markup for a property. + * + * @param {string} name + * @param {*} value + * @return {?string} Markup string, or null if the property was invalid. + */ + +function createMarkupForProperty(name, value) { + var propertyInfo = getPropertyInfo(name); + + if (name !== 'style' && shouldIgnoreAttribute(name, propertyInfo, false)) { + return ''; + } + + if (shouldRemoveAttribute(name, value, propertyInfo, false)) { + return ''; + } + + if (propertyInfo !== null) { + var attributeName = propertyInfo.attributeName; + var type = propertyInfo.type; + + if (type === BOOLEAN || type === OVERLOADED_BOOLEAN && value === true) { + return attributeName + '=""'; + } else { + if (propertyInfo.sanitizeURL) { + value = '' + value; + sanitizeURL(value); + } + + return attributeName + '=' + quoteAttributeValueForBrowser(value); + } + } else if (isAttributeNameSafe(name)) { + return name + '=' + quoteAttributeValueForBrowser(value); + } + + return ''; +} +/** + * Creates markup for a custom property. + * + * @param {string} name + * @param {*} value + * @return {string} Markup string, or empty string if the property was invalid. + */ + +function createMarkupForCustomAttribute(name, value) { + if (!isAttributeNameSafe(name) || value == null) { + return ''; + } + + return name + '=' + quoteAttributeValueForBrowser(value); +} + +/** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ +function is(x, y) { + return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare + ; +} + +var objectIs = typeof Object.is === 'function' ? Object.is : is; + +var currentlyRenderingComponent = null; +var firstWorkInProgressHook = null; +var workInProgressHook = null; // Whether the work-in-progress hook is a re-rendered hook + +var isReRender = false; // Whether an update was scheduled during the currently executing render pass. + +var didScheduleRenderPhaseUpdate = false; // Lazily created map of render-phase updates + +var renderPhaseUpdates = null; // Counter to prevent infinite loops. + +var numberOfReRenders = 0; +var RE_RENDER_LIMIT = 25; +var isInHookUserCodeInDev = false; // In DEV, this is the name of the currently executing primitive hook + +var currentHookNameInDev; + +function resolveCurrentlyRenderingComponent() { + if (!(currentlyRenderingComponent !== null)) { + { + throw Error( "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem." ); + } + } + + { + if (isInHookUserCodeInDev) { + error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://reactjs.org/link/rules-of-hooks'); + } + } + + return currentlyRenderingComponent; +} + +function areHookInputsEqual(nextDeps, prevDeps) { + if (prevDeps === null) { + { + error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev); + } + + return false; + } + + { + // Don't bother comparing lengths in prod because these arrays should be + // passed inline. + if (nextDeps.length !== prevDeps.length) { + error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\n\n' + 'Previous: %s\n' + 'Incoming: %s', currentHookNameInDev, "[" + nextDeps.join(', ') + "]", "[" + prevDeps.join(', ') + "]"); + } + } + + for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) { + if (objectIs(nextDeps[i], prevDeps[i])) { + continue; + } + + return false; + } + + return true; +} + +function createHook() { + if (numberOfReRenders > 0) { + { + { + throw Error( "Rendered more hooks than during the previous render" ); + } + } + } + + return { + memoizedState: null, + queue: null, + next: null + }; +} + +function createWorkInProgressHook() { + if (workInProgressHook === null) { + // This is the first hook in the list + if (firstWorkInProgressHook === null) { + isReRender = false; + firstWorkInProgressHook = workInProgressHook = createHook(); + } else { + // There's already a work-in-progress. Reuse it. + isReRender = true; + workInProgressHook = firstWorkInProgressHook; + } + } else { + if (workInProgressHook.next === null) { + isReRender = false; // Append to the end of the list + + workInProgressHook = workInProgressHook.next = createHook(); + } else { + // There's already a work-in-progress. Reuse it. + isReRender = true; + workInProgressHook = workInProgressHook.next; + } + } + + return workInProgressHook; +} + +function prepareToUseHooks(componentIdentity) { + currentlyRenderingComponent = componentIdentity; + + { + isInHookUserCodeInDev = false; + } // The following should have already been reset + // didScheduleRenderPhaseUpdate = false; + // firstWorkInProgressHook = null; + // numberOfReRenders = 0; + // renderPhaseUpdates = null; + // workInProgressHook = null; + +} +function finishHooks(Component, props, children, refOrContext) { + // This must be called after every function component to prevent hooks from + // being used in classes. + while (didScheduleRenderPhaseUpdate) { + // Updates were scheduled during the render phase. They are stored in + // the `renderPhaseUpdates` map. Call the component again, reusing the + // work-in-progress hooks and applying the additional updates on top. Keep + // restarting until no more updates are scheduled. + didScheduleRenderPhaseUpdate = false; + numberOfReRenders += 1; // Start over from the beginning of the list + + workInProgressHook = null; + children = Component(props, refOrContext); + } + + resetHooksState(); + return children; +} // Reset the internal hooks state if an error occurs while rendering a component + +function resetHooksState() { + { + isInHookUserCodeInDev = false; + } + + currentlyRenderingComponent = null; + didScheduleRenderPhaseUpdate = false; + firstWorkInProgressHook = null; + numberOfReRenders = 0; + renderPhaseUpdates = null; + workInProgressHook = null; +} + +function readContext(context, observedBits) { + var threadID = currentPartialRenderer.threadID; + validateContextBounds(context, threadID); + + { + if (isInHookUserCodeInDev) { + error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().'); + } + } + + return context[threadID]; +} + +function useContext(context, observedBits) { + { + currentHookNameInDev = 'useContext'; + } + + resolveCurrentlyRenderingComponent(); + var threadID = currentPartialRenderer.threadID; + validateContextBounds(context, threadID); + return context[threadID]; +} + +function basicStateReducer(state, action) { + // $FlowFixMe: Flow doesn't like mixed types + return typeof action === 'function' ? action(state) : action; +} + +function useState(initialState) { + { + currentHookNameInDev = 'useState'; + } + + return useReducer(basicStateReducer, // useReducer has a special case to support lazy useState initializers + initialState); +} +function useReducer(reducer, initialArg, init) { + { + if (reducer !== basicStateReducer) { + currentHookNameInDev = 'useReducer'; + } + } + + currentlyRenderingComponent = resolveCurrentlyRenderingComponent(); + workInProgressHook = createWorkInProgressHook(); + + if (isReRender) { + // This is a re-render. Apply the new render phase updates to the previous + // current hook. + var queue = workInProgressHook.queue; + var dispatch = queue.dispatch; + + if (renderPhaseUpdates !== null) { + // Render phase updates are stored in a map of queue -> linked list + var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue); + + if (firstRenderPhaseUpdate !== undefined) { + renderPhaseUpdates.delete(queue); + var newState = workInProgressHook.memoizedState; + var update = firstRenderPhaseUpdate; + + do { + // Process this render phase update. We don't have to check the + // priority because it will always be the same as the current + // render's. + var action = update.action; + + { + isInHookUserCodeInDev = true; + } + + newState = reducer(newState, action); + + { + isInHookUserCodeInDev = false; + } + + update = update.next; + } while (update !== null); + + workInProgressHook.memoizedState = newState; + return [newState, dispatch]; + } + } + + return [workInProgressHook.memoizedState, dispatch]; + } else { + { + isInHookUserCodeInDev = true; + } + + var initialState; + + if (reducer === basicStateReducer) { + // Special case for `useState`. + initialState = typeof initialArg === 'function' ? initialArg() : initialArg; + } else { + initialState = init !== undefined ? init(initialArg) : initialArg; + } + + { + isInHookUserCodeInDev = false; + } + + workInProgressHook.memoizedState = initialState; + + var _queue = workInProgressHook.queue = { + last: null, + dispatch: null + }; + + var _dispatch = _queue.dispatch = dispatchAction.bind(null, currentlyRenderingComponent, _queue); + + return [workInProgressHook.memoizedState, _dispatch]; + } +} + +function useMemo(nextCreate, deps) { + currentlyRenderingComponent = resolveCurrentlyRenderingComponent(); + workInProgressHook = createWorkInProgressHook(); + var nextDeps = deps === undefined ? null : deps; + + if (workInProgressHook !== null) { + var prevState = workInProgressHook.memoizedState; + + if (prevState !== null) { + if (nextDeps !== null) { + var prevDeps = prevState[1]; + + if (areHookInputsEqual(nextDeps, prevDeps)) { + return prevState[0]; + } + } + } + } + + { + isInHookUserCodeInDev = true; + } + + var nextValue = nextCreate(); + + { + isInHookUserCodeInDev = false; + } + + workInProgressHook.memoizedState = [nextValue, nextDeps]; + return nextValue; +} + +function useRef(initialValue) { + currentlyRenderingComponent = resolveCurrentlyRenderingComponent(); + workInProgressHook = createWorkInProgressHook(); + var previousRef = workInProgressHook.memoizedState; + + if (previousRef === null) { + var ref = { + current: initialValue + }; + + { + Object.seal(ref); + } + + workInProgressHook.memoizedState = ref; + return ref; + } else { + return previousRef; + } +} + +function useLayoutEffect(create, inputs) { + { + currentHookNameInDev = 'useLayoutEffect'; + + error('useLayoutEffect does nothing on the server, because its effect cannot ' + "be encoded into the server renderer's output format. This will lead " + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client. ' + 'See https://reactjs.org/link/uselayouteffect-ssr for common fixes.'); + } +} + +function dispatchAction(componentIdentity, queue, action) { + if (!(numberOfReRenders < RE_RENDER_LIMIT)) { + { + throw Error( "Too many re-renders. React limits the number of renders to prevent an infinite loop." ); + } + } + + if (componentIdentity === currentlyRenderingComponent) { + // This is a render phase update. Stash it in a lazily-created map of + // queue -> linked list of updates. After this render pass, we'll restart + // and apply the stashed updates on top of the work-in-progress hook. + didScheduleRenderPhaseUpdate = true; + var update = { + action: action, + next: null + }; + + if (renderPhaseUpdates === null) { + renderPhaseUpdates = new Map(); + } + + var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue); + + if (firstRenderPhaseUpdate === undefined) { + renderPhaseUpdates.set(queue, update); + } else { + // Append the update to the end of the list. + var lastRenderPhaseUpdate = firstRenderPhaseUpdate; + + while (lastRenderPhaseUpdate.next !== null) { + lastRenderPhaseUpdate = lastRenderPhaseUpdate.next; + } + + lastRenderPhaseUpdate.next = update; + } + } +} + +function useCallback(callback, deps) { + return useMemo(function () { + return callback; + }, deps); +} // TODO Decide on how to implement this hook for server rendering. +// If a mutation occurs during render, consider triggering a Suspense boundary +// and falling back to client rendering. + +function useMutableSource(source, getSnapshot, subscribe) { + resolveCurrentlyRenderingComponent(); + return getSnapshot(source._source); +} + +function useDeferredValue(value) { + resolveCurrentlyRenderingComponent(); + return value; +} + +function useTransition() { + resolveCurrentlyRenderingComponent(); + + var startTransition = function (callback) { + callback(); + }; + + return [startTransition, false]; +} + +function useOpaqueIdentifier() { + return (currentPartialRenderer.identifierPrefix || '') + 'R:' + (currentPartialRenderer.uniqueID++).toString(36); +} + +function noop() {} + +var currentPartialRenderer = null; +function setCurrentPartialRenderer(renderer) { + currentPartialRenderer = renderer; +} +var Dispatcher = { + readContext: readContext, + useContext: useContext, + useMemo: useMemo, + useReducer: useReducer, + useRef: useRef, + useState: useState, + useLayoutEffect: useLayoutEffect, + useCallback: useCallback, + // useImperativeHandle is not run in the server environment + useImperativeHandle: noop, + // Effects are not run in the server environment. + useEffect: noop, + // Debugging effect + useDebugValue: noop, + useDeferredValue: useDeferredValue, + useTransition: useTransition, + useOpaqueIdentifier: useOpaqueIdentifier, + // Subscriptions are not setup in a server environment. + useMutableSource: useMutableSource +}; + +var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; +var MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML'; +var SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; +var Namespaces = { + html: HTML_NAMESPACE, + mathml: MATH_NAMESPACE, + svg: SVG_NAMESPACE +}; // Assumes there is no parent namespace. + +function getIntrinsicNamespace(type) { + switch (type) { + case 'svg': + return SVG_NAMESPACE; + + case 'math': + return MATH_NAMESPACE; + + default: + return HTML_NAMESPACE; + } +} +function getChildNamespace(parentNamespace, type) { + if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) { + // No (or default) parent namespace: potential entry point. + return getIntrinsicNamespace(type); + } + + if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') { + // We're leaving SVG. + return HTML_NAMESPACE; + } // By default, pass namespace below. + + + return parentNamespace; +} + +var hasReadOnlyValue = { + button: true, + checkbox: true, + image: true, + hidden: true, + radio: true, + reset: true, + submit: true +}; +function checkControlledValueProps(tagName, props) { + { + if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) { + error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); + } + + if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) { + error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); + } + } +} + +// For HTML, certain tags should omit their close tag. We keep a list for +// those special-case tags. +var omittedCloseTags = { + area: true, + base: true, + br: true, + col: true, + embed: true, + hr: true, + img: true, + input: true, + keygen: true, + link: true, + meta: true, + param: true, + source: true, + track: true, + wbr: true // NOTE: menuitem's close tag should be omitted, but that causes problems. + +}; + +// `omittedCloseTags` except that `menuitem` should still have its closing tag. + +var voidElementTags = _assign({ + menuitem: true +}, omittedCloseTags); + +var HTML = '__html'; + +function assertValidProps(tag, props) { + if (!props) { + return; + } // Note the use of `==` which checks for null or undefined. + + + if (voidElementTags[tag]) { + if (!(props.children == null && props.dangerouslySetInnerHTML == null)) { + { + throw Error( tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`." ); + } + } + } + + if (props.dangerouslySetInnerHTML != null) { + if (!(props.children == null)) { + { + throw Error( "Can only set one of `children` or `props.dangerouslySetInnerHTML`." ); + } + } + + if (!(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML)) { + { + throw Error( "`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://reactjs.org/link/dangerously-set-inner-html for more information." ); + } + } + } + + { + if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) { + error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.'); + } + } + + if (!(props.style == null || typeof props.style === 'object')) { + { + throw Error( "The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX." ); + } + } +} + +/** + * CSS properties which accept numbers but are not in units of "px". + */ +var isUnitlessNumber = { + animationIterationCount: true, + borderImageOutset: true, + borderImageSlice: true, + borderImageWidth: true, + boxFlex: true, + boxFlexGroup: true, + boxOrdinalGroup: true, + columnCount: true, + columns: true, + flex: true, + flexGrow: true, + flexPositive: true, + flexShrink: true, + flexNegative: true, + flexOrder: true, + gridArea: true, + gridRow: true, + gridRowEnd: true, + gridRowSpan: true, + gridRowStart: true, + gridColumn: true, + gridColumnEnd: true, + gridColumnSpan: true, + gridColumnStart: true, + fontWeight: true, + lineClamp: true, + lineHeight: true, + opacity: true, + order: true, + orphans: true, + tabSize: true, + widows: true, + zIndex: true, + zoom: true, + // SVG-related properties + fillOpacity: true, + floodOpacity: true, + stopOpacity: true, + strokeDasharray: true, + strokeDashoffset: true, + strokeMiterlimit: true, + strokeOpacity: true, + strokeWidth: true +}; +/** + * @param {string} prefix vendor-specific prefix, eg: Webkit + * @param {string} key style name, eg: transitionDuration + * @return {string} style name prefixed with `prefix`, properly camelCased, eg: + * WebkitTransitionDuration + */ + +function prefixKey(prefix, key) { + return prefix + key.charAt(0).toUpperCase() + key.substring(1); +} +/** + * Support style names that may come passed in prefixed by adding permutations + * of vendor prefixes. + */ + + +var prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an +// infinite loop, because it iterates over the newly added props too. + +Object.keys(isUnitlessNumber).forEach(function (prop) { + prefixes.forEach(function (prefix) { + isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop]; + }); +}); + +/** + * Convert a value into the proper css writable value. The style name `name` + * should be logical (no hyphens), as specified + * in `CSSProperty.isUnitlessNumber`. + * + * @param {string} name CSS property name such as `topMargin`. + * @param {*} value CSS property value such as `10px`. + * @return {string} Normalized style value with dimensions applied. + */ + +function dangerousStyleValue(name, value, isCustomProperty) { + // Note that we've removed escapeTextForBrowser() calls here since the + // whole string will be escaped when the attribute is injected into + // the markup. If you provide unsafe user data here they can inject + // arbitrary CSS which may be problematic (I couldn't repro this): + // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet + // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/ + // This is not an XSS hole but instead a potential CSS injection issue + // which has lead to a greater discussion about how we're going to + // trust URLs moving forward. See #2115901 + var isEmpty = value == null || typeof value === 'boolean' || value === ''; + + if (isEmpty) { + return ''; + } + + if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) { + return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers + } + + return ('' + value).trim(); +} + +var uppercasePattern = /([A-Z])/g; +var msPattern = /^ms-/; +/** + * Hyphenates a camelcased CSS property name, for example: + * + * > hyphenateStyleName('backgroundColor') + * < "background-color" + * > hyphenateStyleName('MozTransition') + * < "-moz-transition" + * > hyphenateStyleName('msTransition') + * < "-ms-transition" + * + * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix + * is converted to `-ms-`. + */ + +function hyphenateStyleName(name) { + return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-'); +} + +function isCustomComponent(tagName, props) { + if (tagName.indexOf('-') === -1) { + return typeof props.is === 'string'; + } + + switch (tagName) { + // These are reserved SVG and MathML elements. + // We don't mind this list too much because we expect it to never grow. + // The alternative is to track the namespace in a few places which is convoluted. + // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts + case 'annotation-xml': + case 'color-profile': + case 'font-face': + case 'font-face-src': + case 'font-face-uri': + case 'font-face-format': + case 'font-face-name': + case 'missing-glyph': + return false; + + default: + return true; + } +} + +var warnValidStyle = function () {}; + +{ + // 'msTransform' is correct, but the other prefixes should be capitalized + var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/; + var msPattern$1 = /^-ms-/; + var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon + + var badStyleValueWithSemicolonPattern = /;\s*$/; + var warnedStyleNames = {}; + var warnedStyleValues = {}; + var warnedForNaNValue = false; + var warnedForInfinityValue = false; + + var camelize = function (string) { + return string.replace(hyphenPattern, function (_, character) { + return character.toUpperCase(); + }); + }; + + var warnHyphenatedStyleName = function (name) { + if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { + return; + } + + warnedStyleNames[name] = true; + + error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests + // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix + // is converted to lowercase `ms`. + camelize(name.replace(msPattern$1, 'ms-'))); + }; + + var warnBadVendoredStyleName = function (name) { + if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { + return; + } + + warnedStyleNames[name] = true; + + error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1)); + }; + + var warnStyleValueWithSemicolon = function (name, value) { + if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) { + return; + } + + warnedStyleValues[value] = true; + + error("Style property values shouldn't contain a semicolon. " + 'Try "%s: %s" instead.', name, value.replace(badStyleValueWithSemicolonPattern, '')); + }; + + var warnStyleValueIsNaN = function (name, value) { + if (warnedForNaNValue) { + return; + } + + warnedForNaNValue = true; + + error('`NaN` is an invalid value for the `%s` css style property.', name); + }; + + var warnStyleValueIsInfinity = function (name, value) { + if (warnedForInfinityValue) { + return; + } + + warnedForInfinityValue = true; + + error('`Infinity` is an invalid value for the `%s` css style property.', name); + }; + + warnValidStyle = function (name, value) { + if (name.indexOf('-') > -1) { + warnHyphenatedStyleName(name); + } else if (badVendoredStyleNamePattern.test(name)) { + warnBadVendoredStyleName(name); + } else if (badStyleValueWithSemicolonPattern.test(value)) { + warnStyleValueWithSemicolon(name, value); + } + + if (typeof value === 'number') { + if (isNaN(value)) { + warnStyleValueIsNaN(name, value); + } else if (!isFinite(value)) { + warnStyleValueIsInfinity(name, value); + } + } + }; +} + +var warnValidStyle$1 = warnValidStyle; + +var ariaProperties = { + 'aria-current': 0, + // state + 'aria-details': 0, + 'aria-disabled': 0, + // state + 'aria-hidden': 0, + // state + 'aria-invalid': 0, + // state + 'aria-keyshortcuts': 0, + 'aria-label': 0, + 'aria-roledescription': 0, + // Widget Attributes + 'aria-autocomplete': 0, + 'aria-checked': 0, + 'aria-expanded': 0, + 'aria-haspopup': 0, + 'aria-level': 0, + 'aria-modal': 0, + 'aria-multiline': 0, + 'aria-multiselectable': 0, + 'aria-orientation': 0, + 'aria-placeholder': 0, + 'aria-pressed': 0, + 'aria-readonly': 0, + 'aria-required': 0, + 'aria-selected': 0, + 'aria-sort': 0, + 'aria-valuemax': 0, + 'aria-valuemin': 0, + 'aria-valuenow': 0, + 'aria-valuetext': 0, + // Live Region Attributes + 'aria-atomic': 0, + 'aria-busy': 0, + 'aria-live': 0, + 'aria-relevant': 0, + // Drag-and-Drop Attributes + 'aria-dropeffect': 0, + 'aria-grabbed': 0, + // Relationship Attributes + 'aria-activedescendant': 0, + 'aria-colcount': 0, + 'aria-colindex': 0, + 'aria-colspan': 0, + 'aria-controls': 0, + 'aria-describedby': 0, + 'aria-errormessage': 0, + 'aria-flowto': 0, + 'aria-labelledby': 0, + 'aria-owns': 0, + 'aria-posinset': 0, + 'aria-rowcount': 0, + 'aria-rowindex': 0, + 'aria-rowspan': 0, + 'aria-setsize': 0 +}; + +var warnedProperties = {}; +var rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'); +var rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$'); +var hasOwnProperty$1 = Object.prototype.hasOwnProperty; + +function validateProperty(tagName, name) { + { + if (hasOwnProperty$1.call(warnedProperties, name) && warnedProperties[name]) { + return true; + } + + if (rARIACamel.test(name)) { + var ariaName = 'aria-' + name.slice(4).toLowerCase(); + var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM + // DOM properties, then it is an invalid aria-* attribute. + + if (correctName == null) { + error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name); + + warnedProperties[name] = true; + return true; + } // aria-* attributes should be lowercase; suggest the lowercase version. + + + if (name !== correctName) { + error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName); + + warnedProperties[name] = true; + return true; + } + } + + if (rARIA.test(name)) { + var lowerCasedName = name.toLowerCase(); + var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM + // DOM properties, then it is an invalid aria-* attribute. + + if (standardName == null) { + warnedProperties[name] = true; + return false; + } // aria-* attributes should be lowercase; suggest the lowercase version. + + + if (name !== standardName) { + error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName); + + warnedProperties[name] = true; + return true; + } + } + } + + return true; +} + +function warnInvalidARIAProps(type, props) { + { + var invalidProps = []; + + for (var key in props) { + var isValid = validateProperty(type, key); + + if (!isValid) { + invalidProps.push(key); + } + } + + var unknownPropString = invalidProps.map(function (prop) { + return '`' + prop + '`'; + }).join(', '); + + if (invalidProps.length === 1) { + error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type); + } else if (invalidProps.length > 1) { + error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type); + } + } +} + +function validateProperties(type, props) { + if (isCustomComponent(type, props)) { + return; + } + + warnInvalidARIAProps(type, props); +} + +var didWarnValueNull = false; +function validateProperties$1(type, props) { + { + if (type !== 'input' && type !== 'textarea' && type !== 'select') { + return; + } + + if (props != null && props.value === null && !didWarnValueNull) { + didWarnValueNull = true; + + if (type === 'select' && props.multiple) { + error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type); + } else { + error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type); + } + } + } +} + +// When adding attributes to the HTML or SVG allowed attribute list, be sure to +// also add them to this module to ensure casing and incorrect name +// warnings. +var possibleStandardNames = { + // HTML + accept: 'accept', + acceptcharset: 'acceptCharset', + 'accept-charset': 'acceptCharset', + accesskey: 'accessKey', + action: 'action', + allowfullscreen: 'allowFullScreen', + alt: 'alt', + as: 'as', + async: 'async', + autocapitalize: 'autoCapitalize', + autocomplete: 'autoComplete', + autocorrect: 'autoCorrect', + autofocus: 'autoFocus', + autoplay: 'autoPlay', + autosave: 'autoSave', + capture: 'capture', + cellpadding: 'cellPadding', + cellspacing: 'cellSpacing', + challenge: 'challenge', + charset: 'charSet', + checked: 'checked', + children: 'children', + cite: 'cite', + class: 'className', + classid: 'classID', + classname: 'className', + cols: 'cols', + colspan: 'colSpan', + content: 'content', + contenteditable: 'contentEditable', + contextmenu: 'contextMenu', + controls: 'controls', + controlslist: 'controlsList', + coords: 'coords', + crossorigin: 'crossOrigin', + dangerouslysetinnerhtml: 'dangerouslySetInnerHTML', + data: 'data', + datetime: 'dateTime', + default: 'default', + defaultchecked: 'defaultChecked', + defaultvalue: 'defaultValue', + defer: 'defer', + dir: 'dir', + disabled: 'disabled', + disablepictureinpicture: 'disablePictureInPicture', + disableremoteplayback: 'disableRemotePlayback', + download: 'download', + draggable: 'draggable', + enctype: 'encType', + enterkeyhint: 'enterKeyHint', + for: 'htmlFor', + form: 'form', + formmethod: 'formMethod', + formaction: 'formAction', + formenctype: 'formEncType', + formnovalidate: 'formNoValidate', + formtarget: 'formTarget', + frameborder: 'frameBorder', + headers: 'headers', + height: 'height', + hidden: 'hidden', + high: 'high', + href: 'href', + hreflang: 'hrefLang', + htmlfor: 'htmlFor', + httpequiv: 'httpEquiv', + 'http-equiv': 'httpEquiv', + icon: 'icon', + id: 'id', + innerhtml: 'innerHTML', + inputmode: 'inputMode', + integrity: 'integrity', + is: 'is', + itemid: 'itemID', + itemprop: 'itemProp', + itemref: 'itemRef', + itemscope: 'itemScope', + itemtype: 'itemType', + keyparams: 'keyParams', + keytype: 'keyType', + kind: 'kind', + label: 'label', + lang: 'lang', + list: 'list', + loop: 'loop', + low: 'low', + manifest: 'manifest', + marginwidth: 'marginWidth', + marginheight: 'marginHeight', + max: 'max', + maxlength: 'maxLength', + media: 'media', + mediagroup: 'mediaGroup', + method: 'method', + min: 'min', + minlength: 'minLength', + multiple: 'multiple', + muted: 'muted', + name: 'name', + nomodule: 'noModule', + nonce: 'nonce', + novalidate: 'noValidate', + open: 'open', + optimum: 'optimum', + pattern: 'pattern', + placeholder: 'placeholder', + playsinline: 'playsInline', + poster: 'poster', + preload: 'preload', + profile: 'profile', + radiogroup: 'radioGroup', + readonly: 'readOnly', + referrerpolicy: 'referrerPolicy', + rel: 'rel', + required: 'required', + reversed: 'reversed', + role: 'role', + rows: 'rows', + rowspan: 'rowSpan', + sandbox: 'sandbox', + scope: 'scope', + scoped: 'scoped', + scrolling: 'scrolling', + seamless: 'seamless', + selected: 'selected', + shape: 'shape', + size: 'size', + sizes: 'sizes', + span: 'span', + spellcheck: 'spellCheck', + src: 'src', + srcdoc: 'srcDoc', + srclang: 'srcLang', + srcset: 'srcSet', + start: 'start', + step: 'step', + style: 'style', + summary: 'summary', + tabindex: 'tabIndex', + target: 'target', + title: 'title', + type: 'type', + usemap: 'useMap', + value: 'value', + width: 'width', + wmode: 'wmode', + wrap: 'wrap', + // SVG + about: 'about', + accentheight: 'accentHeight', + 'accent-height': 'accentHeight', + accumulate: 'accumulate', + additive: 'additive', + alignmentbaseline: 'alignmentBaseline', + 'alignment-baseline': 'alignmentBaseline', + allowreorder: 'allowReorder', + alphabetic: 'alphabetic', + amplitude: 'amplitude', + arabicform: 'arabicForm', + 'arabic-form': 'arabicForm', + ascent: 'ascent', + attributename: 'attributeName', + attributetype: 'attributeType', + autoreverse: 'autoReverse', + azimuth: 'azimuth', + basefrequency: 'baseFrequency', + baselineshift: 'baselineShift', + 'baseline-shift': 'baselineShift', + baseprofile: 'baseProfile', + bbox: 'bbox', + begin: 'begin', + bias: 'bias', + by: 'by', + calcmode: 'calcMode', + capheight: 'capHeight', + 'cap-height': 'capHeight', + clip: 'clip', + clippath: 'clipPath', + 'clip-path': 'clipPath', + clippathunits: 'clipPathUnits', + cliprule: 'clipRule', + 'clip-rule': 'clipRule', + color: 'color', + colorinterpolation: 'colorInterpolation', + 'color-interpolation': 'colorInterpolation', + colorinterpolationfilters: 'colorInterpolationFilters', + 'color-interpolation-filters': 'colorInterpolationFilters', + colorprofile: 'colorProfile', + 'color-profile': 'colorProfile', + colorrendering: 'colorRendering', + 'color-rendering': 'colorRendering', + contentscripttype: 'contentScriptType', + contentstyletype: 'contentStyleType', + cursor: 'cursor', + cx: 'cx', + cy: 'cy', + d: 'd', + datatype: 'datatype', + decelerate: 'decelerate', + descent: 'descent', + diffuseconstant: 'diffuseConstant', + direction: 'direction', + display: 'display', + divisor: 'divisor', + dominantbaseline: 'dominantBaseline', + 'dominant-baseline': 'dominantBaseline', + dur: 'dur', + dx: 'dx', + dy: 'dy', + edgemode: 'edgeMode', + elevation: 'elevation', + enablebackground: 'enableBackground', + 'enable-background': 'enableBackground', + end: 'end', + exponent: 'exponent', + externalresourcesrequired: 'externalResourcesRequired', + fill: 'fill', + fillopacity: 'fillOpacity', + 'fill-opacity': 'fillOpacity', + fillrule: 'fillRule', + 'fill-rule': 'fillRule', + filter: 'filter', + filterres: 'filterRes', + filterunits: 'filterUnits', + floodopacity: 'floodOpacity', + 'flood-opacity': 'floodOpacity', + floodcolor: 'floodColor', + 'flood-color': 'floodColor', + focusable: 'focusable', + fontfamily: 'fontFamily', + 'font-family': 'fontFamily', + fontsize: 'fontSize', + 'font-size': 'fontSize', + fontsizeadjust: 'fontSizeAdjust', + 'font-size-adjust': 'fontSizeAdjust', + fontstretch: 'fontStretch', + 'font-stretch': 'fontStretch', + fontstyle: 'fontStyle', + 'font-style': 'fontStyle', + fontvariant: 'fontVariant', + 'font-variant': 'fontVariant', + fontweight: 'fontWeight', + 'font-weight': 'fontWeight', + format: 'format', + from: 'from', + fx: 'fx', + fy: 'fy', + g1: 'g1', + g2: 'g2', + glyphname: 'glyphName', + 'glyph-name': 'glyphName', + glyphorientationhorizontal: 'glyphOrientationHorizontal', + 'glyph-orientation-horizontal': 'glyphOrientationHorizontal', + glyphorientationvertical: 'glyphOrientationVertical', + 'glyph-orientation-vertical': 'glyphOrientationVertical', + glyphref: 'glyphRef', + gradienttransform: 'gradientTransform', + gradientunits: 'gradientUnits', + hanging: 'hanging', + horizadvx: 'horizAdvX', + 'horiz-adv-x': 'horizAdvX', + horizoriginx: 'horizOriginX', + 'horiz-origin-x': 'horizOriginX', + ideographic: 'ideographic', + imagerendering: 'imageRendering', + 'image-rendering': 'imageRendering', + in2: 'in2', + in: 'in', + inlist: 'inlist', + intercept: 'intercept', + k1: 'k1', + k2: 'k2', + k3: 'k3', + k4: 'k4', + k: 'k', + kernelmatrix: 'kernelMatrix', + kernelunitlength: 'kernelUnitLength', + kerning: 'kerning', + keypoints: 'keyPoints', + keysplines: 'keySplines', + keytimes: 'keyTimes', + lengthadjust: 'lengthAdjust', + letterspacing: 'letterSpacing', + 'letter-spacing': 'letterSpacing', + lightingcolor: 'lightingColor', + 'lighting-color': 'lightingColor', + limitingconeangle: 'limitingConeAngle', + local: 'local', + markerend: 'markerEnd', + 'marker-end': 'markerEnd', + markerheight: 'markerHeight', + markermid: 'markerMid', + 'marker-mid': 'markerMid', + markerstart: 'markerStart', + 'marker-start': 'markerStart', + markerunits: 'markerUnits', + markerwidth: 'markerWidth', + mask: 'mask', + maskcontentunits: 'maskContentUnits', + maskunits: 'maskUnits', + mathematical: 'mathematical', + mode: 'mode', + numoctaves: 'numOctaves', + offset: 'offset', + opacity: 'opacity', + operator: 'operator', + order: 'order', + orient: 'orient', + orientation: 'orientation', + origin: 'origin', + overflow: 'overflow', + overlineposition: 'overlinePosition', + 'overline-position': 'overlinePosition', + overlinethickness: 'overlineThickness', + 'overline-thickness': 'overlineThickness', + paintorder: 'paintOrder', + 'paint-order': 'paintOrder', + panose1: 'panose1', + 'panose-1': 'panose1', + pathlength: 'pathLength', + patterncontentunits: 'patternContentUnits', + patterntransform: 'patternTransform', + patternunits: 'patternUnits', + pointerevents: 'pointerEvents', + 'pointer-events': 'pointerEvents', + points: 'points', + pointsatx: 'pointsAtX', + pointsaty: 'pointsAtY', + pointsatz: 'pointsAtZ', + prefix: 'prefix', + preservealpha: 'preserveAlpha', + preserveaspectratio: 'preserveAspectRatio', + primitiveunits: 'primitiveUnits', + property: 'property', + r: 'r', + radius: 'radius', + refx: 'refX', + refy: 'refY', + renderingintent: 'renderingIntent', + 'rendering-intent': 'renderingIntent', + repeatcount: 'repeatCount', + repeatdur: 'repeatDur', + requiredextensions: 'requiredExtensions', + requiredfeatures: 'requiredFeatures', + resource: 'resource', + restart: 'restart', + result: 'result', + results: 'results', + rotate: 'rotate', + rx: 'rx', + ry: 'ry', + scale: 'scale', + security: 'security', + seed: 'seed', + shaperendering: 'shapeRendering', + 'shape-rendering': 'shapeRendering', + slope: 'slope', + spacing: 'spacing', + specularconstant: 'specularConstant', + specularexponent: 'specularExponent', + speed: 'speed', + spreadmethod: 'spreadMethod', + startoffset: 'startOffset', + stddeviation: 'stdDeviation', + stemh: 'stemh', + stemv: 'stemv', + stitchtiles: 'stitchTiles', + stopcolor: 'stopColor', + 'stop-color': 'stopColor', + stopopacity: 'stopOpacity', + 'stop-opacity': 'stopOpacity', + strikethroughposition: 'strikethroughPosition', + 'strikethrough-position': 'strikethroughPosition', + strikethroughthickness: 'strikethroughThickness', + 'strikethrough-thickness': 'strikethroughThickness', + string: 'string', + stroke: 'stroke', + strokedasharray: 'strokeDasharray', + 'stroke-dasharray': 'strokeDasharray', + strokedashoffset: 'strokeDashoffset', + 'stroke-dashoffset': 'strokeDashoffset', + strokelinecap: 'strokeLinecap', + 'stroke-linecap': 'strokeLinecap', + strokelinejoin: 'strokeLinejoin', + 'stroke-linejoin': 'strokeLinejoin', + strokemiterlimit: 'strokeMiterlimit', + 'stroke-miterlimit': 'strokeMiterlimit', + strokewidth: 'strokeWidth', + 'stroke-width': 'strokeWidth', + strokeopacity: 'strokeOpacity', + 'stroke-opacity': 'strokeOpacity', + suppresscontenteditablewarning: 'suppressContentEditableWarning', + suppresshydrationwarning: 'suppressHydrationWarning', + surfacescale: 'surfaceScale', + systemlanguage: 'systemLanguage', + tablevalues: 'tableValues', + targetx: 'targetX', + targety: 'targetY', + textanchor: 'textAnchor', + 'text-anchor': 'textAnchor', + textdecoration: 'textDecoration', + 'text-decoration': 'textDecoration', + textlength: 'textLength', + textrendering: 'textRendering', + 'text-rendering': 'textRendering', + to: 'to', + transform: 'transform', + typeof: 'typeof', + u1: 'u1', + u2: 'u2', + underlineposition: 'underlinePosition', + 'underline-position': 'underlinePosition', + underlinethickness: 'underlineThickness', + 'underline-thickness': 'underlineThickness', + unicode: 'unicode', + unicodebidi: 'unicodeBidi', + 'unicode-bidi': 'unicodeBidi', + unicoderange: 'unicodeRange', + 'unicode-range': 'unicodeRange', + unitsperem: 'unitsPerEm', + 'units-per-em': 'unitsPerEm', + unselectable: 'unselectable', + valphabetic: 'vAlphabetic', + 'v-alphabetic': 'vAlphabetic', + values: 'values', + vectoreffect: 'vectorEffect', + 'vector-effect': 'vectorEffect', + version: 'version', + vertadvy: 'vertAdvY', + 'vert-adv-y': 'vertAdvY', + vertoriginx: 'vertOriginX', + 'vert-origin-x': 'vertOriginX', + vertoriginy: 'vertOriginY', + 'vert-origin-y': 'vertOriginY', + vhanging: 'vHanging', + 'v-hanging': 'vHanging', + videographic: 'vIdeographic', + 'v-ideographic': 'vIdeographic', + viewbox: 'viewBox', + viewtarget: 'viewTarget', + visibility: 'visibility', + vmathematical: 'vMathematical', + 'v-mathematical': 'vMathematical', + vocab: 'vocab', + widths: 'widths', + wordspacing: 'wordSpacing', + 'word-spacing': 'wordSpacing', + writingmode: 'writingMode', + 'writing-mode': 'writingMode', + x1: 'x1', + x2: 'x2', + x: 'x', + xchannelselector: 'xChannelSelector', + xheight: 'xHeight', + 'x-height': 'xHeight', + xlinkactuate: 'xlinkActuate', + 'xlink:actuate': 'xlinkActuate', + xlinkarcrole: 'xlinkArcrole', + 'xlink:arcrole': 'xlinkArcrole', + xlinkhref: 'xlinkHref', + 'xlink:href': 'xlinkHref', + xlinkrole: 'xlinkRole', + 'xlink:role': 'xlinkRole', + xlinkshow: 'xlinkShow', + 'xlink:show': 'xlinkShow', + xlinktitle: 'xlinkTitle', + 'xlink:title': 'xlinkTitle', + xlinktype: 'xlinkType', + 'xlink:type': 'xlinkType', + xmlbase: 'xmlBase', + 'xml:base': 'xmlBase', + xmllang: 'xmlLang', + 'xml:lang': 'xmlLang', + xmlns: 'xmlns', + 'xml:space': 'xmlSpace', + xmlnsxlink: 'xmlnsXlink', + 'xmlns:xlink': 'xmlnsXlink', + xmlspace: 'xmlSpace', + y1: 'y1', + y2: 'y2', + y: 'y', + ychannelselector: 'yChannelSelector', + z: 'z', + zoomandpan: 'zoomAndPan' +}; + +var validateProperty$1 = function () {}; + +{ + var warnedProperties$1 = {}; + var _hasOwnProperty = Object.prototype.hasOwnProperty; + var EVENT_NAME_REGEX = /^on./; + var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/; + var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'); + var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$'); + + validateProperty$1 = function (tagName, name, value, eventRegistry) { + if (_hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) { + return true; + } + + var lowerCasedName = name.toLowerCase(); + + if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') { + error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.'); + + warnedProperties$1[name] = true; + return true; + } // We can't rely on the event system being injected on the server. + + + if (eventRegistry != null) { + var registrationNameDependencies = eventRegistry.registrationNameDependencies, + possibleRegistrationNames = eventRegistry.possibleRegistrationNames; + + if (registrationNameDependencies.hasOwnProperty(name)) { + return true; + } + + var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null; + + if (registrationName != null) { + error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName); + + warnedProperties$1[name] = true; + return true; + } + + if (EVENT_NAME_REGEX.test(name)) { + error('Unknown event handler property `%s`. It will be ignored.', name); + + warnedProperties$1[name] = true; + return true; + } + } else if (EVENT_NAME_REGEX.test(name)) { + // If no event plugins have been injected, we are in a server environment. + // So we can't tell if the event name is correct for sure, but we can filter + // out known bad ones like `onclick`. We can't suggest a specific replacement though. + if (INVALID_EVENT_NAME_REGEX.test(name)) { + error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name); + } + + warnedProperties$1[name] = true; + return true; + } // Let the ARIA attribute hook validate ARIA attributes + + + if (rARIA$1.test(name) || rARIACamel$1.test(name)) { + return true; + } + + if (lowerCasedName === 'innerhtml') { + error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.'); + + warnedProperties$1[name] = true; + return true; + } + + if (lowerCasedName === 'aria') { + error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.'); + + warnedProperties$1[name] = true; + return true; + } + + if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') { + error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value); + + warnedProperties$1[name] = true; + return true; + } + + if (typeof value === 'number' && isNaN(value)) { + error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name); + + warnedProperties$1[name] = true; + return true; + } + + var propertyInfo = getPropertyInfo(name); + var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config. + + if (possibleStandardNames.hasOwnProperty(lowerCasedName)) { + var standardName = possibleStandardNames[lowerCasedName]; + + if (standardName !== name) { + error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName); + + warnedProperties$1[name] = true; + return true; + } + } else if (!isReserved && name !== lowerCasedName) { + // Unknown attributes should have lowercase casing since that's how they + // will be cased anyway with server rendering. + error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName); + + warnedProperties$1[name] = true; + return true; + } + + if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) { + if (value) { + error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.', value, name, name, value, name); + } else { + error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name); + } + + warnedProperties$1[name] = true; + return true; + } // Now that we've validated casing, do not validate + // data types for reserved props + + + if (isReserved) { + return true; + } // Warn when a known attribute is a bad type + + + if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) { + warnedProperties$1[name] = true; + return false; + } // Warn when passing the strings 'false' or 'true' into a boolean prop + + + if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) { + error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string "false".', name, value); + + warnedProperties$1[name] = true; + return true; + } + + return true; + }; +} + +var warnUnknownProperties = function (type, props, eventRegistry) { + { + var unknownProps = []; + + for (var key in props) { + var isValid = validateProperty$1(type, key, props[key], eventRegistry); + + if (!isValid) { + unknownProps.push(key); + } + } + + var unknownPropString = unknownProps.map(function (prop) { + return '`' + prop + '`'; + }).join(', '); + + if (unknownProps.length === 1) { + error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type); + } else if (unknownProps.length > 1) { + error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type); + } + } +}; + +function validateProperties$2(type, props, eventRegistry) { + if (isCustomComponent(type, props)) { + return; + } + + warnUnknownProperties(type, props, eventRegistry); +} + +var toArray = React.Children.toArray; // This is only used in DEV. +// Each entry is `this.stack` from a currently executing renderer instance. +// (There may be more than one because ReactDOMServer is reentrant). +// Each stack is an array of frames which may contain nested stacks of elements. + +var currentDebugStacks = []; +var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher; +var ReactDebugCurrentFrame$1; +var prevGetCurrentStackImpl = null; + +var getCurrentServerStackImpl = function () { + return ''; +}; + +var describeStackFrame = function (element) { + return ''; +}; + +var validatePropertiesInDevelopment = function (type, props) {}; + +var pushCurrentDebugStack = function (stack) {}; + +var pushElementToDebugStack = function (element) {}; + +var popCurrentDebugStack = function () {}; + +var hasWarnedAboutUsingContextAsConsumer = false; + +{ + ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; + + validatePropertiesInDevelopment = function (type, props) { + validateProperties(type, props); + validateProperties$1(type, props); + validateProperties$2(type, props, null); + }; + + describeStackFrame = function (element) { + return describeUnknownElementTypeFrameInDEV(element.type, element._source, null); + }; + + pushCurrentDebugStack = function (stack) { + currentDebugStacks.push(stack); + + if (currentDebugStacks.length === 1) { + // We are entering a server renderer. + // Remember the previous (e.g. client) global stack implementation. + prevGetCurrentStackImpl = ReactDebugCurrentFrame$1.getCurrentStack; + ReactDebugCurrentFrame$1.getCurrentStack = getCurrentServerStackImpl; + } + }; + + pushElementToDebugStack = function (element) { + // For the innermost executing ReactDOMServer call, + var stack = currentDebugStacks[currentDebugStacks.length - 1]; // Take the innermost executing frame (e.g. ), + + var frame = stack[stack.length - 1]; // and record that it has one more element associated with it. + + frame.debugElementStack.push(element); // We only need this because we tail-optimize single-element + // children and directly handle them in an inner loop instead of + // creating separate frames for them. + }; + + popCurrentDebugStack = function () { + currentDebugStacks.pop(); + + if (currentDebugStacks.length === 0) { + // We are exiting the server renderer. + // Restore the previous (e.g. client) global stack implementation. + ReactDebugCurrentFrame$1.getCurrentStack = prevGetCurrentStackImpl; + prevGetCurrentStackImpl = null; + } + }; + + getCurrentServerStackImpl = function () { + if (currentDebugStacks.length === 0) { + // Nothing is currently rendering. + return ''; + } // ReactDOMServer is reentrant so there may be multiple calls at the same time. + // Take the frames from the innermost call which is the last in the array. + + + var frames = currentDebugStacks[currentDebugStacks.length - 1]; + var stack = ''; // Go through every frame in the stack from the innermost one. + + for (var i = frames.length - 1; i >= 0; i--) { + var frame = frames[i]; // Every frame might have more than one debug element stack entry associated with it. + // This is because single-child nesting doesn't create materialized frames. + // Instead it would push them through `pushElementToDebugStack()`. + + var debugElementStack = frame.debugElementStack; + + for (var ii = debugElementStack.length - 1; ii >= 0; ii--) { + stack += describeStackFrame(debugElementStack[ii]); + } + } + + return stack; + }; +} + +var didWarnDefaultInputValue = false; +var didWarnDefaultChecked = false; +var didWarnDefaultSelectValue = false; +var didWarnDefaultTextareaValue = false; +var didWarnInvalidOptionChildren = false; +var didWarnAboutNoopUpdateForComponent = {}; +var didWarnAboutBadClass = {}; +var didWarnAboutModulePatternComponent = {}; +var didWarnAboutDeprecatedWillMount = {}; +var didWarnAboutUndefinedDerivedState = {}; +var didWarnAboutUninitializedState = {}; +var valuePropNames = ['value', 'defaultValue']; +var newlineEatingTags = { + listing: true, + pre: true, + textarea: true +}; // We accept any tag to be rendered but since this gets injected into arbitrary +// HTML, we want to make sure that it's a safe tag. +// http://www.w3.org/TR/REC-xml/#NT-Name + +var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/; // Simplified subset + +var validatedTagCache = {}; + +function validateDangerousTag(tag) { + if (!validatedTagCache.hasOwnProperty(tag)) { + if (!VALID_TAG_REGEX.test(tag)) { + { + throw Error( "Invalid tag: " + tag ); + } + } + + validatedTagCache[tag] = true; + } +} + +var styleNameCache = {}; + +var processStyleName = function (styleName) { + if (styleNameCache.hasOwnProperty(styleName)) { + return styleNameCache[styleName]; + } + + var result = hyphenateStyleName(styleName); + styleNameCache[styleName] = result; + return result; +}; + +function createMarkupForStyles(styles) { + var serialized = ''; + var delimiter = ''; + + for (var styleName in styles) { + if (!styles.hasOwnProperty(styleName)) { + continue; + } + + var isCustomProperty = styleName.indexOf('--') === 0; + var styleValue = styles[styleName]; + + { + if (!isCustomProperty) { + warnValidStyle$1(styleName, styleValue); + } + } + + if (styleValue != null) { + serialized += delimiter + (isCustomProperty ? styleName : processStyleName(styleName)) + ':'; + serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty); + delimiter = ';'; + } + } + + return serialized || null; +} + +function warnNoop(publicInstance, callerName) { + { + var _constructor = publicInstance.constructor; + var componentName = _constructor && getComponentName(_constructor) || 'ReactClass'; + var warningKey = componentName + '.' + callerName; + + if (didWarnAboutNoopUpdateForComponent[warningKey]) { + return; + } + + error('%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op.\n\nPlease check the code for the %s component.', callerName, callerName, componentName); + + didWarnAboutNoopUpdateForComponent[warningKey] = true; + } +} + +function shouldConstruct$1(Component) { + return Component.prototype && Component.prototype.isReactComponent; +} + +function getNonChildrenInnerMarkup(props) { + var innerHTML = props.dangerouslySetInnerHTML; + + if (innerHTML != null) { + if (innerHTML.__html != null) { + return innerHTML.__html; + } + } else { + var content = props.children; + + if (typeof content === 'string' || typeof content === 'number') { + return escapeTextForBrowser(content); + } + } + + return null; +} + +function flattenTopLevelChildren(children) { + if (!React.isValidElement(children)) { + return toArray(children); + } + + var element = children; + + if (element.type !== REACT_FRAGMENT_TYPE) { + return [element]; + } + + var fragmentChildren = element.props.children; + + if (!React.isValidElement(fragmentChildren)) { + return toArray(fragmentChildren); + } + + var fragmentChildElement = fragmentChildren; + return [fragmentChildElement]; +} + +function flattenOptionChildren(children) { + if (children === undefined || children === null) { + return children; + } + + var content = ''; // Flatten children and warn if they aren't strings or numbers; + // invalid types are ignored. + + React.Children.forEach(children, function (child) { + if (child == null) { + return; + } + + content += child; + + { + if (!didWarnInvalidOptionChildren && typeof child !== 'string' && typeof child !== 'number') { + didWarnInvalidOptionChildren = true; + + error('Only strings and numbers are supported as
+
+ logo +

+ Edit src/App.js and save to reload. +

+
+ Learn React + +
+