From cadafaf3e1b2da10aa49c21c98fd6f3693c280da Mon Sep 17 00:00:00 2001 From: martin-mfg <2026226+martin-mfg@users.noreply.github.com> Date: Mon, 13 Oct 2025 16:00:30 +0200 Subject: [PATCH] add axios cache --- frontend/frontend/craco.config.js | 1 + frontend/frontend/package.json | 3 ++- frontend/frontend/src/axios-override.js | 11 +++++++++++ frontend/frontend/yarn.lock | 26 ++++++++++++++++++++++++- 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 frontend/frontend/src/axios-override.js diff --git a/frontend/frontend/craco.config.js b/frontend/frontend/craco.config.js index 997197f1..c7b57474 100644 --- a/frontend/frontend/craco.config.js +++ b/frontend/frontend/craco.config.js @@ -5,6 +5,7 @@ module.exports = { webpack: { alias: { dotenv: path.resolve(__dirname, 'src/dotenv-browser-stub.js'), + axios: path.resolve(__dirname, 'src/axios-override.js'), '../src/fetchers/wakatime.js': path.resolve(__dirname, 'src/wakatime-override.js'), }, diff --git a/frontend/frontend/package.json b/frontend/frontend/package.json index e97eaac6..6dcd561d 100644 --- a/frontend/frontend/package.json +++ b/frontend/frontend/package.json @@ -11,7 +11,8 @@ "@nivo/radar": "^0.83.0", "@nivo/swarmplot": "^0.83.0", "@nivo/tooltip": "^0.83.0", - "axios": "^1.6.1", + "axios": "^1", + "axios-cache-interceptor": "^1", "buffer": "^6.0.3", "daisyui": "2.31.0", "downloadjs": "^1.4.7", diff --git a/frontend/frontend/src/axios-override.js b/frontend/frontend/src/axios-override.js new file mode 100644 index 00000000..c17deb63 --- /dev/null +++ b/frontend/frontend/src/axios-override.js @@ -0,0 +1,11 @@ +import axios from 'axios'; +import { setupCache } from 'axios-cache-interceptor'; + +const cachedAxios = setupCache(axios, { + // Cache for 30 minutes + ttl: 30 * 60 * 1000, + methods: ['get', 'post'], +}); + +export default cachedAxios; +export const { get, post } = cachedAxios; diff --git a/frontend/frontend/yarn.lock b/frontend/frontend/yarn.lock index a2f2395d..11ea4c0d 100644 --- a/frontend/frontend/yarn.lock +++ b/frontend/frontend/yarn.lock @@ -3236,7 +3236,16 @@ axe-core@^4.10.0: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.3.tgz#04145965ac7894faddbac30861e5d8f11bfd14fc" integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg== -axios@^1.6.1: +axios-cache-interceptor@^1: + version "1.8.3" + resolved "https://registry.yarnpkg.com/axios-cache-interceptor/-/axios-cache-interceptor-1.8.3.tgz#917ea29109a5fee8f88020cd0f71d132c54c2e67" + integrity sha512-ifuSBoCEkVaiugg1UTjVuTdK+SjSOJ35pdv2OrzhRT3wDMr52QiayQxUqs7jd7GDsfPOjMcw3T3ek0TysbyZZw== + dependencies: + cache-parser "1.2.5" + fast-defer "1.1.8" + object-code "1.3.3" + +axios@^1: version "1.12.2" resolved "https://registry.yarnpkg.com/axios/-/axios-1.12.2.tgz#6c307390136cf7a2278d09cec63b136dfc6e6da7" integrity sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw== @@ -3540,6 +3549,11 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +cache-parser@1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/cache-parser/-/cache-parser-1.2.5.tgz#f19102a788b03055389730eb0493e463e1b379ac" + integrity sha512-Md/4VhAHByQ9frQ15WD6LrMNiVw9AEl/J7vWIXw+sxT6fSOpbtt6LHTp76vy8+bOESPBO94117Hm2bIjlI7XjA== + call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" @@ -5330,6 +5344,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^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-defer@1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/fast-defer/-/fast-defer-1.1.8.tgz#940ef9597b2ea51c4cd08e99d0f2a8978fa49ba2" + integrity sha512-lEJeOH5VL5R09j6AA0D4Uvq7AgsHw0dAImQQ+F3iSyHZuAxyQfWobsagGpTcOPvJr3urmKRHrs+Gs9hV+/Qm/Q== + fast-diff@^1.1.2: version "1.3.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" @@ -7597,6 +7616,11 @@ object-assign@^4.0.1, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-code@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/object-code/-/object-code-1.3.3.tgz#cf21843ddfecce3ec73fd141f66a7f16ba0cb93e" + integrity sha512-/Ds4Xd5xzrtUOJ+xJQ57iAy0BZsZltOHssnDgcZ8DOhgh41q1YJCnTPnWdWSLkNGNnxYzhYChjc5dgC9mEERCA== + object-hash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"