use ioredis instead of keyv

This commit is contained in:
spencerwooo
2021-12-31 20:30:29 +08:00
parent 115b550cb5
commit 13f5c2c79f
5 changed files with 42 additions and 94 deletions
+35 -78
View File
@@ -14,12 +14,11 @@
"@fortawesome/free-solid-svg-icons": "^5.15.3", "@fortawesome/free-solid-svg-icons": "^5.15.3",
"@fortawesome/react-fontawesome": "^0.1.14", "@fortawesome/react-fontawesome": "^0.1.14",
"@headlessui/react": "^1.4.0", "@headlessui/react": "^1.4.0",
"@keyv/redis": "^2.2.1",
"axios": "^0.21.1", "axios": "^0.21.1",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"emoji-regex": "^9.2.2", "emoji-regex": "^9.2.2",
"ioredis": "^4.28.2",
"jszip": "^3.7.1", "jszip": "^3.7.1",
"keyv": "^4.0.4",
"next": "^12.0.7", "next": "^12.0.7",
"nextjs-progressbar": "^0.0.13", "nextjs-progressbar": "^0.0.13",
"preview-office-docs": "^1.0.2", "preview-office-docs": "^1.0.2",
@@ -41,7 +40,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/crypto-js": "^4.0.2", "@types/crypto-js": "^4.0.2",
"@types/keyv": "^3.1.3", "@types/ioredis": "^4.28.5",
"@types/prismjs": "^1.16.5", "@types/prismjs": "^1.16.5",
"@types/react": "17.0.11", "@types/react": "17.0.11",
"@types/react-copy-to-clipboard": "^5.0.0", "@types/react-copy-to-clipboard": "^5.0.0",
@@ -52,7 +51,7 @@
"eslint": "7.29.0", "eslint": "7.29.0",
"eslint-config-next": "11.0.0", "eslint-config-next": "11.0.0",
"postcss": "^8.4.5", "postcss": "^8.4.5",
"tailwindcss": "^3.0.5", "tailwindcss": "^3.0.8",
"typescript": "4.3.4" "typescript": "4.3.4"
} }
}, },
@@ -826,14 +825,6 @@
"react-dom": "^16 || ^17 || ^18" "react-dom": "^16 || ^17 || ^18"
} }
}, },
"node_modules/@keyv/redis": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@keyv/redis/-/redis-2.2.1.tgz",
"integrity": "sha512-LktyRl8kqplElJVN4AJVwj5dsJc7ulza/2kqiksQzW4YHYucPhyvoFeLc7hKBmO1cdFHO12Q+3sjM+fL6WCb3g==",
"dependencies": {
"ioredis": "^4.28.2"
}
},
"node_modules/@napi-rs/triples": { "node_modules/@napi-rs/triples": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
@@ -1132,6 +1123,15 @@
"@types/unist": "*" "@types/unist": "*"
} }
}, },
"node_modules/@types/ioredis": {
"version": "4.28.5",
"resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.5.tgz",
"integrity": "sha512-bp5mdpzscWZMEE/jLvvzze5TZFYGhynB1am69l/a0XPqZRXWpbswY6lb5buEht57jOnw5pPG5zL9pFUWw1nggw==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/json5": { "node_modules/@types/json5": {
"version": "0.0.29", "version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -1143,15 +1143,6 @@
"resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.11.1.tgz", "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.11.1.tgz",
"integrity": "sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg==" "integrity": "sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg=="
}, },
"node_modules/@types/keyv": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz",
"integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/localforage": { "node_modules/@types/localforage": {
"version": "0.0.34", "version": "0.0.34",
"resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz", "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz",
@@ -4496,11 +4487,6 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
},
"node_modules/json-parse-better-errors": { "node_modules/json-parse-better-errors": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -4602,14 +4588,6 @@
"katex": "cli.js" "katex": "cli.js"
} }
}, },
"node_modules/keyv": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz",
"integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==",
"dependencies": {
"json-buffer": "3.0.1"
}
},
"node_modules/language-subtag-registry": { "node_modules/language-subtag-registry": {
"version": "0.3.21", "version": "0.3.21",
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz",
@@ -6029,9 +6007,9 @@
} }
}, },
"node_modules/postcss-selector-parser": { "node_modules/postcss-selector-parser": {
"version": "6.0.6", "version": "6.0.8",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz",
"integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"cssesc": "^3.0.0", "cssesc": "^3.0.0",
@@ -7315,9 +7293,9 @@
"dev": true "dev": true
}, },
"node_modules/tailwindcss": { "node_modules/tailwindcss": {
"version": "3.0.5", "version": "3.0.8",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.5.tgz", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.8.tgz",
"integrity": "sha512-59pNgzx2o+wkAk7IZGIH7H9eNS53gzZGrO3+NPyOEWHDbquHgiLL/c993T5t1vPSAeBxox4X5OgZwNuRvXVf+g==", "integrity": "sha512-Yww1eRYO1AxITJmW/KduZPxNvYdHuedeKwPju9Oakp7MdiixRi5xkpLhirsc81QCxHL0eoce6qKmxXwYGt4Cjw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"arg": "^5.0.1", "arg": "^5.0.1",
@@ -7336,7 +7314,7 @@
"postcss-js": "^3.0.3", "postcss-js": "^3.0.3",
"postcss-load-config": "^3.1.0", "postcss-load-config": "^3.1.0",
"postcss-nested": "5.0.6", "postcss-nested": "5.0.6",
"postcss-selector-parser": "^6.0.6", "postcss-selector-parser": "^6.0.7",
"postcss-value-parser": "^4.2.0", "postcss-value-parser": "^4.2.0",
"quick-lru": "^5.1.1", "quick-lru": "^5.1.1",
"resolve": "^1.20.0", "resolve": "^1.20.0",
@@ -8590,14 +8568,6 @@
"integrity": "sha512-gL6Ns5xQM57cZBzX6IVv6L7nsam8rDEpRhs5fg28SN64ikfmuuMgunc+Rw5C1cMScnvFM+cz32ueVrlSFEVlSg==", "integrity": "sha512-gL6Ns5xQM57cZBzX6IVv6L7nsam8rDEpRhs5fg28SN64ikfmuuMgunc+Rw5C1cMScnvFM+cz32ueVrlSFEVlSg==",
"requires": {} "requires": {}
}, },
"@keyv/redis": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@keyv/redis/-/redis-2.2.1.tgz",
"integrity": "sha512-LktyRl8kqplElJVN4AJVwj5dsJc7ulza/2kqiksQzW4YHYucPhyvoFeLc7hKBmO1cdFHO12Q+3sjM+fL6WCb3g==",
"requires": {
"ioredis": "^4.28.2"
}
},
"@napi-rs/triples": { "@napi-rs/triples": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
@@ -8766,6 +8736,15 @@
"@types/unist": "*" "@types/unist": "*"
} }
}, },
"@types/ioredis": {
"version": "4.28.5",
"resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.5.tgz",
"integrity": "sha512-bp5mdpzscWZMEE/jLvvzze5TZFYGhynB1am69l/a0XPqZRXWpbswY6lb5buEht57jOnw5pPG5zL9pFUWw1nggw==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/json5": { "@types/json5": {
"version": "0.0.29", "version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -8777,15 +8756,6 @@
"resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.11.1.tgz", "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.11.1.tgz",
"integrity": "sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg==" "integrity": "sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg=="
}, },
"@types/keyv": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz",
"integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/localforage": { "@types/localforage": {
"version": "0.0.34", "version": "0.0.34",
"resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz", "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz",
@@ -11278,11 +11248,6 @@
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"peer": true "peer": true
}, },
"json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
},
"json-parse-better-errors": { "json-parse-better-errors": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -11374,14 +11339,6 @@
"commander": "^6.0.0" "commander": "^6.0.0"
} }
}, },
"keyv": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz",
"integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==",
"requires": {
"json-buffer": "3.0.1"
}
},
"language-subtag-registry": { "language-subtag-registry": {
"version": "0.3.21", "version": "0.3.21",
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz",
@@ -12442,9 +12399,9 @@
} }
}, },
"postcss-selector-parser": { "postcss-selector-parser": {
"version": "6.0.6", "version": "6.0.8",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz",
"integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"cssesc": "^3.0.0", "cssesc": "^3.0.0",
@@ -13408,9 +13365,9 @@
} }
}, },
"tailwindcss": { "tailwindcss": {
"version": "3.0.5", "version": "3.0.8",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.5.tgz", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.8.tgz",
"integrity": "sha512-59pNgzx2o+wkAk7IZGIH7H9eNS53gzZGrO3+NPyOEWHDbquHgiLL/c993T5t1vPSAeBxox4X5OgZwNuRvXVf+g==", "integrity": "sha512-Yww1eRYO1AxITJmW/KduZPxNvYdHuedeKwPju9Oakp7MdiixRi5xkpLhirsc81QCxHL0eoce6qKmxXwYGt4Cjw==",
"dev": true, "dev": true,
"requires": { "requires": {
"arg": "^5.0.1", "arg": "^5.0.1",
@@ -13429,7 +13386,7 @@
"postcss-js": "^3.0.3", "postcss-js": "^3.0.3",
"postcss-load-config": "^3.1.0", "postcss-load-config": "^3.1.0",
"postcss-nested": "5.0.6", "postcss-nested": "5.0.6",
"postcss-selector-parser": "^6.0.6", "postcss-selector-parser": "^6.0.7",
"postcss-value-parser": "^4.2.0", "postcss-value-parser": "^4.2.0",
"quick-lru": "^5.1.1", "quick-lru": "^5.1.1",
"resolve": "^1.20.0", "resolve": "^1.20.0",
+3 -4
View File
@@ -15,12 +15,11 @@
"@fortawesome/free-solid-svg-icons": "^5.15.3", "@fortawesome/free-solid-svg-icons": "^5.15.3",
"@fortawesome/react-fontawesome": "^0.1.14", "@fortawesome/react-fontawesome": "^0.1.14",
"@headlessui/react": "^1.4.0", "@headlessui/react": "^1.4.0",
"@keyv/redis": "^2.2.1",
"axios": "^0.21.1", "axios": "^0.21.1",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"emoji-regex": "^9.2.2", "emoji-regex": "^9.2.2",
"ioredis": "^4.28.2",
"jszip": "^3.7.1", "jszip": "^3.7.1",
"keyv": "^4.0.4",
"next": "^12.0.7", "next": "^12.0.7",
"nextjs-progressbar": "^0.0.13", "nextjs-progressbar": "^0.0.13",
"preview-office-docs": "^1.0.2", "preview-office-docs": "^1.0.2",
@@ -42,7 +41,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/crypto-js": "^4.0.2", "@types/crypto-js": "^4.0.2",
"@types/keyv": "^3.1.3", "@types/ioredis": "^4.28.5",
"@types/prismjs": "^1.16.5", "@types/prismjs": "^1.16.5",
"@types/react": "17.0.11", "@types/react": "17.0.11",
"@types/react-copy-to-clipboard": "^5.0.0", "@types/react-copy-to-clipboard": "^5.0.0",
@@ -53,7 +52,7 @@
"eslint": "7.29.0", "eslint": "7.29.0",
"eslint-config-next": "11.0.0", "eslint-config-next": "11.0.0",
"postcss": "^8.4.5", "postcss": "^8.4.5",
"tailwindcss": "^3.0.5", "tailwindcss": "^3.0.8",
"typescript": "4.3.4" "typescript": "4.3.4"
} }
} }
-2
View File
@@ -1,9 +1,7 @@
import os from 'os'
import { posix as pathPosix } from 'path' import { posix as pathPosix } from 'path'
import type { NextApiRequest, NextApiResponse } from 'next' import type { NextApiRequest, NextApiResponse } from 'next'
import axios from 'axios' import axios from 'axios'
import Keyv from 'keyv'
import apiConfig from '../../config/api.json' import apiConfig from '../../config/api.json'
import siteConfig from '../../config/site.json' import siteConfig from '../../config/site.json'
+1 -1
View File
@@ -50,7 +50,7 @@ export default function OAuthStep3({ accessToken, expiryTime, refreshToken, erro
setTimeout(() => { setTimeout(() => {
router.push('/') router.push('/')
}, 3000) }, 2000)
}) })
.catch(_ => { .catch(_ => {
setButtonContent( setButtonContent(
+3 -9
View File
@@ -1,14 +1,8 @@
// This should be only used on the server side, where the tokens are stored with KV store using import Redis from 'ioredis'
// a file system based storage. The tokens are stored in the file system as JSON at /tmp path.
import Keyv from 'keyv'
// Persistent key-value store is provided by Redis, hosted on Upstash // Persistent key-value store is provided by Redis, hosted on Upstash
// https://vercel.com/integrations/upstash // https://vercel.com/integrations/upstash
console.log(process.env.REDIS_URL) const kv = new Redis(process.env.REDIS_URL)
const kv = new Keyv(process.env.REDIS_URL)
kv.on('error', err => console.log('Connection Error', err))
export async function getOdAuthTokens(): Promise<{ accessToken: unknown; refreshToken: unknown }> { export async function getOdAuthTokens(): Promise<{ accessToken: unknown; refreshToken: unknown }> {
const accessToken = await kv.get('access_token') const accessToken = await kv.get('access_token')
@@ -29,6 +23,6 @@ export async function storeOdAuthTokens({
accessTokenExpiry: number accessTokenExpiry: number
refreshToken: string refreshToken: string
}): Promise<void> { }): Promise<void> {
await kv.set('access_token', accessToken, accessTokenExpiry) await kv.set('access_token', accessToken, 'ex', accessTokenExpiry)
await kv.set('refresh_token', refreshToken) await kv.set('refresh_token', refreshToken)
} }