feat: proposed cache WIP ?
moved the countdown section
This commit is contained in:
parent
e6383d64c8
commit
15164c6aa1
7 changed files with 145 additions and 28 deletions
|
@ -16,6 +16,8 @@ ADMIN_EMAIL=spamfree@matthieubessat.fr
|
||||||
|
|
||||||
REDIS_HOST=localhost
|
REDIS_HOST=localhost
|
||||||
REDIS_PORT=6379
|
REDIS_PORT=6379
|
||||||
|
REDIS_PASSWORD=root
|
||||||
|
REDIS_PREFIX=cond_ass
|
||||||
|
|
||||||
BASE_URL=http://srv.espacecondorcet.org:8001
|
BASE_URL=http://srv.espacecondorcet.org:8001
|
||||||
WEB_UI_URL=http://localhost:8080
|
WEB_UI_URL=http://localhost:8080
|
||||||
|
|
|
@ -8,7 +8,9 @@ const secondsContainer = document.getElementById('seconds')
|
||||||
|
|
||||||
let shown = false
|
let shown = false
|
||||||
|
|
||||||
const enableReload = window.location.pathname.indexOf('c') === -1
|
//const enableReload = window.location.pathname.indexOf('c') === -1
|
||||||
|
|
||||||
|
enableReload = true
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
let current = new Date()
|
let current = new Date()
|
||||||
|
@ -30,7 +32,8 @@ function render() {
|
||||||
seconds = (String(seconds).length >= 2) ? seconds : '0' + seconds
|
seconds = (String(seconds).length >= 2) ? seconds : '0' + seconds
|
||||||
|
|
||||||
if (openDate <= current && enableReload) {
|
if (openDate <= current && enableReload) {
|
||||||
window.location.reload(false)
|
console.log('FINISHED!')
|
||||||
|
window.location = '/'
|
||||||
} else {
|
} else {
|
||||||
daysContainer.textContent = days
|
daysContainer.textContent = days
|
||||||
hoursContainer.textContent = hours
|
hoursContainer.textContent = hours
|
||||||
|
|
|
@ -5,7 +5,9 @@
|
||||||
"@fortawesome/free-regular-svg-icons": "^5.13.1",
|
"@fortawesome/free-regular-svg-icons": "^5.13.1",
|
||||||
"@fortawesome/free-solid-svg-icons": "^5.13.1",
|
"@fortawesome/free-solid-svg-icons": "^5.13.1",
|
||||||
"@types/cors": "^2.8.6",
|
"@types/cors": "^2.8.6",
|
||||||
|
"@types/events": "^3.0.0",
|
||||||
"@types/express": "^4.17.6",
|
"@types/express": "^4.17.6",
|
||||||
|
"@types/express-redis-cache": "^1.1.0",
|
||||||
"@types/html-to-text": "^5.1.1",
|
"@types/html-to-text": "^5.1.1",
|
||||||
"@types/http-proxy-middleware": "^0.19.3",
|
"@types/http-proxy-middleware": "^0.19.3",
|
||||||
"@types/ioredis": "^4.17.0",
|
"@types/ioredis": "^4.17.0",
|
||||||
|
@ -27,6 +29,7 @@
|
||||||
"crypto-random-string": "^3.2.0",
|
"crypto-random-string": "^3.2.0",
|
||||||
"dotenv": "^8.2.0",
|
"dotenv": "^8.2.0",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
|
"express-redis-cache": "^1.1.3",
|
||||||
"html-to-text": "^5.1.1",
|
"html-to-text": "^5.1.1",
|
||||||
"http-proxy-middleware": "^1.0.5",
|
"http-proxy-middleware": "^1.0.5",
|
||||||
"ioredis": "^4.17.3",
|
"ioredis": "^4.17.3",
|
||||||
|
|
55
src/app.ts
55
src/app.ts
|
@ -16,6 +16,8 @@ import twig from 'twig'
|
||||||
import EmailService from './EmailService'
|
import EmailService from './EmailService'
|
||||||
import ErrorController from './controllers/ErrorController'
|
import ErrorController from './controllers/ErrorController'
|
||||||
import { createProxyMiddleware, Filter, Options, RequestHandler } from 'http-proxy-middleware';
|
import { createProxyMiddleware, Filter, Options, RequestHandler } from 'http-proxy-middleware';
|
||||||
|
import ExpressRedisCache from 'express-redis-cache'
|
||||||
|
import Utils from './Utils'
|
||||||
|
|
||||||
process.env.TZ = "Europe/Paris"
|
process.env.TZ = "Europe/Paris"
|
||||||
|
|
||||||
|
@ -37,6 +39,24 @@ if (process.env.DISABLE_TWIG_CACHE === 'true') {
|
||||||
twig.cache(false)
|
twig.cache(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const cache = ExpressRedisCache({
|
||||||
|
host: process.env.REDIS_HOST,
|
||||||
|
port: process.env.REDIS_PORT,
|
||||||
|
auth_pass: process.env.REDIS_PASSWORD,
|
||||||
|
prefix: process.env.REDIS_PREFIX
|
||||||
|
})
|
||||||
|
|
||||||
|
const cacheDuration = {
|
||||||
|
home: 3600 * 0.75,
|
||||||
|
countdown: 3600 * 2,
|
||||||
|
page: 3600 * 6
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset cache
|
||||||
|
cache.del('*', (err, deleted) => {
|
||||||
|
console.log('> App: Reset cache', err, deleted)
|
||||||
|
})
|
||||||
|
|
||||||
let main = async () => {
|
let main = async () => {
|
||||||
EmailService.init()
|
EmailService.init()
|
||||||
|
|
||||||
|
@ -54,16 +74,43 @@ let main = async () => {
|
||||||
console.log('> App: Connected to mongodb')
|
console.log('> App: Connected to mongodb')
|
||||||
})
|
})
|
||||||
|
|
||||||
app.set("twig options", {
|
app.set('twig options', {
|
||||||
allow_async: true,
|
allow_async: true,
|
||||||
strict_variables: false
|
strict_variables: false
|
||||||
})
|
})
|
||||||
|
app.set('cache', cache)
|
||||||
|
|
||||||
app.use(cors())
|
app.use(cors())
|
||||||
app.use(bodyParser.json())
|
app.use(bodyParser.json())
|
||||||
|
|
||||||
app.get('/', PublicController.home)
|
app.get(
|
||||||
app.get('/c', PublicController.countdown)
|
'/',
|
||||||
app.get('/association/:slug', PublicController.organization)
|
(req, res, next) => {
|
||||||
|
if (process.env.OPEN_DATE == null) {
|
||||||
|
next()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// redirect to countdown if needed
|
||||||
|
let isProposed = Utils.isStrUsable(req.query, 'only')
|
||||||
|
let byPass = req.query.bypass != null
|
||||||
|
let target: any = new Date(process.env.OPEN_DATE)
|
||||||
|
let now: any = new Date()
|
||||||
|
if (!byPass && !isProposed && target > now) {
|
||||||
|
return res.redirect('/c')
|
||||||
|
} else {
|
||||||
|
next()
|
||||||
|
}
|
||||||
|
|
||||||
|
let withId = req.query.only != null
|
||||||
|
if (byPass || withId) {
|
||||||
|
res.use_express_redis_cache = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
cache.route('/home', cacheDuration.home),
|
||||||
|
PublicController.home
|
||||||
|
)
|
||||||
|
app.get('/c', cache.route('/c', cacheDuration.countdown), PublicController.countdown)
|
||||||
|
app.get('/association/:slug', cache.route(cacheDuration.page), PublicController.organization)
|
||||||
app.get('/a-propos', PublicController.about)
|
app.get('/a-propos', PublicController.about)
|
||||||
app.get('/mentions-legales', PublicController.legals)
|
app.get('/mentions-legales', PublicController.legals)
|
||||||
|
|
||||||
|
|
|
@ -325,7 +325,23 @@ export default class AdminOrganizationController {
|
||||||
link: EmailService.getBaseUrl() + '/association/' + extra.slugs[extra.slugs.length - 1]
|
link: EmailService.getBaseUrl() + '/association/' + extra.slugs[extra.slugs.length - 1]
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
res.json({ success: true, data: updateData })
|
|
||||||
|
// finally, reset cache of version public and proposed of ALL the slug
|
||||||
|
// reset the cache of the home page because it is very important also.
|
||||||
|
const cache = req.app.get('cache')
|
||||||
|
let proposed = extra.slugs.map((slug: any) => slug + '?version=proposed')
|
||||||
|
extra.slugs.concat(proposed).forEach((elem: any) => {
|
||||||
|
console.log('Reset page', '/association/' + elem)
|
||||||
|
cache.del('/association/' + elem, (err: any, deleted: any) => {
|
||||||
|
console.log('> App: Reset cache of public page', err, deleted)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
cache.del('/home', (err: any, deleted: any) => {
|
||||||
|
console.log('> App: Reset cache of public home', err, deleted)
|
||||||
|
})
|
||||||
|
|
||||||
|
res
|
||||||
|
.json({ success: true, data: updateData })
|
||||||
}).catch(err => res.status(400).json({ success: false, errors: err.errors !== undefined ? err.errors : err }))
|
}).catch(err => res.status(400).json({ success: false, errors: err.errors !== undefined ? err.errors : err }))
|
||||||
}).catch(err => res.status(400).json({ success: false, errors: err }))
|
}).catch(err => res.status(400).json({ success: false, errors: err }))
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,14 +23,6 @@ export default class PublicController {
|
||||||
|
|
||||||
static async home(req: express.Request, res: express.Response) {
|
static async home(req: express.Request, res: express.Response) {
|
||||||
let isProposed = Utils.isStrUsable(req.query, 'only')
|
let isProposed = Utils.isStrUsable(req.query, 'only')
|
||||||
let byPass = req.query.bypass != null
|
|
||||||
let target: any = new Date(process.env.OPEN_DATE == null ? '01/01/1970 00:00' : process.env.OPEN_DATE)
|
|
||||||
let now: any = new Date()
|
|
||||||
if (!byPass && !isProposed && target > now) {
|
|
||||||
return res.render('countdown.twig', {
|
|
||||||
openDate: process.env.OPEN_DATE
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// let client: IORedis.Redis = RedisService.getClient()
|
// let client: IORedis.Redis = RedisService.getClient()
|
||||||
// await client.set('hello', 'world')
|
// await client.set('hello', 'world')
|
||||||
// res.json({
|
// res.json({
|
||||||
|
|
80
yarn.lock
80
yarn.lock
|
@ -601,6 +601,20 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/express" "*"
|
"@types/express" "*"
|
||||||
|
|
||||||
|
"@types/events@*", "@types/events@^3.0.0":
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
|
||||||
|
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
|
||||||
|
|
||||||
|
"@types/express-redis-cache@^1.1.0":
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/express-redis-cache/-/express-redis-cache-1.1.0.tgz#b0b0742c56c1de2672ad6873e8074a6c930afe0d"
|
||||||
|
integrity sha512-t9LUb5xd1EpdoyMIBk6IPgvWWIqRnGOpO9NS9qVyBHdhqRjEzSj4Z9hdrOUAkMFpG1mCOxjhPmS5zOuqUsNuhQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/events" "*"
|
||||||
|
"@types/express" "*"
|
||||||
|
"@types/redis" "*"
|
||||||
|
|
||||||
"@types/express-serve-static-core@*":
|
"@types/express-serve-static-core@*":
|
||||||
version "4.17.9"
|
version "4.17.9"
|
||||||
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz#2d7b34dcfd25ec663c25c85d76608f8b249667f1"
|
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz#2d7b34dcfd25ec663c25c85d76608f8b249667f1"
|
||||||
|
@ -762,13 +776,6 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
|
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
|
||||||
integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
|
integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
|
||||||
|
|
||||||
"@types/normalize-url@^4.2.0":
|
|
||||||
version "4.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/normalize-url/-/normalize-url-4.2.0.tgz#b72486d1d87e70b2b94bd34d9300fe41c736f788"
|
|
||||||
integrity sha512-lMD7+DEzeaAWiJzVzlFJHWCRi/SConK0T/dMxIUYw+r0Et0xNo5yN9b0wa8NUgqECJfAbPYneecqDxQNyhTHnA==
|
|
||||||
dependencies:
|
|
||||||
normalize-url "*"
|
|
||||||
|
|
||||||
"@types/papaparse@^5.0.6":
|
"@types/papaparse@^5.0.6":
|
||||||
version "5.0.6"
|
version "5.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.0.6.tgz#4fee1a17dc24fed839d276c807f875bd653abbb4"
|
resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.0.6.tgz#4fee1a17dc24fed839d276c807f875bd653abbb4"
|
||||||
|
@ -791,6 +798,13 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
|
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
|
||||||
integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
|
integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
|
||||||
|
|
||||||
|
"@types/redis@*":
|
||||||
|
version "2.8.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/redis/-/redis-2.8.27.tgz#9bc89b472f3fc4a57a06c1823f2fc860c6c2fdf3"
|
||||||
|
integrity sha512-RRHarqPp3mgqHz+qzLVuQCJAIVaB3JBaczoj24QVVYu08wiCmB8vbOeNeK9lIH+pyT7+R/bbEPghAZZuhbZm0g==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/sanitize-html@^1.23.3":
|
"@types/sanitize-html@^1.23.3":
|
||||||
version "1.23.3"
|
version "1.23.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-1.23.3.tgz#26527783aba3bf195ad8a3c3e51bd3713526fc0d"
|
resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-1.23.3.tgz#26527783aba3bf195ad8a3c3e51bd3713526fc0d"
|
||||||
|
@ -1146,6 +1160,13 @@ async-settle@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
async-done "^1.2.2"
|
async-done "^1.2.2"
|
||||||
|
|
||||||
|
async@^2.6.1:
|
||||||
|
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:
|
asynckit@^0.4.0:
|
||||||
version "0.4.0"
|
version "0.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||||
|
@ -1742,6 +1763,11 @@ color@^3.1.2:
|
||||||
color-convert "^1.9.1"
|
color-convert "^1.9.1"
|
||||||
color-string "^1.5.2"
|
color-string "^1.5.2"
|
||||||
|
|
||||||
|
colors@^1.3.0:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
|
||||||
|
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
|
||||||
|
|
||||||
combined-stream@^1.0.6, combined-stream@~1.0.6:
|
combined-stream@^1.0.6, combined-stream@~1.0.6:
|
||||||
version "1.0.8"
|
version "1.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
||||||
|
@ -2184,6 +2210,11 @@ dotenv@^8.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
|
||||||
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
|
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
|
||||||
|
|
||||||
|
double-ended-queue@^2.1.0-0:
|
||||||
|
version "2.1.0-0"
|
||||||
|
resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c"
|
||||||
|
integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=
|
||||||
|
|
||||||
duplexer3@^0.1.4:
|
duplexer3@^0.1.4:
|
||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
|
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
|
||||||
|
@ -2442,6 +2473,15 @@ expect@^26.4.2:
|
||||||
jest-message-util "^26.3.0"
|
jest-message-util "^26.3.0"
|
||||||
jest-regex-util "^26.0.0"
|
jest-regex-util "^26.0.0"
|
||||||
|
|
||||||
|
express-redis-cache@^1.1.3:
|
||||||
|
version "1.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/express-redis-cache/-/express-redis-cache-1.1.3.tgz#93eb6b09df1ff74a14a7f6caccb5d0d975010c62"
|
||||||
|
integrity sha512-7e9SwwGIv+bH0uc0Sy3KPCyYEGoGpwaBro+cLU8hVln1YbQIWoW8fOyv6/JRdaUmaBqATftdqm75OAIaBLmnjg==
|
||||||
|
dependencies:
|
||||||
|
async "^2.6.1"
|
||||||
|
colors "^1.3.0"
|
||||||
|
redis "^2.4.2"
|
||||||
|
|
||||||
express@^4.17.1:
|
express@^4.17.1:
|
||||||
version "4.17.1"
|
version "4.17.1"
|
||||||
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
|
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
|
||||||
|
@ -4358,7 +4398,7 @@ lodash.sortby@^4.7.0:
|
||||||
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
||||||
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
|
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
|
||||||
|
|
||||||
lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19:
|
lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19:
|
||||||
version "4.17.20"
|
version "4.17.20"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
|
||||||
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
|
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
|
||||||
|
@ -4836,11 +4876,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||||
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
|
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
|
||||||
|
|
||||||
normalize-url@*, normalize-url@^5.1.0:
|
|
||||||
version "5.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-5.1.0.tgz#04b8f1b34ea49ff713fc20b2218eba41fb9974a3"
|
|
||||||
integrity sha512-UxHuSWsSAmzSqN+DSjasaZWQ3QPtEisHdlr4y9MJ5zg0RcImv5fQt8QM0izJSCdsdmhJGK+ubcTpJXwVDmwSVQ==
|
|
||||||
|
|
||||||
normalize-url@^4.1.0:
|
normalize-url@^4.1.0:
|
||||||
version "4.5.0"
|
version "4.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
|
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
|
||||||
|
@ -5527,11 +5562,21 @@ redis-commands@1.5.0:
|
||||||
resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785"
|
resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785"
|
||||||
integrity sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==
|
integrity sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==
|
||||||
|
|
||||||
|
redis-commands@^1.2.0:
|
||||||
|
version "1.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.6.0.tgz#36d4ca42ae9ed29815cdb30ad9f97982eba1ce23"
|
||||||
|
integrity sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ==
|
||||||
|
|
||||||
redis-errors@^1.0.0, redis-errors@^1.2.0:
|
redis-errors@^1.0.0, redis-errors@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
|
resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
|
||||||
integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=
|
integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=
|
||||||
|
|
||||||
|
redis-parser@^2.6.0:
|
||||||
|
version "2.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b"
|
||||||
|
integrity sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=
|
||||||
|
|
||||||
redis-parser@^3.0.0:
|
redis-parser@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
|
resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
|
||||||
|
@ -5539,6 +5584,15 @@ redis-parser@^3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
redis-errors "^1.0.0"
|
redis-errors "^1.0.0"
|
||||||
|
|
||||||
|
redis@^2.4.2:
|
||||||
|
version "2.8.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02"
|
||||||
|
integrity sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==
|
||||||
|
dependencies:
|
||||||
|
double-ended-queue "^2.1.0-0"
|
||||||
|
redis-commands "^1.2.0"
|
||||||
|
redis-parser "^2.6.0"
|
||||||
|
|
||||||
regenerator-runtime@^0.13.4:
|
regenerator-runtime@^0.13.4:
|
||||||
version "0.13.7"
|
version "0.13.7"
|
||||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
|
||||||
|
|
Loading…
Reference in a new issue