From 13f5c2c79f239593cb31ce812cb5e633d7dc73ed Mon Sep 17 00:00:00 2001 From: spencerwooo Date: Fri, 31 Dec 2021 20:30:29 +0800 Subject: [PATCH] use ioredis instead of keyv --- package-lock.json | 113 ++++++------------- package.json | 7 +- pages/api/index.ts | 2 - pages/onedrive-vercel-index-oauth/step-3.tsx | 2 +- utils/odAuthTokenStore.ts | 12 +- 5 files changed, 42 insertions(+), 94 deletions(-) diff --git a/package-lock.json b/package-lock.json index 19d6d07..2feacd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,12 +14,11 @@ "@fortawesome/free-solid-svg-icons": "^5.15.3", "@fortawesome/react-fontawesome": "^0.1.14", "@headlessui/react": "^1.4.0", - "@keyv/redis": "^2.2.1", "axios": "^0.21.1", "crypto-js": "^4.1.1", "emoji-regex": "^9.2.2", + "ioredis": "^4.28.2", "jszip": "^3.7.1", - "keyv": "^4.0.4", "next": "^12.0.7", "nextjs-progressbar": "^0.0.13", "preview-office-docs": "^1.0.2", @@ -41,7 +40,7 @@ }, "devDependencies": { "@types/crypto-js": "^4.0.2", - "@types/keyv": "^3.1.3", + "@types/ioredis": "^4.28.5", "@types/prismjs": "^1.16.5", "@types/react": "17.0.11", "@types/react-copy-to-clipboard": "^5.0.0", @@ -52,7 +51,7 @@ "eslint": "7.29.0", "eslint-config-next": "11.0.0", "postcss": "^8.4.5", - "tailwindcss": "^3.0.5", + "tailwindcss": "^3.0.8", "typescript": "4.3.4" } }, @@ -826,14 +825,6 @@ "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": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", @@ -1132,6 +1123,15 @@ "@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": { "version": "0.0.29", "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", "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": { "version": "0.0.34", "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz", @@ -4496,11 +4487,6 @@ "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": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -4602,14 +4588,6 @@ "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": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", @@ -6029,9 +6007,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz", + "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -7315,9 +7293,9 @@ "dev": true }, "node_modules/tailwindcss": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.5.tgz", - "integrity": "sha512-59pNgzx2o+wkAk7IZGIH7H9eNS53gzZGrO3+NPyOEWHDbquHgiLL/c993T5t1vPSAeBxox4X5OgZwNuRvXVf+g==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.8.tgz", + "integrity": "sha512-Yww1eRYO1AxITJmW/KduZPxNvYdHuedeKwPju9Oakp7MdiixRi5xkpLhirsc81QCxHL0eoce6qKmxXwYGt4Cjw==", "dev": true, "dependencies": { "arg": "^5.0.1", @@ -7336,7 +7314,7 @@ "postcss-js": "^3.0.3", "postcss-load-config": "^3.1.0", "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.6", + "postcss-selector-parser": "^6.0.7", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", "resolve": "^1.20.0", @@ -8590,14 +8568,6 @@ "integrity": "sha512-gL6Ns5xQM57cZBzX6IVv6L7nsam8rDEpRhs5fg28SN64ikfmuuMgunc+Rw5C1cMScnvFM+cz32ueVrlSFEVlSg==", "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": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", @@ -8766,6 +8736,15 @@ "@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": { "version": "0.0.29", "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", "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": { "version": "0.0.34", "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz", @@ -11278,11 +11248,6 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "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": { "version": "1.0.2", "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" } }, - "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": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", @@ -12442,9 +12399,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz", + "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -13408,9 +13365,9 @@ } }, "tailwindcss": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.5.tgz", - "integrity": "sha512-59pNgzx2o+wkAk7IZGIH7H9eNS53gzZGrO3+NPyOEWHDbquHgiLL/c993T5t1vPSAeBxox4X5OgZwNuRvXVf+g==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.8.tgz", + "integrity": "sha512-Yww1eRYO1AxITJmW/KduZPxNvYdHuedeKwPju9Oakp7MdiixRi5xkpLhirsc81QCxHL0eoce6qKmxXwYGt4Cjw==", "dev": true, "requires": { "arg": "^5.0.1", @@ -13429,7 +13386,7 @@ "postcss-js": "^3.0.3", "postcss-load-config": "^3.1.0", "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.6", + "postcss-selector-parser": "^6.0.7", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", "resolve": "^1.20.0", diff --git a/package.json b/package.json index 36c0b5e..cb93127 100644 --- a/package.json +++ b/package.json @@ -15,12 +15,11 @@ "@fortawesome/free-solid-svg-icons": "^5.15.3", "@fortawesome/react-fontawesome": "^0.1.14", "@headlessui/react": "^1.4.0", - "@keyv/redis": "^2.2.1", "axios": "^0.21.1", "crypto-js": "^4.1.1", "emoji-regex": "^9.2.2", + "ioredis": "^4.28.2", "jszip": "^3.7.1", - "keyv": "^4.0.4", "next": "^12.0.7", "nextjs-progressbar": "^0.0.13", "preview-office-docs": "^1.0.2", @@ -42,7 +41,7 @@ }, "devDependencies": { "@types/crypto-js": "^4.0.2", - "@types/keyv": "^3.1.3", + "@types/ioredis": "^4.28.5", "@types/prismjs": "^1.16.5", "@types/react": "17.0.11", "@types/react-copy-to-clipboard": "^5.0.0", @@ -53,7 +52,7 @@ "eslint": "7.29.0", "eslint-config-next": "11.0.0", "postcss": "^8.4.5", - "tailwindcss": "^3.0.5", + "tailwindcss": "^3.0.8", "typescript": "4.3.4" } } diff --git a/pages/api/index.ts b/pages/api/index.ts index 970e8da..9914869 100644 --- a/pages/api/index.ts +++ b/pages/api/index.ts @@ -1,9 +1,7 @@ -import os from 'os' import { posix as pathPosix } from 'path' import type { NextApiRequest, NextApiResponse } from 'next' import axios from 'axios' -import Keyv from 'keyv' import apiConfig from '../../config/api.json' import siteConfig from '../../config/site.json' diff --git a/pages/onedrive-vercel-index-oauth/step-3.tsx b/pages/onedrive-vercel-index-oauth/step-3.tsx index f90c415..e4bf08e 100644 --- a/pages/onedrive-vercel-index-oauth/step-3.tsx +++ b/pages/onedrive-vercel-index-oauth/step-3.tsx @@ -50,7 +50,7 @@ export default function OAuthStep3({ accessToken, expiryTime, refreshToken, erro setTimeout(() => { router.push('/') - }, 3000) + }, 2000) }) .catch(_ => { setButtonContent( diff --git a/utils/odAuthTokenStore.ts b/utils/odAuthTokenStore.ts index 9826af7..fc98391 100644 --- a/utils/odAuthTokenStore.ts +++ b/utils/odAuthTokenStore.ts @@ -1,14 +1,8 @@ -// This should be only used on the server side, where the tokens are stored with KV store using -// a file system based storage. The tokens are stored in the file system as JSON at /tmp path. - -import Keyv from 'keyv' +import Redis from 'ioredis' // Persistent key-value store is provided by Redis, hosted on Upstash // https://vercel.com/integrations/upstash -console.log(process.env.REDIS_URL) - -const kv = new Keyv(process.env.REDIS_URL) -kv.on('error', err => console.log('Connection Error', err)) +const kv = new Redis(process.env.REDIS_URL) export async function getOdAuthTokens(): Promise<{ accessToken: unknown; refreshToken: unknown }> { const accessToken = await kv.get('access_token') @@ -29,6 +23,6 @@ export async function storeOdAuthTokens({ accessTokenExpiry: number refreshToken: string }): Promise { - await kv.set('access_token', accessToken, accessTokenExpiry) + await kv.set('access_token', accessToken, 'ex', accessTokenExpiry) await kv.set('refresh_token', refreshToken) }