diff --git a/.gitignore b/.gitignore index 6e750130d..760f76bd5 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,6 @@ yarn-error.log* next-env.d.ts public/sw.js.map public/workbox* + +# Sentry Config File +.env.sentry-build-plugin diff --git a/next.config.js b/next.config.js index a289146e3..8d6fea2a0 100644 --- a/next.config.js +++ b/next.config.js @@ -1,8 +1,9 @@ +const { withSentryConfig } = require("@sentry/nextjs"); + const path = require("path"); const withPWA = require("next-pwa")({ dest: "public" }); -const { BugsnagBuildReporterPlugin } = require("webpack-bugsnag-plugins"); const appPackage = require("./package.json"); const config = { @@ -19,15 +20,6 @@ const config = { } }); - if (process.env.NODE_ENV === "production") { - config.plugins.push( - new BugsnagBuildReporterPlugin({ - apiKey: "53c03fdd42cd699cb95f60abe77a5b19", - appVersion: appPackage.version - }) - ); - } - return config; }, images: { @@ -55,6 +47,41 @@ const config = { } }; +const withSentry = withSentryConfig(config, { + // For all available options, see: + // https://github.com/getsentry/sentry-webpack-plugin#options + + org: "ildar-timerbaev", + project: "ecency-next", + + // Only print logs for uploading source maps in CI + silent: !process.env.CI, + + // For all available options, see: + // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/ + + // Upload a larger set of source maps for prettier stack traces (increases build time) + widenClientFileUpload: true, + + // Uncomment to route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. + // This can increase your server load as well as your hosting bill. + // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client- + // side errors will fail. + // tunnelRoute: "/monitoring", + + // Hides source maps from generated client bundles + hideSourceMaps: true, + + // Automatically tree-shake Sentry logger statements to reduce bundle size + disableLogger: true, + + // Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.) + // See the following for more information: + // https://docs.sentry.io/product/crons/ + // https://vercel.com/docs/cron-jobs + automaticVercelMonitors: false +}); + /** @type {import('next').NextConfig} */ -const nextWithPWA = withPWA(config); -module.exports = process.env.NODE_ENV === "production" ? nextWithPWA : config; +const nextWithPWA = withPWA(withSentry); +module.exports = process.env.NODE_ENV === "production" ? nextWithPWA : withSentry; diff --git a/package.json b/package.json index 97cc26096..e32f72359 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,6 @@ "test": "jest" }, "dependencies": { - "@bugsnag/browser-performance": "^2.9.0", - "@bugsnag/js": "^8.0.0", - "@bugsnag/plugin-react": "^8.0.0", "@ecency/ns-query": "^1.2.11-next", "@ecency/render-helper": "^2.2.29", "@emoji-mart/data": "^1.1.2", @@ -24,6 +21,7 @@ "@hiveio/hivescript": "^1.3.3", "@popperjs/core": "^2.11.8", "@react-spring/web": "^9.7.3", + "@sentry/nextjs": "^8", "@tanstack/react-query": "^5.15.0", "@tanstack/react-query-devtools": "^5.15.0", "@tooni/iconscout-unicons-react": "^1.0.1", diff --git a/public/sw.js b/public/sw.js index 907d3fef8..68d19e214 100644 --- a/public/sw.js +++ b/public/sw.js @@ -1,2 +1,2 @@ -if(!self.define){let e,s={};const a=(a,c)=>(a=new URL(a+".js",c).href,s[a]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()})).then((()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e})));self.define=(c,i)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let n={};const r=e=>a(e,t),d={module:{uri:t},exports:n,require:r};s[t]=Promise.all(c.map((e=>d[e]||r(e)))).then((e=>(i(...e),n)))}}define(["./workbox-9b4d2a02"],(function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/app-build-manifest.json",revision:"aed29e5b918ce3cef4a796a1665d54c8"},{url:"/_next/static/chunks/1172-307882f87889c956.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/1172-307882f87889c956.js.map",revision:"84cbc37a03b91cb76633f07d0b54627c"},{url:"/_next/static/chunks/13b76428-d2acc36217b02113.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/13b76428-d2acc36217b02113.js.map",revision:"424759f7f868a2bedcda305f27c42f11"},{url:"/_next/static/chunks/140-59e1e85757c58b6c.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/140-59e1e85757c58b6c.js.map",revision:"d4cec1d74ffe8ae8316db08004a06799"},{url:"/_next/static/chunks/20-e12904f27731e799.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/20-e12904f27731e799.js.map",revision:"14173e316c1186c325a3b6cf5dbe59ab"},{url:"/_next/static/chunks/210-b0d908635c976ac0.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/210-b0d908635c976ac0.js.map",revision:"ea8e4e1d0527b289d3a53008814d2732"},{url:"/_next/static/chunks/2315-7664142d8cb44cfd.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/2315-7664142d8cb44cfd.js.map",revision:"fd6e1788ec6bb42eb35c8f86b0520121"},{url:"/_next/static/chunks/2355-562dce82071f4e50.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/2355-562dce82071f4e50.js.map",revision:"405b5bacd563d74a84e8dc7461e1da4b"},{url:"/_next/static/chunks/2763-252eb785ad44e22d.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/2763-252eb785ad44e22d.js.map",revision:"6403498301c85fe3abc006671ddb0176"},{url:"/_next/static/chunks/2793-a2594e8198c2e6ac.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/2793-a2594e8198c2e6ac.js.map",revision:"4b0797ab9b4f6828e54631f4e759d70c"},{url:"/_next/static/chunks/3305-233038e59a1d3919.js.map",revision:"e4a3250760f3f41b839b2303b34b1150"},{url:"/_next/static/chunks/3aba9d11-c7f5d549a5dd3217.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/3aba9d11-c7f5d549a5dd3217.js.map",revision:"56243fab94d285d1b982e72945285c07"},{url:"/_next/static/chunks/4218-37fedda9983faeb0.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/4218-37fedda9983faeb0.js.map",revision:"de9b2703c69d27215485d5585a760b82"},{url:"/_next/static/chunks/4351-7a0bc789b8424095.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/4351-7a0bc789b8424095.js.map",revision:"c8a3c07988725949c17ef5d0f60d67c5"},{url:"/_next/static/chunks/4638-5ca7c3ac638600b8.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/4638-5ca7c3ac638600b8.js.map",revision:"c024a8696166b38c2c906c91e450131f"},{url:"/_next/static/chunks/4824-9059757e8eb694cb.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/4824-9059757e8eb694cb.js.map",revision:"dadd055d09bc7b6985f2543c63853f76"},{url:"/_next/static/chunks/52271efe-5a4d5b99719e484a.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/52271efe-5a4d5b99719e484a.js.map",revision:"13aaa643238da152922abfe2fa30d5dd"},{url:"/_next/static/chunks/6107-47b8181dce5345d9.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/62c88095-71836eac7be5e546.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/62c88095-71836eac7be5e546.js.map",revision:"5515ccc74548fe1034ed79e5f35a1654"},{url:"/_next/static/chunks/6861-d3ddacc51c07244d.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/6861-d3ddacc51c07244d.js.map",revision:"b2726a368ecd14a1dc0cda1deea0d8cf"},{url:"/_next/static/chunks/7023-fc5ba924867648c3.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/7023-fc5ba924867648c3.js.map",revision:"8ebed1309f30fee13fb069f8526c12d2"},{url:"/_next/static/chunks/7177-3ed31a9d7a0c7c74.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/7177-3ed31a9d7a0c7c74.js.map",revision:"38caf0151bd72e6ddd1e25118ade30a1"},{url:"/_next/static/chunks/7497-dd85879e40b988a8.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/7497-dd85879e40b988a8.js.map",revision:"dec5312f72c0d219d7caaf9aa38ebad1"},{url:"/_next/static/chunks/77befd7b-d9abb3ad4e1157f2.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/77befd7b-d9abb3ad4e1157f2.js.map",revision:"7e8c8fb28a06cf1d0dda02f2281a0b57"},{url:"/_next/static/chunks/8210-bbe6e83f3d4fdd3d.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/8210-bbe6e83f3d4fdd3d.js.map",revision:"1dece6423c104371323797d4cb680c19"},{url:"/_next/static/chunks/8470-c14193bc41bcbdf6.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/8470-c14193bc41bcbdf6.js.map",revision:"46be0a401cfdc59559652f84f5afbe50"},{url:"/_next/static/chunks/964-34d8ce4a69af6ac5.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/964-34d8ce4a69af6ac5.js.map",revision:"c4787d6efc985e7c28da0c1361b67f08"},{url:"/_next/static/chunks/9691.97f1876daf59d7a9.js",revision:"97f1876daf59d7a9"},{url:"/_next/static/chunks/9691.97f1876daf59d7a9.js.map",revision:"932957534cf87a2b806245f65c3d507e"},{url:"/_next/static/chunks/9706-0bf8fe0da31dbea5.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/9706-0bf8fe0da31dbea5.js.map",revision:"4ed357445acd33c3afcb7d59452cedca"},{url:"/_next/static/chunks/9950-5b36c956d35cc9a8.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/9950-5b36c956d35cc9a8.js.map",revision:"091314da952d8a13345dfba1f25de050"},{url:"/_next/static/chunks/aaea2bcf-4a717eae8f750b29.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/aaea2bcf-4a717eae8f750b29.js.map",revision:"c3012e831bdff64d991aa787071e3f41"},{url:"/_next/static/chunks/app/%5B...slugs%5D/page-80923e3c25484614.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/%5B...slugs%5D/page-80923e3c25484614.js.map",revision:"5c47e8227cf9c6601eb4f2e4115499ff"},{url:"/_next/static/chunks/app/(staticPages)/about/page-ed6e4e7433440bb2.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/(staticPages)/about/page-ed6e4e7433440bb2.js.map",revision:"75c69e652f8558b3acddc752ae985fa6"},{url:"/_next/static/chunks/app/(staticPages)/contributors/page-d5c117566e5ef6af.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/(staticPages)/contributors/page-d5c117566e5ef6af.js.map",revision:"bd38d78cc68387ff65a149c978550c1a"},{url:"/_next/static/chunks/app/(staticPages)/faq/page-66e38624cf274dcf.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/(staticPages)/faq/page-66e38624cf274dcf.js.map",revision:"3b61b6d0244620e99524cb797cf6c903"},{url:"/_next/static/chunks/app/(staticPages)/guest-post/page-f2d59e93e6cd7dea.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/(staticPages)/privacy-policy/page-0307329591ae8d83.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/(staticPages)/terms-of-service/page-45f8915fb31198de.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/(staticPages)/whitepaper/page-c0b9ddab669ba627.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/_not-found/page-51e682651f8f7a24.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/auth/page-c7e3e66028fdb6b7.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/auth/page-c7e3e66028fdb6b7.js.map",revision:"241a494450bf21fa8ea999927119280a"},{url:"/_next/static/chunks/app/chats/%5B...params%5D/page-39e26d7e19843c5e.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/chats/%5B...params%5D/page-39e26d7e19843c5e.js.map",revision:"17007b103dc84d152e45d8bc6351aab5"},{url:"/_next/static/chunks/app/chats/page-311c56b8df4b2c8c.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/chats/page-311c56b8df4b2c8c.js.map",revision:"0031558a08ff73493ea45041e936b90f"},{url:"/_next/static/chunks/app/communities/create-hs/page-8ec0df3422bef5bd.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/communities/create-hs/page-8ec0df3422bef5bd.js.map",revision:"a8f8d7b9462343ae95709aabbb5b93d9"},{url:"/_next/static/chunks/app/communities/create/page-75f27cb25ac696a3.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/communities/create/page-75f27cb25ac696a3.js.map",revision:"f69992dea2083c7309734aba3bdf7d5e"},{url:"/_next/static/chunks/app/communities/layout-b294e5934106b292.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/communities/loading-5d26251cf8407530.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/communities/loading-5d26251cf8407530.js.map",revision:"ef70bc22439918e716740636daa47ca0"},{url:"/_next/static/chunks/app/communities/page-ec9dbd5dadb9a076.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/communities/page-ec9dbd5dadb9a076.js.map",revision:"dfff51a972f103962a8e369f5ecba0a0"},{url:"/_next/static/chunks/app/contribute/page-17a83ca234a1ee53.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/decks/page-a741a9ec859ca1a2.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/decks/page-a741a9ec859ca1a2.js.map",revision:"c1dac7e84df4f2c87bc51e03ba9b5734"},{url:"/_next/static/chunks/app/discover/layout-c03a912370ff19ee.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/discover/layout-c03a912370ff19ee.js.map",revision:"4b2ca12e29f64f75e784d0ca578ccd71"},{url:"/_next/static/chunks/app/discover/loading-2f0854b3a7b785fd.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/discover/page-cbb48aff15dc1f99.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/discover/page-cbb48aff15dc1f99.js.map",revision:"84aa49269aa436fd30363b66f4958f93"},{url:"/_next/static/chunks/app/draft/%5Bid%5D/page-6dda7ced484a9c1c.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/draft/%5Bid%5D/page-6dda7ced484a9c1c.js.map",revision:"f70278021c83dbab762da6676bd1a626"},{url:"/_next/static/chunks/app/global-error-9ad7fb465f240575.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/global-error-9ad7fb465f240575.js.map",revision:"5f471d30c3bfe2c93f3bf37515d9e817"},{url:"/_next/static/chunks/app/layout-9c5adbaa0f19048b.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/layout-9c5adbaa0f19048b.js.map",revision:"1bee9aac9b32baadeb379718a97fb460"},{url:"/_next/static/chunks/app/market/advanced/page-e2ea7caac8cb41d5.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/market/advanced/page-e2ea7caac8cb41d5.js.map",revision:"8cf07d2eede6b22b63ee5ddb140ed608"},{url:"/_next/static/chunks/app/market/limit/page-9c10d618311f9449.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/market/limit/page-9c10d618311f9449.js.map",revision:"da53b712427ae0492839d81e8d8c24d1"},{url:"/_next/static/chunks/app/market/page-170e5f164f8fa36e.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/market/swap/page-a4ecf33049ea5a41.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/market/swap/page-a4ecf33049ea5a41.js.map",revision:"1799cf97a6614a0c5dd8726b7cdfb949"},{url:"/_next/static/chunks/app/not-found-56a26fd293e4cbbf.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/onboard-friend/%5B...slugs%5D/page-4ea5f8ba407370c8.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/onboard-friend/%5B...slugs%5D/page-4ea5f8ba407370c8.js.map",revision:"c785db8c29a9424498349a45df36bac2"},{url:"/_next/static/chunks/app/page-b959e1150fd2791a.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/page-b959e1150fd2791a.js.map",revision:"a931edabae26651a4fcc0291a522cc9c"},{url:"/_next/static/chunks/app/perks/page-46922ec5823c34f6.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/perks/page-46922ec5823c34f6.js.map",revision:"346b6cf12b04caa533bcf779fe33f688"},{url:"/_next/static/chunks/app/proposals/%5Bid%5D/page-3f3aba3bfbb2be18.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/proposals/%5Bid%5D/page-3f3aba3bfbb2be18.js.map",revision:"3290a36bdcd7b0769ce145a344eea059"},{url:"/_next/static/chunks/app/proposals/page-0aec9690404a8547.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/proposals/page-0aec9690404a8547.js.map",revision:"48b8bb44b570274569a5b99d09796dd3"},{url:"/_next/static/chunks/app/purchase/page-94128ced3c594477.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/purchase/page-94128ced3c594477.js.map",revision:"bf36074d86d067afc252ab718c5f8d45"},{url:"/_next/static/chunks/app/search/page-a66aba18b589a0af.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/search/page-a66aba18b589a0af.js.map",revision:"5d2d25151fccac9c4937b2d3d0905288"},{url:"/_next/static/chunks/app/signup/page-8056b6e727fd4578.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/signup/page-8056b6e727fd4578.js.map",revision:"4b19e41251a353c92052590d9765f6ec"},{url:"/_next/static/chunks/app/submit/page-e15033215f04c0d1.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/submit/page-e15033215f04c0d1.js.map",revision:"c343f5e662a0e762506ef066d5f8a1a0"},{url:"/_next/static/chunks/app/witnesses/page-f4ed69e488751a7c.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/app/witnesses/page-f4ed69e488751a7c.js.map",revision:"85b41b1a13aa5f061c0afdb1fc8a64d4"},{url:"/_next/static/chunks/c0e397d0-e22ccc2c99005a0b.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/c0e397d0-e22ccc2c99005a0b.js.map",revision:"4b961af0b7ac5942f08fe5903c7a9232"},{url:"/_next/static/chunks/eeac573e-dcbc301d499780df.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/eeac573e-dcbc301d499780df.js.map",revision:"4a7f946bf5c9184c0aae62288d6e1868"},{url:"/_next/static/chunks/fd9d1056-2e8e54d234f9f18f.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/fd9d1056-2e8e54d234f9f18f.js.map",revision:"5ea8a555c2e18ef1f7b4c00fdfff90b9"},{url:"/_next/static/chunks/framework-f504fcbdc24809ff.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/framework-f504fcbdc24809ff.js.map",revision:"078ac2b84925442ea692f4264154643d"},{url:"/_next/static/chunks/main-af68e7b04dbc4f0e.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/main-af68e7b04dbc4f0e.js.map",revision:"4711e7efc174a073ab6dd52e3f502f19"},{url:"/_next/static/chunks/main-app-72191aca4eebc7bc.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/main-app-72191aca4eebc7bc.js.map",revision:"8b58b04725cb026a37765ede1948a6fe"},{url:"/_next/static/chunks/pages/_app-1baacf817f80b683.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/pages/_app-1baacf817f80b683.js.map",revision:"fc64c45e7c1bf14874103f038ac951c6"},{url:"/_next/static/chunks/pages/_error-afda92248358346b.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/pages/_error-afda92248358346b.js.map",revision:"cc22ebfd7c4053d84f64c2e41843982e"},{url:"/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js",revision:"79330112775102f91e1010318bae2bd3"},{url:"/_next/static/chunks/public/assets/notification.7cf94838874c04af.mp3",revision:"7cf94838874c04af"},{url:"/_next/static/chunks/webpack-68b9a2e914387d8b.js",revision:"zFTBoVxE2c7MWVfmP8kpA"},{url:"/_next/static/chunks/webpack-68b9a2e914387d8b.js.map",revision:"f1acd44857dec763df2334337deb1b50"},{url:"/_next/static/css/0367e37f6e3fd8b5.css",revision:"0367e37f6e3fd8b5"},{url:"/_next/static/css/0367e37f6e3fd8b5.css.map",revision:"685704c3118ce786c692a89639088dc4"},{url:"/_next/static/css/0f0cb42ad369f189.css",revision:"0f0cb42ad369f189"},{url:"/_next/static/css/0f0cb42ad369f189.css.map",revision:"e348cab54670937c3cff082e74d94c80"},{url:"/_next/static/css/36e67111d2af8b79.css",revision:"36e67111d2af8b79"},{url:"/_next/static/css/36e67111d2af8b79.css.map",revision:"9ad055e7f4fd8fef8e379f12e56abf26"},{url:"/_next/static/css/41f6b882bf5c3924.css",revision:"41f6b882bf5c3924"},{url:"/_next/static/css/41f6b882bf5c3924.css.map",revision:"61db84570f7a5d906bb1515a1447e74d"},{url:"/_next/static/css/432e5ee1e7ae8de4.css",revision:"432e5ee1e7ae8de4"},{url:"/_next/static/css/432e5ee1e7ae8de4.css.map",revision:"df80e6a0c3981edc23c7e76fbd83f899"},{url:"/_next/static/css/4d05f548331f3701.css",revision:"4d05f548331f3701"},{url:"/_next/static/css/4d05f548331f3701.css.map",revision:"d51d2d43bbd60f6497b20f9409e42934"},{url:"/_next/static/css/58517c4333c805e1.css",revision:"58517c4333c805e1"},{url:"/_next/static/css/58517c4333c805e1.css.map",revision:"2667fcdefee5d76806b8bf7ca55fbc4c"},{url:"/_next/static/css/693e012f770b1a6a.css",revision:"693e012f770b1a6a"},{url:"/_next/static/css/693e012f770b1a6a.css.map",revision:"ca941d9dbdb118aff9d679c17efc5c59"},{url:"/_next/static/css/7323b2715eb37cb0.css",revision:"7323b2715eb37cb0"},{url:"/_next/static/css/7323b2715eb37cb0.css.map",revision:"d5d686dcdf16a9e9285e543f464580ff"},{url:"/_next/static/css/8dd1898b14cd062a.css",revision:"8dd1898b14cd062a"},{url:"/_next/static/css/8dd1898b14cd062a.css.map",revision:"57d0c3f1115a4846013f7649563da84f"},{url:"/_next/static/css/987144c8088097c9.css",revision:"987144c8088097c9"},{url:"/_next/static/css/987144c8088097c9.css.map",revision:"3b14adc2dbe95f3106a38430ee2562d5"},{url:"/_next/static/css/a6acc34b57b7fdc5.css",revision:"a6acc34b57b7fdc5"},{url:"/_next/static/css/a6acc34b57b7fdc5.css.map",revision:"204d67a1db2cd99dedd7bb3c82f281cd"},{url:"/_next/static/css/af776ea049ea19f5.css",revision:"af776ea049ea19f5"},{url:"/_next/static/css/af776ea049ea19f5.css.map",revision:"54b2acd3662f2ab8dda59203dc19d640"},{url:"/_next/static/css/b2413520eb4669a5.css",revision:"b2413520eb4669a5"},{url:"/_next/static/css/b2413520eb4669a5.css.map",revision:"f8bf711535ca417ca6a41bdb82e1899d"},{url:"/_next/static/css/bad4927b0cd6fbf9.css",revision:"bad4927b0cd6fbf9"},{url:"/_next/static/css/bad4927b0cd6fbf9.css.map",revision:"2274583fb76a3907c5dc6ec75d995d99"},{url:"/_next/static/css/c3973b25e24d3d13.css",revision:"c3973b25e24d3d13"},{url:"/_next/static/css/c3973b25e24d3d13.css.map",revision:"bdf6dc5e8905300a53f57f98806684bd"},{url:"/_next/static/css/d422263a0a03c70c.css",revision:"d422263a0a03c70c"},{url:"/_next/static/css/d422263a0a03c70c.css.map",revision:"d96e583d479afcce9db5b8640774d91b"},{url:"/_next/static/css/de44a315f01b5b27.css",revision:"de44a315f01b5b27"},{url:"/_next/static/css/de44a315f01b5b27.css.map",revision:"f87e6c7970ebf95c06d39ce079a19616"},{url:"/_next/static/css/fc9a001cad273251.css",revision:"fc9a001cad273251"},{url:"/_next/static/css/fc9a001cad273251.css.map",revision:"21f2d26bca641608727061f36202c222"},{url:"/_next/static/media/arrow1-about.656281e6.png",revision:"656281e6"},{url:"/_next/static/media/arrow2-about.1b039bcc.png",revision:"1b039bcc"},{url:"/_next/static/media/arrow3-about.70f825ed.png",revision:"70f825ed"},{url:"/_next/static/media/back-clouds-down.4d526728.png",revision:"4d526728"},{url:"/_next/static/media/back-clouds-up.23f147d4.png",revision:"23f147d4"},{url:"/_next/static/media/cloud1-about.2cdc493a.png",revision:"2cdc493a"},{url:"/_next/static/media/cloud2-about.32fd33bd.png",revision:"32fd33bd"},{url:"/_next/static/media/fallback.d0906556.png",revision:"8713aeba6805ef460b16fa081edd1887"},{url:"/_next/static/media/index-bg.6a2f476b.png",revision:"6a2f476b"},{url:"/_next/static/media/logo-circle.9f6f8f1c.svg",revision:"2df6f251431f9f36e1815e5b90ce1f8a"},{url:"/_next/static/media/noimage.7dc5d3ff.svg",revision:"68711d71516a091f18169b2882dc6035"},{url:"/_next/static/media/noimage.f7ce9bd0.png",revision:"f7ce9bd0"},{url:"/_next/static/media/thumbnail-play.348281a6.jpg",revision:"99d63c99267bf2e74e95d92bfb00a0ea"},{url:"/_next/static/zFTBoVxE2c7MWVfmP8kpA/_buildManifest.js",revision:"50e0e2eb6fd60572d559c7355937ad7a"},{url:"/_next/static/zFTBoVxE2c7MWVfmP8kpA/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/assets/arrow1-about.png",revision:"4340c5b200d5d51631f944aad1ee2b5e"},{url:"/assets/arrow2-about.png",revision:"a73b3fcfc161b35e762e52e1810612f9"},{url:"/assets/arrow3-about.png",revision:"6c58e88a02000b98b2f500275e173068"},{url:"/assets/back-clouds-down.png",revision:"12a7304745da678d47a0072132c810c1"},{url:"/assets/back-clouds-up.png",revision:"e56f90fa70a1fe82aebb5f997b823f28"},{url:"/assets/bg-download-mob-dark.png",revision:"8c9a7504cdb60835ef0d39b0f448571d"},{url:"/assets/bg-download-mob-dark.webp",revision:"6a8c212f5d2cb66f259a4a8aa3af3311"},{url:"/assets/bg-download-mob-light.png",revision:"d92057b43d7e4217175d35b944141645"},{url:"/assets/bg-download-mob-light.webp",revision:"a225c5595468ab97f62a03246753cce6"},{url:"/assets/bg-download-tiny-dark.svg",revision:"4dfcf8aaeeb8a52d21bb3525d541ed5b"},{url:"/assets/bg-download-tiny.webp",revision:"a0a4bfab2ddbad09183baf2afe07a616"},{url:"/assets/bubble-center.png",revision:"5606f7307c513e99f36699e10f23ccf9"},{url:"/assets/bubble-center.webp",revision:"ef695adcbbd8936ed59f350682e61397"},{url:"/assets/bubble-left-bottom.png",revision:"df2d82a18a6135cf028abbf11781da69"},{url:"/assets/bubble-left-bottom.webp",revision:"ed0725bf3ac081532ad28a113a25bb0e"},{url:"/assets/bubble-left-top.png",revision:"5485d77a530a6f998e1e0c95cc58d223"},{url:"/assets/bubble-left-top.webp",revision:"cf1c941f7f1bde7958ebc663e7dd2f14"},{url:"/assets/bubble-right-bottom.png",revision:"c34007e9b2e094b58d0ad9f149efe7a6"},{url:"/assets/bubble-right-bottom.webp",revision:"c2189eac8ac13d5a006194e4171148b4"},{url:"/assets/bubble-right-top.png",revision:"6401d7510d2dda133da4f77b8e5857c3"},{url:"/assets/bubble-right-top.webp",revision:"06037b88ba36932c52d5484a2db3c735"},{url:"/assets/cloud1-about.png",revision:"d66dc0e33618136110dc0a851f98f4cc"},{url:"/assets/cloud1.png",revision:"28c7c7b997fb3662e2d21549b32b2972"},{url:"/assets/cloud2-about.png",revision:"8774eb6432d37ac1ecf7deaea117e1a5"},{url:"/assets/cloud2.png",revision:"a66f13dbef7a3324ab1d105991295e00"},{url:"/assets/cloud3.png",revision:"8889d6546ce489ca120d960479fc04d1"},{url:"/assets/coming-soon.png",revision:"ef24f5a15258aaa3846af7089935bf0a"},{url:"/assets/community-img.svg",revision:"3fd1e229d9517bb74c4e4903d9109ded"},{url:"/assets/cover-fallback-day.png",revision:"595641ae8f1d3b74ee12ee0b8878a520"},{url:"/assets/cover-fallback-night.png",revision:"bb6096d6a3e471fa7a8f869562d340db"},{url:"/assets/download-algae-dark.png",revision:"8c70504a94da6e93f4ac1b27046eb939"},{url:"/assets/download-algae-dark.webp",revision:"89a79f1000ca9995a6e14cfc60fd42a9"},{url:"/assets/download-algae.png",revision:"2490f946a17ba1abe4456f0f31d850a3"},{url:"/assets/download-algae.webp",revision:"1d97c2b64cfd934481e18c49ec8e8722"},{url:"/assets/download-dark-fishes.png",revision:"537442c023e388e9e33a93c821094381"},{url:"/assets/download-dark-fishes.webp",revision:"a36ea49d16f9c4b1e2833c2f6bbc618f"},{url:"/assets/dunsky.jpeg",revision:"6af464219667bd1b7a8b05a3a3133cf4"},{url:"/assets/dunsky.webp",revision:"abb98406fd78ae7cbf1ccf61e6b0a8f2"},{url:"/assets/ecency-faq.jpg",revision:"e2d5d30d0cb4a5fc5e470c56d62ede97"},{url:"/assets/ecency-faq.webp",revision:"42faa678c7ef5854f9ed0c999f6ef7eb"},{url:"/assets/fallback.png",revision:"8713aeba6805ef460b16fa081edd1887"},{url:"/assets/fish-1.png",revision:"4386e9af02b5f60f75caa040eced9a65"},{url:"/assets/fish-1.webp",revision:"8f0eb1179c74579084353e5df5b2a74f"},{url:"/assets/fish-2.png",revision:"92ce36fc40b95aeb3475d081bba0d798"},{url:"/assets/fish-2.webp",revision:"fe0c99a9f185d8b2e94bd249e625cf27"},{url:"/assets/fish-3.png",revision:"89c59580c072f1dbf52ac03068f040f3"},{url:"/assets/fish-3.webp",revision:"b9c3a3cc1cd0329d74ddb62d3a4e4b43"},{url:"/assets/fish-4.png",revision:"b91622c6328bbba13847519e0356db62"},{url:"/assets/fish-4.webp",revision:"a404c3ef59a9581554c06188ee262419"},{url:"/assets/fish-5.png",revision:"b271e3992390713707dc08f01691fb52"},{url:"/assets/fish-5.webp",revision:"abb4e590246f17bd00a21f7b414872d3"},{url:"/assets/fish-junior.png",revision:"78924f1ba81f1f59dd9a144be923edb1"},{url:"/assets/fish-junior.webp",revision:"bcae2a76d249cad55891d24e41e73b0c"},{url:"/assets/fish-senior.png",revision:"f3327a9c9d166c9da097fcfe88f38ed3"},{url:"/assets/fish-senior.webp",revision:"c70cf25bd04d52decb151396c900dcb3"},{url:"/assets/footer-discord.svg",revision:"04238f73e8da0be200731a4cc285d00e"},{url:"/assets/footer-main-fish.png",revision:"ba3d7c5371e84bdf30f6dee4d086a156"},{url:"/assets/footer-main-fish.webp",revision:"ac45436a3109caf9f94a2cd00f681783"},{url:"/assets/footer-telegram.svg",revision:"796b996dc8082544484feb13a97aa014"},{url:"/assets/footer-twitter.svg",revision:"c44b68c3cdee7732ce516bc250f6f27c"},{url:"/assets/footer-youtube.svg",revision:"6f91ba3c2f20618d27c15bff5352aba6"},{url:"/assets/github-cover.png",revision:"5eaca17c4b526f9b352a87a5a82dbfe4"},{url:"/assets/good-karma.jpeg",revision:"a7bb11629694bd7f9bd2b16bf058bb6b"},{url:"/assets/good-karma.webp",revision:"9a449b33cf032238499916c25584f58d"},{url:"/assets/hero-algae-dark.svg",revision:"eaa27188f9a588164e731b9f4a8f8295"},{url:"/assets/hero-algae-light.svg",revision:"4efcd71e3e8f8574446eeaa7a7517e33"},{url:"/assets/hero-fishes-dark.png",revision:"f8d8e17b68e2ff1490202f8503d24770"},{url:"/assets/hero-fishes.svg",revision:"a6307454b1e0fc4bcb6d402c33a63c7f"},{url:"/assets/hive-signer.svg",revision:"579ae88263a03ea7c8c4a9ec4e8b67f7"},{url:"/assets/icon-android-white.svg",revision:"f7df8d801059a45a14d1e90864157b1f"},{url:"/assets/icon-android.png",revision:"606b1396c3fffa5dc0f1d074695fab49"},{url:"/assets/icon-android.webp",revision:"c6bd14c9917803f8f69c4557be95ad9e"},{url:"/assets/icon-apple-white.svg",revision:"e4de9f34c14e50ed4fd12847091c16d2"},{url:"/assets/icon-apple.svg",revision:"a27b1b4829e566dca6d38f7c2e6d6ba5"},{url:"/assets/icon-windows-white.svg",revision:"4553dd690e4675fc4fb2132732b1c43b"},{url:"/assets/icon-windows.svg",revision:"80669c801739c850306618a2569b423c"},{url:"/assets/illustration-decentralization.png",revision:"0ad91ae4e70f22e8be87345e73144cb3"},{url:"/assets/illustration-decentralization.webp",revision:"ed3442432df26760623ec58c715fdf43"},{url:"/assets/illustration-earn-money.png",revision:"e2a7951254764e3dabac0697d089a3c2"},{url:"/assets/illustration-earn-money.webp",revision:"58605a59b4c1f6321ef90d5ef21eac24"},{url:"/assets/illustration-hero-day.png",revision:"ca7c9fd189caa73616664823e45b737d"},{url:"/assets/illustration-hero-day.webp",revision:"66c0bb6d0864af304a4e1801c967c526"},{url:"/assets/illustration-hero.png",revision:"9e2e1a46dc78fb0635c054fcf2d27b67"},{url:"/assets/illustration-hero.webp",revision:"75c6cdf85d150e6512fd2b3d0e20e332"},{url:"/assets/illustration-open-source.png",revision:"6f20524696843277aca578db00f29e14"},{url:"/assets/illustration-open-source.webp",revision:"79bf861b3c83c7de1ac96d8a35c4827d"},{url:"/assets/illustration-true-ownership.png",revision:"005b4f456f8d341de75c8c7cb25d750c"},{url:"/assets/illustration-true-ownership.webp",revision:"a2819f44d481e3203270877dc89cf87c"},{url:"/assets/index-bg.png",revision:"0931098d955341c1458c653ef42c5bec"},{url:"/assets/keychain.png",revision:"b4a1776481ec1bce0cdcb654126ee449"},{url:"/assets/left-fishes.png",revision:"c98d0bac15e561c7e4ce226541f5ab1e"},{url:"/assets/left-fishes.webp",revision:"7e5f5cee88eafa722b9b2eadbede120d"},{url:"/assets/like.png",revision:"af5f38b521e1c06eece664d5a3f24cdd"},{url:"/assets/logo-192x192.svg",revision:"09f9b1ec26a43fedaf3c527d9992ea3b"},{url:"/assets/logo-384x384.svg",revision:"c33b1a087528562650bdc7f9bb1889b3"},{url:"/assets/logo-512x512.svg",revision:"e0eb6d6416139753e199cf627599ac40"},{url:"/assets/logo-circle-santa.svg",revision:"a08e76920a86e2749d74345d86797cc5"},{url:"/assets/logo-circle.svg",revision:"2df6f251431f9f36e1815e5b90ce1f8a"},{url:"/assets/logo-small-transparent.png",revision:"197b6e7934149c67237a38f145dfb860"},{url:"/assets/noimage.png",revision:"66290b70590324b996aa6c841a4f6bf1"},{url:"/assets/noimage.svg",revision:"68711d71516a091f18169b2882dc6035"},{url:"/assets/notification.mp3",revision:"594e6e429f66513a2bc759fce6c1abc7"},{url:"/assets/nsfw.png",revision:"2e103d3e107e2974025b441b5fde485a"},{url:"/assets/our-history.png",revision:"730ae7e9850b787ea78d6151391ca463"},{url:"/assets/our-history.webp",revision:"f781b93801170a83acde5cf23bf538f4"},{url:"/assets/our-team.png",revision:"dc4a40a5f543e793462caf5c19d89f2f"},{url:"/assets/our-team.webp",revision:"ca3d13a54a5ba9e7e7df7af748c3a23a"},{url:"/assets/our-vision.png",revision:"acb541b415884dfce4b061ad21ce1b06"},{url:"/assets/our-vision.webp",revision:"bfe56f6816dade138c59010d69a8f83f"},{url:"/assets/phone-dark-pc.png",revision:"ba94fb9341a0303a8f6068ade064b0cb"},{url:"/assets/phone-dark-pc.webp",revision:"beef47eb0f0d9e6708e172b2138c48ab"},{url:"/assets/phone-dark-tablet.png",revision:"2358c7d62d813d3422a5af8bebb2be2e"},{url:"/assets/phone-dark-tablet.webp",revision:"c42d66f8c5c1999a648e6bb6a1a81227"},{url:"/assets/phone-download-tiny.png",revision:"0247b2bb16c64d46e4d8a73f60f4d501"},{url:"/assets/phone-download-tiny.webp",revision:"7120bd905eb5e5acbc866bd42058ba4c"},{url:"/assets/phone-download.png",revision:"54650a95d8ce20a2e03b68f0d6389201"},{url:"/assets/phone-light-pc.png",revision:"7bbef75c3da1d2a8e742b484292e6379"},{url:"/assets/phone-light-pc.webp",revision:"4a5839bf3499ef6687f1a798c683d7a1"},{url:"/assets/phone-light-tablet.png",revision:"49724acf6a25fedcd914ce0125517b8a"},{url:"/assets/phone-light-tablet.webp",revision:"7f448063c46119c5a7f0880f01b1814d"},{url:"/assets/reward.png",revision:"0faea76d5486dc7f637486da769fdad8"},{url:"/assets/rewarding-and-freespeech.png",revision:"ca1fc97612079d93de24bfb3ab6e0ea9"},{url:"/assets/rewarding-and-freespeech.svg",revision:"2df6f251431f9f36e1815e5b90ce1f8a"},{url:"/assets/signup.png",revision:"1ceacafe5770ed4f53829de572c9d219"},{url:"/assets/svg.tsx",revision:"2f1d7fbc25f8166e5b49e8997a803842"},{url:"/assets/talhasch.jpeg",revision:"9abb1df5ddbfd25e7fd72b0a4e202eff"},{url:"/assets/talhasch.webp",revision:"6e7e49e9ba1da71ecf46f0bb17c986c3"},{url:"/assets/thumbnail-play.jpg",revision:"99d63c99267bf2e74e95d92bfb00a0ea"},{url:"/assets/writer-thinking.png",revision:"03deb40c2a35de193e78c0e0d3d72a0e"},{url:"/assets/writer.png",revision:"00feab482a3f5309cce64ce9ca64041a"},{url:"/firebase-messaging-sw.js",revision:"db67bd2ec72e44b813ccabeb1ebb113f"},{url:"/manifest.json",revision:"3547aead3cd7bbd2b2ab3b7e23355d84"},{url:"/next.svg",revision:"8e061864f388b47f33a1c3780831193e"},{url:"/vercel.svg",revision:"61c6b19abff40ea7acd577be818f3976"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:s,event:a,state:c})=>s&&"opaqueredirect"===s.type?new Response(s.body,{status:200,statusText:"OK",headers:s.headers}):s}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;const s=e.pathname;return!s.startsWith("/api/auth/")&&!!s.startsWith("/api/")}),new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")}),new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>!(self.origin===e.origin)),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")})); +if(!self.define){let e,s={};const a=(a,c)=>(a=new URL(a+".js",c).href,s[a]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()})).then((()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e})));self.define=(c,i)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let n={};const d=e=>a(e,t),r={module:{uri:t},exports:n,require:d};s[t]=Promise.all(c.map((e=>r[e]||d(e)))).then((e=>(i(...e),n)))}}define(["./workbox-9b4d2a02"],(function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/app-build-manifest.json",revision:"a6a962bc6bb7f8714d7f5d91fedec5c1"},{url:"/_next/static/43qb0fmjdiA7cJ0G44NJE/_buildManifest.js",revision:"50e0e2eb6fd60572d559c7355937ad7a"},{url:"/_next/static/43qb0fmjdiA7cJ0G44NJE/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/1172-ad9f20d8bf141020.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/1172-ad9f20d8bf141020.js.map",revision:"946b0548f038e84570ae9fa7e5721bb6"},{url:"/_next/static/chunks/13b76428-d2acc36217b02113.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/13b76428-d2acc36217b02113.js.map",revision:"817b487c8152f1cd8fc123523a164b88"},{url:"/_next/static/chunks/140-59e1e85757c58b6c.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/140-59e1e85757c58b6c.js.map",revision:"9bfa6d0353e429d6ee761d4cb6872752"},{url:"/_next/static/chunks/20-2da42408501837d6.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/20-2da42408501837d6.js.map",revision:"4b4704383374798313b4ac4db20b11c3"},{url:"/_next/static/chunks/210-032f7ba6bbc71393.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/210-032f7ba6bbc71393.js.map",revision:"e7b60892a6f66691855462822025a60a"},{url:"/_next/static/chunks/2315-48e9aba8c393f135.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/2315-48e9aba8c393f135.js.map",revision:"9173a9594297565aacda53ff88ed0f56"},{url:"/_next/static/chunks/2355-5d00d9eb5aeecc0f.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/2355-5d00d9eb5aeecc0f.js.map",revision:"6756c17b81a0bd1fd5d885831f11b7e0"},{url:"/_next/static/chunks/2763-8d4630a364f028ed.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/2763-8d4630a364f028ed.js.map",revision:"1b2013f52de2deeb096e2e14af8e59b0"},{url:"/_next/static/chunks/2793-8670113caf9ff07a.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/2793-8670113caf9ff07a.js.map",revision:"061c5a14ea622ddd8441a3360294bc35"},{url:"/_next/static/chunks/3305-3627605dea793125.js.map",revision:"9b3f3fa03ba5c917aea547e793c58e6e"},{url:"/_next/static/chunks/3aba9d11-c7f5d549a5dd3217.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/3aba9d11-c7f5d549a5dd3217.js.map",revision:"acf37859977234434322da64ee09cc60"},{url:"/_next/static/chunks/4218-18b188b22e91dc4c.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/4218-18b188b22e91dc4c.js.map",revision:"7c2a1a403b4f70ff86a4d8932a605103"},{url:"/_next/static/chunks/4351-14e2f26452a4452c.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/4351-14e2f26452a4452c.js.map",revision:"91ff9dceed4616326e18c8ec6bca0b6d"},{url:"/_next/static/chunks/4577-c719bd1a174b2613.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/4577-c719bd1a174b2613.js.map",revision:"4c91ef4bc16af1bfbfdd5922781766bf"},{url:"/_next/static/chunks/4638-8244e548db7b2567.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/4638-8244e548db7b2567.js.map",revision:"49e790faa00aa4d93d8fe77e5ccd3fea"},{url:"/_next/static/chunks/4824-403935e1585441cf.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/4824-403935e1585441cf.js.map",revision:"1574e02610cfe7fff817810332c2fcf1"},{url:"/_next/static/chunks/52271efe-5a4d5b99719e484a.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/52271efe-5a4d5b99719e484a.js.map",revision:"2e1cabb80af85eda10678b66cce9e8a0"},{url:"/_next/static/chunks/6107-c1e0619729746002.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/62c88095-37ae7f0d839cfa2a.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/62c88095-37ae7f0d839cfa2a.js.map",revision:"7edb0c0ac3736db66e955f53391d9deb"},{url:"/_next/static/chunks/6861-ac269338f84a6d9d.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/6861-ac269338f84a6d9d.js.map",revision:"c15f486190ed114cb15462ea0ea34cc0"},{url:"/_next/static/chunks/7177-44882b771abcc0ad.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/7177-44882b771abcc0ad.js.map",revision:"562e25cf9874ec5a52f0179ccb405ab1"},{url:"/_next/static/chunks/7497-60b5c772c8a78143.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/7497-60b5c772c8a78143.js.map",revision:"fb24fd5a819ba5c72aba88fed5bc222f"},{url:"/_next/static/chunks/77befd7b-107eabdeda9222c5.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/77befd7b-107eabdeda9222c5.js.map",revision:"a1f4011257a1b785604c4d8407148d5b"},{url:"/_next/static/chunks/8210-a4824c994485e46f.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/8210-a4824c994485e46f.js.map",revision:"cc4c834da017a09c7da64d3934d51009"},{url:"/_next/static/chunks/8470-aea377d85f455719.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/8470-aea377d85f455719.js.map",revision:"74fd20cb5ff19a4869086bda69b0492b"},{url:"/_next/static/chunks/964-77059b59fcdcdd91.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/964-77059b59fcdcdd91.js.map",revision:"af57d502f0416835c2ec38575ea8df1e"},{url:"/_next/static/chunks/9691.79c0c5b1248387bd.js",revision:"79c0c5b1248387bd"},{url:"/_next/static/chunks/9691.79c0c5b1248387bd.js.map",revision:"5e1bd4e1885663eb12e63aef83952ffe"},{url:"/_next/static/chunks/9706-53bcf38aa29ce2e2.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/9706-53bcf38aa29ce2e2.js.map",revision:"9f8437448e8229f0cd1af48b60e54ece"},{url:"/_next/static/chunks/9950-d2da862bfa1e2843.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/9950-d2da862bfa1e2843.js.map",revision:"3506fe9e85a1b935edd0f48d934b4ad9"},{url:"/_next/static/chunks/aaea2bcf-4a717eae8f750b29.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/aaea2bcf-4a717eae8f750b29.js.map",revision:"70965ea1c6781f78892a71fc5b9b718c"},{url:"/_next/static/chunks/app/%5B...slugs%5D/page-8e211517b1184505.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/%5B...slugs%5D/page-8e211517b1184505.js.map",revision:"45c391a1cc7728d7b6f692822e0a9a44"},{url:"/_next/static/chunks/app/(staticPages)/about/page-e6f909cb0d30c785.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/(staticPages)/about/page-e6f909cb0d30c785.js.map",revision:"77d5060b1d7b8f5725f8aedc4d5bcc71"},{url:"/_next/static/chunks/app/(staticPages)/contributors/page-85af727945bb6018.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/(staticPages)/contributors/page-85af727945bb6018.js.map",revision:"c80d5b106a06184546f3f735e0db675b"},{url:"/_next/static/chunks/app/(staticPages)/faq/page-4f7958933857c96f.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/(staticPages)/faq/page-4f7958933857c96f.js.map",revision:"ad69b8a173b645768d2a05b3434089b0"},{url:"/_next/static/chunks/app/(staticPages)/guest-post/page-6b2e32d26fe4c4f2.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/(staticPages)/privacy-policy/page-cb785a56586af55f.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/(staticPages)/terms-of-service/page-01ec3ee6d705bf71.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/(staticPages)/whitepaper/page-a65d8e3327422df4.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/_not-found/page-baad026d81f54cad.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/auth/page-a3ed94810fdb0f6c.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/auth/page-a3ed94810fdb0f6c.js.map",revision:"28d9d9b32e72646c8d346393b1420458"},{url:"/_next/static/chunks/app/chats/%5B...params%5D/page-e63b7708bd2cd649.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/chats/%5B...params%5D/page-e63b7708bd2cd649.js.map",revision:"a0f0756ed32011f8e8070862b21e180c"},{url:"/_next/static/chunks/app/chats/page-ddfc3fbb914a4823.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/chats/page-ddfc3fbb914a4823.js.map",revision:"b29891f248526659f18f95bbaa9fa6ea"},{url:"/_next/static/chunks/app/communities/create-hs/page-4ceb99090b4c05cf.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/communities/create-hs/page-4ceb99090b4c05cf.js.map",revision:"df34a46c36ba7c33ac6107352b2da285"},{url:"/_next/static/chunks/app/communities/create/page-d25ee6527701dce9.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/communities/create/page-d25ee6527701dce9.js.map",revision:"95edc121bff873e414cc2973c358b9f5"},{url:"/_next/static/chunks/app/communities/layout-092522604fec4bda.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/communities/loading-bcdb7d4a59f3eb12.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/communities/loading-bcdb7d4a59f3eb12.js.map",revision:"349de274778de4b1bd6539149c78d9b5"},{url:"/_next/static/chunks/app/communities/page-347691c8c3e7c62d.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/communities/page-347691c8c3e7c62d.js.map",revision:"ed0a5d89f0ae5513c73923963d149054"},{url:"/_next/static/chunks/app/contribute/page-f62d6c309016c417.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/decks/page-d1ea037160ed9cef.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/decks/page-d1ea037160ed9cef.js.map",revision:"9972d2d6ce895baed008233320a97396"},{url:"/_next/static/chunks/app/discover/layout-c3cbd7630fd545b0.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/discover/layout-c3cbd7630fd545b0.js.map",revision:"c39789c4410c731823d5cbac4a3db80d"},{url:"/_next/static/chunks/app/discover/loading-840e58884aa0d856.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/discover/page-10f8a4d8305e59e2.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/discover/page-10f8a4d8305e59e2.js.map",revision:"c43a6c22ebbae6381e9a7dbad48a6e16"},{url:"/_next/static/chunks/app/draft/%5Bid%5D/page-89c164946f8b8055.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/draft/%5Bid%5D/page-89c164946f8b8055.js.map",revision:"854e901f2eb57c4815502cc778f738da"},{url:"/_next/static/chunks/app/global-error-9bbce337be31a63c.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/global-error-9bbce337be31a63c.js.map",revision:"2f5c7427b91544fd7783bbfbecc13687"},{url:"/_next/static/chunks/app/layout-1a0ce969654db0d7.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/layout-1a0ce969654db0d7.js.map",revision:"7ab5543a570c4a62fba218abeb674f5d"},{url:"/_next/static/chunks/app/market/advanced/page-cf3b7332e1bbec9f.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/market/advanced/page-cf3b7332e1bbec9f.js.map",revision:"df2ea304571e1f34951e6122b1ad6482"},{url:"/_next/static/chunks/app/market/limit/page-537899fcac2b70a6.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/market/limit/page-537899fcac2b70a6.js.map",revision:"8dbd7f62fbf4a1619cd2ff3a84e1d0fd"},{url:"/_next/static/chunks/app/market/page-8a82b7b11e07f2dc.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/market/swap/page-ddf66dc266ff6fe6.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/market/swap/page-ddf66dc266ff6fe6.js.map",revision:"7ef59e8c408a58f0ff142a22485ddf4c"},{url:"/_next/static/chunks/app/not-found-3bfaa559d0f9967c.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/onboard-friend/%5B...slugs%5D/page-be6c4590b6b2e018.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/onboard-friend/%5B...slugs%5D/page-be6c4590b6b2e018.js.map",revision:"9f5ebf10c14e885db2589c277590adcb"},{url:"/_next/static/chunks/app/page-8ec3b6eb22a7f7f1.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/page-8ec3b6eb22a7f7f1.js.map",revision:"31da564017a5a9f85342f1aecf916744"},{url:"/_next/static/chunks/app/perks/page-79e8ad3e8f8a1b6b.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/perks/page-79e8ad3e8f8a1b6b.js.map",revision:"ffdfc95ca3ae922c77dfe14a8efb8527"},{url:"/_next/static/chunks/app/proposals/%5Bid%5D/page-d7343276947cc03d.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/proposals/%5Bid%5D/page-d7343276947cc03d.js.map",revision:"3f75cb03fe4942eb73fbab59cb0c107d"},{url:"/_next/static/chunks/app/proposals/page-f8977a2936116049.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/proposals/page-f8977a2936116049.js.map",revision:"fd381c1387ce70053c9cd93836204df9"},{url:"/_next/static/chunks/app/purchase/page-a3a57dfe3937c464.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/purchase/page-a3a57dfe3937c464.js.map",revision:"b3c734f7593d17d62701d3dcc44de0b2"},{url:"/_next/static/chunks/app/search/page-444e2f57f4a0f8cd.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/search/page-444e2f57f4a0f8cd.js.map",revision:"c3f6615e87d9711b4134d3db1e91f258"},{url:"/_next/static/chunks/app/sentry-example-page/page-c617b43b7026b31d.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/sentry-example-page/page-c617b43b7026b31d.js.map",revision:"99b6c79139c6c26457652dd826044ef1"},{url:"/_next/static/chunks/app/signup/page-c728528330a1d31b.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/signup/page-c728528330a1d31b.js.map",revision:"186e63718cf4bb89963f63618d28545a"},{url:"/_next/static/chunks/app/submit/page-0607b437b7b1ee48.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/submit/page-0607b437b7b1ee48.js.map",revision:"22a70d2cfe7fed19a9971bf26e62cdd6"},{url:"/_next/static/chunks/app/witnesses/page-bfc06589a1aeb670.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/app/witnesses/page-bfc06589a1aeb670.js.map",revision:"668406ad59a17ae32256e9167b97370a"},{url:"/_next/static/chunks/c0e397d0-e22ccc2c99005a0b.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/c0e397d0-e22ccc2c99005a0b.js.map",revision:"175b060da6f50c5c5a850adce9bf065a"},{url:"/_next/static/chunks/eeac573e-4da49985bf57b2d2.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/eeac573e-4da49985bf57b2d2.js.map",revision:"227d0dc5a7d231dfb9c505aae5abb3d0"},{url:"/_next/static/chunks/fd9d1056-89e19dbc0b5597e4.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/fd9d1056-89e19dbc0b5597e4.js.map",revision:"c46f7c66997c0a0bb21951a79f1dcd67"},{url:"/_next/static/chunks/framework-16be1c6edad78e20.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/framework-16be1c6edad78e20.js.map",revision:"2d604854235cddd4fefc8e2a9608bc44"},{url:"/_next/static/chunks/main-9396040485ed63f2.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/main-9396040485ed63f2.js.map",revision:"a714c2dd0991366abc6ff6125568d10c"},{url:"/_next/static/chunks/main-app-4e3f659df64cc182.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/main-app-4e3f659df64cc182.js.map",revision:"db5d66a88b9d791f6078f49d5a769623"},{url:"/_next/static/chunks/pages/_app-07f94c2109bd6030.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/pages/_app-07f94c2109bd6030.js.map",revision:"e0b23b5c79e0fa3401decc57a684b318"},{url:"/_next/static/chunks/pages/_error-afda92248358346b.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/pages/_error-afda92248358346b.js.map",revision:"60cac03fbcdacb633cd989b3fa637676"},{url:"/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js",revision:"79330112775102f91e1010318bae2bd3"},{url:"/_next/static/chunks/public/assets/notification.7cf94838874c04af.mp3",revision:"7cf94838874c04af"},{url:"/_next/static/chunks/webpack-e299d4408a8d450c.js",revision:"43qb0fmjdiA7cJ0G44NJE"},{url:"/_next/static/chunks/webpack-e299d4408a8d450c.js.map",revision:"69fe9a9d1be3e6a76f57123659323842"},{url:"/_next/static/css/0367e37f6e3fd8b5.css",revision:"0367e37f6e3fd8b5"},{url:"/_next/static/css/0367e37f6e3fd8b5.css.map",revision:"685704c3118ce786c692a89639088dc4"},{url:"/_next/static/css/0f0cb42ad369f189.css",revision:"0f0cb42ad369f189"},{url:"/_next/static/css/0f0cb42ad369f189.css.map",revision:"e348cab54670937c3cff082e74d94c80"},{url:"/_next/static/css/36e67111d2af8b79.css",revision:"36e67111d2af8b79"},{url:"/_next/static/css/36e67111d2af8b79.css.map",revision:"9ad055e7f4fd8fef8e379f12e56abf26"},{url:"/_next/static/css/41f6b882bf5c3924.css",revision:"41f6b882bf5c3924"},{url:"/_next/static/css/41f6b882bf5c3924.css.map",revision:"61db84570f7a5d906bb1515a1447e74d"},{url:"/_next/static/css/432e5ee1e7ae8de4.css",revision:"432e5ee1e7ae8de4"},{url:"/_next/static/css/432e5ee1e7ae8de4.css.map",revision:"df80e6a0c3981edc23c7e76fbd83f899"},{url:"/_next/static/css/4d05f548331f3701.css",revision:"4d05f548331f3701"},{url:"/_next/static/css/4d05f548331f3701.css.map",revision:"d51d2d43bbd60f6497b20f9409e42934"},{url:"/_next/static/css/58517c4333c805e1.css",revision:"58517c4333c805e1"},{url:"/_next/static/css/58517c4333c805e1.css.map",revision:"2667fcdefee5d76806b8bf7ca55fbc4c"},{url:"/_next/static/css/7323b2715eb37cb0.css",revision:"7323b2715eb37cb0"},{url:"/_next/static/css/7323b2715eb37cb0.css.map",revision:"d5d686dcdf16a9e9285e543f464580ff"},{url:"/_next/static/css/7b05caa48ae3756e.css",revision:"7b05caa48ae3756e"},{url:"/_next/static/css/7b05caa48ae3756e.css.map",revision:"0a3e94edfdb7e5f9797b6df970cd1892"},{url:"/_next/static/css/8dd1898b14cd062a.css",revision:"8dd1898b14cd062a"},{url:"/_next/static/css/8dd1898b14cd062a.css.map",revision:"57d0c3f1115a4846013f7649563da84f"},{url:"/_next/static/css/987144c8088097c9.css",revision:"987144c8088097c9"},{url:"/_next/static/css/987144c8088097c9.css.map",revision:"3b14adc2dbe95f3106a38430ee2562d5"},{url:"/_next/static/css/a6acc34b57b7fdc5.css",revision:"a6acc34b57b7fdc5"},{url:"/_next/static/css/a6acc34b57b7fdc5.css.map",revision:"204d67a1db2cd99dedd7bb3c82f281cd"},{url:"/_next/static/css/af776ea049ea19f5.css",revision:"af776ea049ea19f5"},{url:"/_next/static/css/af776ea049ea19f5.css.map",revision:"54b2acd3662f2ab8dda59203dc19d640"},{url:"/_next/static/css/b2413520eb4669a5.css",revision:"b2413520eb4669a5"},{url:"/_next/static/css/b2413520eb4669a5.css.map",revision:"f8bf711535ca417ca6a41bdb82e1899d"},{url:"/_next/static/css/bad4927b0cd6fbf9.css",revision:"bad4927b0cd6fbf9"},{url:"/_next/static/css/bad4927b0cd6fbf9.css.map",revision:"2274583fb76a3907c5dc6ec75d995d99"},{url:"/_next/static/css/c3973b25e24d3d13.css",revision:"c3973b25e24d3d13"},{url:"/_next/static/css/c3973b25e24d3d13.css.map",revision:"bdf6dc5e8905300a53f57f98806684bd"},{url:"/_next/static/css/d422263a0a03c70c.css",revision:"d422263a0a03c70c"},{url:"/_next/static/css/d422263a0a03c70c.css.map",revision:"d96e583d479afcce9db5b8640774d91b"},{url:"/_next/static/css/de44a315f01b5b27.css",revision:"de44a315f01b5b27"},{url:"/_next/static/css/de44a315f01b5b27.css.map",revision:"f87e6c7970ebf95c06d39ce079a19616"},{url:"/_next/static/css/fc9a001cad273251.css",revision:"fc9a001cad273251"},{url:"/_next/static/css/fc9a001cad273251.css.map",revision:"21f2d26bca641608727061f36202c222"},{url:"/_next/static/media/arrow1-about.656281e6.png",revision:"656281e6"},{url:"/_next/static/media/arrow2-about.1b039bcc.png",revision:"1b039bcc"},{url:"/_next/static/media/arrow3-about.70f825ed.png",revision:"70f825ed"},{url:"/_next/static/media/back-clouds-down.4d526728.png",revision:"4d526728"},{url:"/_next/static/media/back-clouds-up.23f147d4.png",revision:"23f147d4"},{url:"/_next/static/media/cloud1-about.2cdc493a.png",revision:"2cdc493a"},{url:"/_next/static/media/cloud2-about.32fd33bd.png",revision:"32fd33bd"},{url:"/_next/static/media/fallback.d0906556.png",revision:"8713aeba6805ef460b16fa081edd1887"},{url:"/_next/static/media/index-bg.6a2f476b.png",revision:"6a2f476b"},{url:"/_next/static/media/logo-circle.9f6f8f1c.svg",revision:"2df6f251431f9f36e1815e5b90ce1f8a"},{url:"/_next/static/media/noimage.7dc5d3ff.svg",revision:"68711d71516a091f18169b2882dc6035"},{url:"/_next/static/media/noimage.f7ce9bd0.png",revision:"f7ce9bd0"},{url:"/_next/static/media/thumbnail-play.348281a6.jpg",revision:"99d63c99267bf2e74e95d92bfb00a0ea"},{url:"/assets/arrow1-about.png",revision:"4340c5b200d5d51631f944aad1ee2b5e"},{url:"/assets/arrow2-about.png",revision:"a73b3fcfc161b35e762e52e1810612f9"},{url:"/assets/arrow3-about.png",revision:"6c58e88a02000b98b2f500275e173068"},{url:"/assets/back-clouds-down.png",revision:"12a7304745da678d47a0072132c810c1"},{url:"/assets/back-clouds-up.png",revision:"e56f90fa70a1fe82aebb5f997b823f28"},{url:"/assets/bg-download-mob-dark.png",revision:"8c9a7504cdb60835ef0d39b0f448571d"},{url:"/assets/bg-download-mob-dark.webp",revision:"6a8c212f5d2cb66f259a4a8aa3af3311"},{url:"/assets/bg-download-mob-light.png",revision:"d92057b43d7e4217175d35b944141645"},{url:"/assets/bg-download-mob-light.webp",revision:"a225c5595468ab97f62a03246753cce6"},{url:"/assets/bg-download-tiny-dark.svg",revision:"4dfcf8aaeeb8a52d21bb3525d541ed5b"},{url:"/assets/bg-download-tiny.webp",revision:"a0a4bfab2ddbad09183baf2afe07a616"},{url:"/assets/bubble-center.png",revision:"5606f7307c513e99f36699e10f23ccf9"},{url:"/assets/bubble-center.webp",revision:"ef695adcbbd8936ed59f350682e61397"},{url:"/assets/bubble-left-bottom.png",revision:"df2d82a18a6135cf028abbf11781da69"},{url:"/assets/bubble-left-bottom.webp",revision:"ed0725bf3ac081532ad28a113a25bb0e"},{url:"/assets/bubble-left-top.png",revision:"5485d77a530a6f998e1e0c95cc58d223"},{url:"/assets/bubble-left-top.webp",revision:"cf1c941f7f1bde7958ebc663e7dd2f14"},{url:"/assets/bubble-right-bottom.png",revision:"c34007e9b2e094b58d0ad9f149efe7a6"},{url:"/assets/bubble-right-bottom.webp",revision:"c2189eac8ac13d5a006194e4171148b4"},{url:"/assets/bubble-right-top.png",revision:"6401d7510d2dda133da4f77b8e5857c3"},{url:"/assets/bubble-right-top.webp",revision:"06037b88ba36932c52d5484a2db3c735"},{url:"/assets/cloud1-about.png",revision:"d66dc0e33618136110dc0a851f98f4cc"},{url:"/assets/cloud1.png",revision:"28c7c7b997fb3662e2d21549b32b2972"},{url:"/assets/cloud2-about.png",revision:"8774eb6432d37ac1ecf7deaea117e1a5"},{url:"/assets/cloud2.png",revision:"a66f13dbef7a3324ab1d105991295e00"},{url:"/assets/cloud3.png",revision:"8889d6546ce489ca120d960479fc04d1"},{url:"/assets/coming-soon.png",revision:"ef24f5a15258aaa3846af7089935bf0a"},{url:"/assets/community-img.svg",revision:"3fd1e229d9517bb74c4e4903d9109ded"},{url:"/assets/cover-fallback-day.png",revision:"595641ae8f1d3b74ee12ee0b8878a520"},{url:"/assets/cover-fallback-night.png",revision:"bb6096d6a3e471fa7a8f869562d340db"},{url:"/assets/download-algae-dark.png",revision:"8c70504a94da6e93f4ac1b27046eb939"},{url:"/assets/download-algae-dark.webp",revision:"89a79f1000ca9995a6e14cfc60fd42a9"},{url:"/assets/download-algae.png",revision:"2490f946a17ba1abe4456f0f31d850a3"},{url:"/assets/download-algae.webp",revision:"1d97c2b64cfd934481e18c49ec8e8722"},{url:"/assets/download-dark-fishes.png",revision:"537442c023e388e9e33a93c821094381"},{url:"/assets/download-dark-fishes.webp",revision:"a36ea49d16f9c4b1e2833c2f6bbc618f"},{url:"/assets/dunsky.jpeg",revision:"6af464219667bd1b7a8b05a3a3133cf4"},{url:"/assets/dunsky.webp",revision:"abb98406fd78ae7cbf1ccf61e6b0a8f2"},{url:"/assets/ecency-faq.jpg",revision:"e2d5d30d0cb4a5fc5e470c56d62ede97"},{url:"/assets/ecency-faq.webp",revision:"42faa678c7ef5854f9ed0c999f6ef7eb"},{url:"/assets/fallback.png",revision:"8713aeba6805ef460b16fa081edd1887"},{url:"/assets/fish-1.png",revision:"4386e9af02b5f60f75caa040eced9a65"},{url:"/assets/fish-1.webp",revision:"8f0eb1179c74579084353e5df5b2a74f"},{url:"/assets/fish-2.png",revision:"92ce36fc40b95aeb3475d081bba0d798"},{url:"/assets/fish-2.webp",revision:"fe0c99a9f185d8b2e94bd249e625cf27"},{url:"/assets/fish-3.png",revision:"89c59580c072f1dbf52ac03068f040f3"},{url:"/assets/fish-3.webp",revision:"b9c3a3cc1cd0329d74ddb62d3a4e4b43"},{url:"/assets/fish-4.png",revision:"b91622c6328bbba13847519e0356db62"},{url:"/assets/fish-4.webp",revision:"a404c3ef59a9581554c06188ee262419"},{url:"/assets/fish-5.png",revision:"b271e3992390713707dc08f01691fb52"},{url:"/assets/fish-5.webp",revision:"abb4e590246f17bd00a21f7b414872d3"},{url:"/assets/fish-junior.png",revision:"78924f1ba81f1f59dd9a144be923edb1"},{url:"/assets/fish-junior.webp",revision:"bcae2a76d249cad55891d24e41e73b0c"},{url:"/assets/fish-senior.png",revision:"f3327a9c9d166c9da097fcfe88f38ed3"},{url:"/assets/fish-senior.webp",revision:"c70cf25bd04d52decb151396c900dcb3"},{url:"/assets/footer-discord.svg",revision:"04238f73e8da0be200731a4cc285d00e"},{url:"/assets/footer-main-fish.png",revision:"ba3d7c5371e84bdf30f6dee4d086a156"},{url:"/assets/footer-main-fish.webp",revision:"ac45436a3109caf9f94a2cd00f681783"},{url:"/assets/footer-telegram.svg",revision:"796b996dc8082544484feb13a97aa014"},{url:"/assets/footer-twitter.svg",revision:"c44b68c3cdee7732ce516bc250f6f27c"},{url:"/assets/footer-youtube.svg",revision:"6f91ba3c2f20618d27c15bff5352aba6"},{url:"/assets/github-cover.png",revision:"5eaca17c4b526f9b352a87a5a82dbfe4"},{url:"/assets/good-karma.jpeg",revision:"a7bb11629694bd7f9bd2b16bf058bb6b"},{url:"/assets/good-karma.webp",revision:"9a449b33cf032238499916c25584f58d"},{url:"/assets/hero-algae-dark.svg",revision:"eaa27188f9a588164e731b9f4a8f8295"},{url:"/assets/hero-algae-light.svg",revision:"4efcd71e3e8f8574446eeaa7a7517e33"},{url:"/assets/hero-fishes-dark.png",revision:"f8d8e17b68e2ff1490202f8503d24770"},{url:"/assets/hero-fishes.svg",revision:"a6307454b1e0fc4bcb6d402c33a63c7f"},{url:"/assets/hive-signer.svg",revision:"579ae88263a03ea7c8c4a9ec4e8b67f7"},{url:"/assets/icon-android-white.svg",revision:"f7df8d801059a45a14d1e90864157b1f"},{url:"/assets/icon-android.png",revision:"606b1396c3fffa5dc0f1d074695fab49"},{url:"/assets/icon-android.webp",revision:"c6bd14c9917803f8f69c4557be95ad9e"},{url:"/assets/icon-apple-white.svg",revision:"e4de9f34c14e50ed4fd12847091c16d2"},{url:"/assets/icon-apple.svg",revision:"a27b1b4829e566dca6d38f7c2e6d6ba5"},{url:"/assets/icon-windows-white.svg",revision:"4553dd690e4675fc4fb2132732b1c43b"},{url:"/assets/icon-windows.svg",revision:"80669c801739c850306618a2569b423c"},{url:"/assets/illustration-decentralization.png",revision:"0ad91ae4e70f22e8be87345e73144cb3"},{url:"/assets/illustration-decentralization.webp",revision:"ed3442432df26760623ec58c715fdf43"},{url:"/assets/illustration-earn-money.png",revision:"e2a7951254764e3dabac0697d089a3c2"},{url:"/assets/illustration-earn-money.webp",revision:"58605a59b4c1f6321ef90d5ef21eac24"},{url:"/assets/illustration-hero-day.png",revision:"ca7c9fd189caa73616664823e45b737d"},{url:"/assets/illustration-hero-day.webp",revision:"66c0bb6d0864af304a4e1801c967c526"},{url:"/assets/illustration-hero.png",revision:"9e2e1a46dc78fb0635c054fcf2d27b67"},{url:"/assets/illustration-hero.webp",revision:"75c6cdf85d150e6512fd2b3d0e20e332"},{url:"/assets/illustration-open-source.png",revision:"6f20524696843277aca578db00f29e14"},{url:"/assets/illustration-open-source.webp",revision:"79bf861b3c83c7de1ac96d8a35c4827d"},{url:"/assets/illustration-true-ownership.png",revision:"005b4f456f8d341de75c8c7cb25d750c"},{url:"/assets/illustration-true-ownership.webp",revision:"a2819f44d481e3203270877dc89cf87c"},{url:"/assets/index-bg.png",revision:"0931098d955341c1458c653ef42c5bec"},{url:"/assets/keychain.png",revision:"b4a1776481ec1bce0cdcb654126ee449"},{url:"/assets/left-fishes.png",revision:"c98d0bac15e561c7e4ce226541f5ab1e"},{url:"/assets/left-fishes.webp",revision:"7e5f5cee88eafa722b9b2eadbede120d"},{url:"/assets/like.png",revision:"af5f38b521e1c06eece664d5a3f24cdd"},{url:"/assets/logo-192x192.svg",revision:"09f9b1ec26a43fedaf3c527d9992ea3b"},{url:"/assets/logo-384x384.svg",revision:"c33b1a087528562650bdc7f9bb1889b3"},{url:"/assets/logo-512x512.svg",revision:"e0eb6d6416139753e199cf627599ac40"},{url:"/assets/logo-circle-santa.svg",revision:"a08e76920a86e2749d74345d86797cc5"},{url:"/assets/logo-circle.svg",revision:"2df6f251431f9f36e1815e5b90ce1f8a"},{url:"/assets/logo-small-transparent.png",revision:"197b6e7934149c67237a38f145dfb860"},{url:"/assets/noimage.png",revision:"66290b70590324b996aa6c841a4f6bf1"},{url:"/assets/noimage.svg",revision:"68711d71516a091f18169b2882dc6035"},{url:"/assets/notification.mp3",revision:"594e6e429f66513a2bc759fce6c1abc7"},{url:"/assets/nsfw.png",revision:"2e103d3e107e2974025b441b5fde485a"},{url:"/assets/our-history.png",revision:"730ae7e9850b787ea78d6151391ca463"},{url:"/assets/our-history.webp",revision:"f781b93801170a83acde5cf23bf538f4"},{url:"/assets/our-team.png",revision:"dc4a40a5f543e793462caf5c19d89f2f"},{url:"/assets/our-team.webp",revision:"ca3d13a54a5ba9e7e7df7af748c3a23a"},{url:"/assets/our-vision.png",revision:"acb541b415884dfce4b061ad21ce1b06"},{url:"/assets/our-vision.webp",revision:"bfe56f6816dade138c59010d69a8f83f"},{url:"/assets/phone-dark-pc.png",revision:"ba94fb9341a0303a8f6068ade064b0cb"},{url:"/assets/phone-dark-pc.webp",revision:"beef47eb0f0d9e6708e172b2138c48ab"},{url:"/assets/phone-dark-tablet.png",revision:"2358c7d62d813d3422a5af8bebb2be2e"},{url:"/assets/phone-dark-tablet.webp",revision:"c42d66f8c5c1999a648e6bb6a1a81227"},{url:"/assets/phone-download-tiny.png",revision:"0247b2bb16c64d46e4d8a73f60f4d501"},{url:"/assets/phone-download-tiny.webp",revision:"7120bd905eb5e5acbc866bd42058ba4c"},{url:"/assets/phone-download.png",revision:"54650a95d8ce20a2e03b68f0d6389201"},{url:"/assets/phone-light-pc.png",revision:"7bbef75c3da1d2a8e742b484292e6379"},{url:"/assets/phone-light-pc.webp",revision:"4a5839bf3499ef6687f1a798c683d7a1"},{url:"/assets/phone-light-tablet.png",revision:"49724acf6a25fedcd914ce0125517b8a"},{url:"/assets/phone-light-tablet.webp",revision:"7f448063c46119c5a7f0880f01b1814d"},{url:"/assets/reward.png",revision:"0faea76d5486dc7f637486da769fdad8"},{url:"/assets/rewarding-and-freespeech.png",revision:"ca1fc97612079d93de24bfb3ab6e0ea9"},{url:"/assets/rewarding-and-freespeech.svg",revision:"2df6f251431f9f36e1815e5b90ce1f8a"},{url:"/assets/signup.png",revision:"1ceacafe5770ed4f53829de572c9d219"},{url:"/assets/svg.tsx",revision:"2f1d7fbc25f8166e5b49e8997a803842"},{url:"/assets/talhasch.jpeg",revision:"9abb1df5ddbfd25e7fd72b0a4e202eff"},{url:"/assets/talhasch.webp",revision:"6e7e49e9ba1da71ecf46f0bb17c986c3"},{url:"/assets/thumbnail-play.jpg",revision:"99d63c99267bf2e74e95d92bfb00a0ea"},{url:"/assets/writer-thinking.png",revision:"03deb40c2a35de193e78c0e0d3d72a0e"},{url:"/assets/writer.png",revision:"00feab482a3f5309cce64ce9ca64041a"},{url:"/firebase-messaging-sw.js",revision:"db67bd2ec72e44b813ccabeb1ebb113f"},{url:"/manifest.json",revision:"3547aead3cd7bbd2b2ab3b7e23355d84"},{url:"/next.svg",revision:"8e061864f388b47f33a1c3780831193e"},{url:"/vercel.svg",revision:"61c6b19abff40ea7acd577be818f3976"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:s,event:a,state:c})=>s&&"opaqueredirect"===s.type?new Response(s.body,{status:200,statusText:"OK",headers:s.headers}):s}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;const s=e.pathname;return!s.startsWith("/api/auth/")&&!!s.startsWith("/api/")}),new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")}),new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>!(self.origin===e.origin)),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")})); //# sourceMappingURL=sw.js.map diff --git a/public/sw.js.map b/public/sw.js.map new file mode 100644 index 000000000..1abc33007 --- /dev/null +++ b/public/sw.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sw.js","sources":["../../../../private/var/folders/zt/3j76_p753k13rxwlfxqf08bm0000gn/T/a66bc3a4ca8d07d347f4a10814458e2f/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/Users/ildartimerbaev/Work2/ecency-vision-nextjs/node_modules/workbox-routing/registerRoute.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from '/Users/ildartimerbaev/Work2/ecency-vision-nextjs/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from '/Users/ildartimerbaev/Work2/ecency-vision-nextjs/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from '/Users/ildartimerbaev/Work2/ecency-vision-nextjs/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {StaleWhileRevalidate as workbox_strategies_StaleWhileRevalidate} from '/Users/ildartimerbaev/Work2/ecency-vision-nextjs/node_modules/workbox-strategies/StaleWhileRevalidate.mjs';\nimport {RangeRequestsPlugin as workbox_range_requests_RangeRequestsPlugin} from '/Users/ildartimerbaev/Work2/ecency-vision-nextjs/node_modules/workbox-range-requests/RangeRequestsPlugin.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/Users/ildartimerbaev/Work2/ecency-vision-nextjs/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/Users/ildartimerbaev/Work2/ecency-vision-nextjs/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/Users/ildartimerbaev/Work2/ecency-vision-nextjs/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\nimportScripts(\n \n);\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/_next/app-build-manifest.json\",\n \"revision\": \"a6a962bc6bb7f8714d7f5d91fedec5c1\"\n },\n {\n \"url\": \"/_next/static/43qb0fmjdiA7cJ0G44NJE/_buildManifest.js\",\n \"revision\": \"50e0e2eb6fd60572d559c7355937ad7a\"\n },\n {\n \"url\": \"/_next/static/43qb0fmjdiA7cJ0G44NJE/_ssgManifest.js\",\n \"revision\": \"b6652df95db52feb4daf4eca35380933\"\n },\n {\n \"url\": \"/_next/static/chunks/1172-ad9f20d8bf141020.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/1172-ad9f20d8bf141020.js.map\",\n \"revision\": \"946b0548f038e84570ae9fa7e5721bb6\"\n },\n {\n \"url\": \"/_next/static/chunks/13b76428-d2acc36217b02113.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/13b76428-d2acc36217b02113.js.map\",\n \"revision\": \"817b487c8152f1cd8fc123523a164b88\"\n },\n {\n \"url\": \"/_next/static/chunks/140-59e1e85757c58b6c.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/140-59e1e85757c58b6c.js.map\",\n \"revision\": \"9bfa6d0353e429d6ee761d4cb6872752\"\n },\n {\n \"url\": \"/_next/static/chunks/20-2da42408501837d6.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/20-2da42408501837d6.js.map\",\n \"revision\": \"4b4704383374798313b4ac4db20b11c3\"\n },\n {\n \"url\": \"/_next/static/chunks/210-032f7ba6bbc71393.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/210-032f7ba6bbc71393.js.map\",\n \"revision\": \"e7b60892a6f66691855462822025a60a\"\n },\n {\n \"url\": \"/_next/static/chunks/2315-48e9aba8c393f135.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/2315-48e9aba8c393f135.js.map\",\n \"revision\": \"9173a9594297565aacda53ff88ed0f56\"\n },\n {\n \"url\": \"/_next/static/chunks/2355-5d00d9eb5aeecc0f.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/2355-5d00d9eb5aeecc0f.js.map\",\n \"revision\": \"6756c17b81a0bd1fd5d885831f11b7e0\"\n },\n {\n \"url\": \"/_next/static/chunks/2763-8d4630a364f028ed.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/2763-8d4630a364f028ed.js.map\",\n \"revision\": \"1b2013f52de2deeb096e2e14af8e59b0\"\n },\n {\n \"url\": \"/_next/static/chunks/2793-8670113caf9ff07a.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/2793-8670113caf9ff07a.js.map\",\n \"revision\": \"061c5a14ea622ddd8441a3360294bc35\"\n },\n {\n \"url\": \"/_next/static/chunks/3305-3627605dea793125.js.map\",\n \"revision\": \"9b3f3fa03ba5c917aea547e793c58e6e\"\n },\n {\n \"url\": \"/_next/static/chunks/3aba9d11-c7f5d549a5dd3217.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/3aba9d11-c7f5d549a5dd3217.js.map\",\n \"revision\": \"acf37859977234434322da64ee09cc60\"\n },\n {\n \"url\": \"/_next/static/chunks/4218-18b188b22e91dc4c.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/4218-18b188b22e91dc4c.js.map\",\n \"revision\": \"7c2a1a403b4f70ff86a4d8932a605103\"\n },\n {\n \"url\": \"/_next/static/chunks/4351-14e2f26452a4452c.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/4351-14e2f26452a4452c.js.map\",\n \"revision\": \"91ff9dceed4616326e18c8ec6bca0b6d\"\n },\n {\n \"url\": \"/_next/static/chunks/4577-c719bd1a174b2613.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/4577-c719bd1a174b2613.js.map\",\n \"revision\": \"4c91ef4bc16af1bfbfdd5922781766bf\"\n },\n {\n \"url\": \"/_next/static/chunks/4638-8244e548db7b2567.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/4638-8244e548db7b2567.js.map\",\n \"revision\": \"49e790faa00aa4d93d8fe77e5ccd3fea\"\n },\n {\n \"url\": \"/_next/static/chunks/4824-403935e1585441cf.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/4824-403935e1585441cf.js.map\",\n \"revision\": \"1574e02610cfe7fff817810332c2fcf1\"\n },\n {\n \"url\": \"/_next/static/chunks/52271efe-5a4d5b99719e484a.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/52271efe-5a4d5b99719e484a.js.map\",\n \"revision\": \"2e1cabb80af85eda10678b66cce9e8a0\"\n },\n {\n \"url\": \"/_next/static/chunks/6107-c1e0619729746002.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/62c88095-37ae7f0d839cfa2a.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/62c88095-37ae7f0d839cfa2a.js.map\",\n \"revision\": \"7edb0c0ac3736db66e955f53391d9deb\"\n },\n {\n \"url\": \"/_next/static/chunks/6861-ac269338f84a6d9d.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/6861-ac269338f84a6d9d.js.map\",\n \"revision\": \"c15f486190ed114cb15462ea0ea34cc0\"\n },\n {\n \"url\": \"/_next/static/chunks/7177-44882b771abcc0ad.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/7177-44882b771abcc0ad.js.map\",\n \"revision\": \"562e25cf9874ec5a52f0179ccb405ab1\"\n },\n {\n \"url\": \"/_next/static/chunks/7497-60b5c772c8a78143.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/7497-60b5c772c8a78143.js.map\",\n \"revision\": \"fb24fd5a819ba5c72aba88fed5bc222f\"\n },\n {\n \"url\": \"/_next/static/chunks/77befd7b-107eabdeda9222c5.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/77befd7b-107eabdeda9222c5.js.map\",\n \"revision\": \"a1f4011257a1b785604c4d8407148d5b\"\n },\n {\n \"url\": \"/_next/static/chunks/8210-a4824c994485e46f.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/8210-a4824c994485e46f.js.map\",\n \"revision\": \"cc4c834da017a09c7da64d3934d51009\"\n },\n {\n \"url\": \"/_next/static/chunks/8470-aea377d85f455719.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/8470-aea377d85f455719.js.map\",\n \"revision\": \"74fd20cb5ff19a4869086bda69b0492b\"\n },\n {\n \"url\": \"/_next/static/chunks/964-77059b59fcdcdd91.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/964-77059b59fcdcdd91.js.map\",\n \"revision\": \"af57d502f0416835c2ec38575ea8df1e\"\n },\n {\n \"url\": \"/_next/static/chunks/9691.79c0c5b1248387bd.js\",\n \"revision\": \"79c0c5b1248387bd\"\n },\n {\n \"url\": \"/_next/static/chunks/9691.79c0c5b1248387bd.js.map\",\n \"revision\": \"5e1bd4e1885663eb12e63aef83952ffe\"\n },\n {\n \"url\": \"/_next/static/chunks/9706-53bcf38aa29ce2e2.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/9706-53bcf38aa29ce2e2.js.map\",\n \"revision\": \"9f8437448e8229f0cd1af48b60e54ece\"\n },\n {\n \"url\": \"/_next/static/chunks/9950-d2da862bfa1e2843.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/9950-d2da862bfa1e2843.js.map\",\n \"revision\": \"3506fe9e85a1b935edd0f48d934b4ad9\"\n },\n {\n \"url\": \"/_next/static/chunks/aaea2bcf-4a717eae8f750b29.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/aaea2bcf-4a717eae8f750b29.js.map\",\n \"revision\": \"70965ea1c6781f78892a71fc5b9b718c\"\n },\n {\n \"url\": \"/_next/static/chunks/app/%5B...slugs%5D/page-8e211517b1184505.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/%5B...slugs%5D/page-8e211517b1184505.js.map\",\n \"revision\": \"45c391a1cc7728d7b6f692822e0a9a44\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/about/page-e6f909cb0d30c785.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/about/page-e6f909cb0d30c785.js.map\",\n \"revision\": \"77d5060b1d7b8f5725f8aedc4d5bcc71\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/contributors/page-85af727945bb6018.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/contributors/page-85af727945bb6018.js.map\",\n \"revision\": \"c80d5b106a06184546f3f735e0db675b\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/faq/page-4f7958933857c96f.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/faq/page-4f7958933857c96f.js.map\",\n \"revision\": \"ad69b8a173b645768d2a05b3434089b0\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/guest-post/page-6b2e32d26fe4c4f2.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/privacy-policy/page-cb785a56586af55f.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/terms-of-service/page-01ec3ee6d705bf71.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/(staticPages)/whitepaper/page-a65d8e3327422df4.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/_not-found/page-baad026d81f54cad.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/auth/page-a3ed94810fdb0f6c.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/auth/page-a3ed94810fdb0f6c.js.map\",\n \"revision\": \"28d9d9b32e72646c8d346393b1420458\"\n },\n {\n \"url\": \"/_next/static/chunks/app/chats/%5B...params%5D/page-e63b7708bd2cd649.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/chats/%5B...params%5D/page-e63b7708bd2cd649.js.map\",\n \"revision\": \"a0f0756ed32011f8e8070862b21e180c\"\n },\n {\n \"url\": \"/_next/static/chunks/app/chats/page-ddfc3fbb914a4823.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/chats/page-ddfc3fbb914a4823.js.map\",\n \"revision\": \"b29891f248526659f18f95bbaa9fa6ea\"\n },\n {\n \"url\": \"/_next/static/chunks/app/communities/create-hs/page-4ceb99090b4c05cf.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/communities/create-hs/page-4ceb99090b4c05cf.js.map\",\n \"revision\": \"df34a46c36ba7c33ac6107352b2da285\"\n },\n {\n \"url\": \"/_next/static/chunks/app/communities/create/page-d25ee6527701dce9.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/communities/create/page-d25ee6527701dce9.js.map\",\n \"revision\": \"95edc121bff873e414cc2973c358b9f5\"\n },\n {\n \"url\": \"/_next/static/chunks/app/communities/layout-092522604fec4bda.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/communities/loading-bcdb7d4a59f3eb12.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/communities/loading-bcdb7d4a59f3eb12.js.map\",\n \"revision\": \"349de274778de4b1bd6539149c78d9b5\"\n },\n {\n \"url\": \"/_next/static/chunks/app/communities/page-347691c8c3e7c62d.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/communities/page-347691c8c3e7c62d.js.map\",\n \"revision\": \"ed0a5d89f0ae5513c73923963d149054\"\n },\n {\n \"url\": \"/_next/static/chunks/app/contribute/page-f62d6c309016c417.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/decks/page-d1ea037160ed9cef.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/decks/page-d1ea037160ed9cef.js.map\",\n \"revision\": \"9972d2d6ce895baed008233320a97396\"\n },\n {\n \"url\": \"/_next/static/chunks/app/discover/layout-c3cbd7630fd545b0.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/discover/layout-c3cbd7630fd545b0.js.map\",\n \"revision\": \"c39789c4410c731823d5cbac4a3db80d\"\n },\n {\n \"url\": \"/_next/static/chunks/app/discover/loading-840e58884aa0d856.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/discover/page-10f8a4d8305e59e2.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/discover/page-10f8a4d8305e59e2.js.map\",\n \"revision\": \"c43a6c22ebbae6381e9a7dbad48a6e16\"\n },\n {\n \"url\": \"/_next/static/chunks/app/draft/%5Bid%5D/page-89c164946f8b8055.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/draft/%5Bid%5D/page-89c164946f8b8055.js.map\",\n \"revision\": \"854e901f2eb57c4815502cc778f738da\"\n },\n {\n \"url\": \"/_next/static/chunks/app/global-error-9bbce337be31a63c.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/global-error-9bbce337be31a63c.js.map\",\n \"revision\": \"2f5c7427b91544fd7783bbfbecc13687\"\n },\n {\n \"url\": \"/_next/static/chunks/app/layout-1a0ce969654db0d7.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/layout-1a0ce969654db0d7.js.map\",\n \"revision\": \"7ab5543a570c4a62fba218abeb674f5d\"\n },\n {\n \"url\": \"/_next/static/chunks/app/market/advanced/page-cf3b7332e1bbec9f.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/market/advanced/page-cf3b7332e1bbec9f.js.map\",\n \"revision\": \"df2ea304571e1f34951e6122b1ad6482\"\n },\n {\n \"url\": \"/_next/static/chunks/app/market/limit/page-537899fcac2b70a6.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/market/limit/page-537899fcac2b70a6.js.map\",\n \"revision\": \"8dbd7f62fbf4a1619cd2ff3a84e1d0fd\"\n },\n {\n \"url\": \"/_next/static/chunks/app/market/page-8a82b7b11e07f2dc.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/market/swap/page-ddf66dc266ff6fe6.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/market/swap/page-ddf66dc266ff6fe6.js.map\",\n \"revision\": \"7ef59e8c408a58f0ff142a22485ddf4c\"\n },\n {\n \"url\": \"/_next/static/chunks/app/not-found-3bfaa559d0f9967c.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/onboard-friend/%5B...slugs%5D/page-be6c4590b6b2e018.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/onboard-friend/%5B...slugs%5D/page-be6c4590b6b2e018.js.map\",\n \"revision\": \"9f5ebf10c14e885db2589c277590adcb\"\n },\n {\n \"url\": \"/_next/static/chunks/app/page-8ec3b6eb22a7f7f1.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/page-8ec3b6eb22a7f7f1.js.map\",\n \"revision\": \"31da564017a5a9f85342f1aecf916744\"\n },\n {\n \"url\": \"/_next/static/chunks/app/perks/page-79e8ad3e8f8a1b6b.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/perks/page-79e8ad3e8f8a1b6b.js.map\",\n \"revision\": \"ffdfc95ca3ae922c77dfe14a8efb8527\"\n },\n {\n \"url\": \"/_next/static/chunks/app/proposals/%5Bid%5D/page-d7343276947cc03d.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/proposals/%5Bid%5D/page-d7343276947cc03d.js.map\",\n \"revision\": \"3f75cb03fe4942eb73fbab59cb0c107d\"\n },\n {\n \"url\": \"/_next/static/chunks/app/proposals/page-f8977a2936116049.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/proposals/page-f8977a2936116049.js.map\",\n \"revision\": \"fd381c1387ce70053c9cd93836204df9\"\n },\n {\n \"url\": \"/_next/static/chunks/app/purchase/page-a3a57dfe3937c464.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/purchase/page-a3a57dfe3937c464.js.map\",\n \"revision\": \"b3c734f7593d17d62701d3dcc44de0b2\"\n },\n {\n \"url\": \"/_next/static/chunks/app/search/page-444e2f57f4a0f8cd.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/search/page-444e2f57f4a0f8cd.js.map\",\n \"revision\": \"c3f6615e87d9711b4134d3db1e91f258\"\n },\n {\n \"url\": \"/_next/static/chunks/app/sentry-example-page/page-c617b43b7026b31d.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/sentry-example-page/page-c617b43b7026b31d.js.map\",\n \"revision\": \"99b6c79139c6c26457652dd826044ef1\"\n },\n {\n \"url\": \"/_next/static/chunks/app/signup/page-c728528330a1d31b.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/signup/page-c728528330a1d31b.js.map\",\n \"revision\": \"186e63718cf4bb89963f63618d28545a\"\n },\n {\n \"url\": \"/_next/static/chunks/app/submit/page-0607b437b7b1ee48.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/submit/page-0607b437b7b1ee48.js.map\",\n \"revision\": \"22a70d2cfe7fed19a9971bf26e62cdd6\"\n },\n {\n \"url\": \"/_next/static/chunks/app/witnesses/page-bfc06589a1aeb670.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/app/witnesses/page-bfc06589a1aeb670.js.map\",\n \"revision\": \"668406ad59a17ae32256e9167b97370a\"\n },\n {\n \"url\": \"/_next/static/chunks/c0e397d0-e22ccc2c99005a0b.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/c0e397d0-e22ccc2c99005a0b.js.map\",\n \"revision\": \"175b060da6f50c5c5a850adce9bf065a\"\n },\n {\n \"url\": \"/_next/static/chunks/eeac573e-4da49985bf57b2d2.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/eeac573e-4da49985bf57b2d2.js.map\",\n \"revision\": \"227d0dc5a7d231dfb9c505aae5abb3d0\"\n },\n {\n \"url\": \"/_next/static/chunks/fd9d1056-89e19dbc0b5597e4.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/fd9d1056-89e19dbc0b5597e4.js.map\",\n \"revision\": \"c46f7c66997c0a0bb21951a79f1dcd67\"\n },\n {\n \"url\": \"/_next/static/chunks/framework-16be1c6edad78e20.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/framework-16be1c6edad78e20.js.map\",\n \"revision\": \"2d604854235cddd4fefc8e2a9608bc44\"\n },\n {\n \"url\": \"/_next/static/chunks/main-9396040485ed63f2.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/main-9396040485ed63f2.js.map\",\n \"revision\": \"a714c2dd0991366abc6ff6125568d10c\"\n },\n {\n \"url\": \"/_next/static/chunks/main-app-4e3f659df64cc182.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/main-app-4e3f659df64cc182.js.map\",\n \"revision\": \"db5d66a88b9d791f6078f49d5a769623\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/_app-07f94c2109bd6030.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/_app-07f94c2109bd6030.js.map\",\n \"revision\": \"e0b23b5c79e0fa3401decc57a684b318\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/_error-afda92248358346b.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/_error-afda92248358346b.js.map\",\n \"revision\": \"60cac03fbcdacb633cd989b3fa637676\"\n },\n {\n \"url\": \"/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js\",\n \"revision\": \"79330112775102f91e1010318bae2bd3\"\n },\n {\n \"url\": \"/_next/static/chunks/public/assets/notification.7cf94838874c04af.mp3\",\n \"revision\": \"7cf94838874c04af\"\n },\n {\n \"url\": \"/_next/static/chunks/webpack-e299d4408a8d450c.js\",\n \"revision\": \"43qb0fmjdiA7cJ0G44NJE\"\n },\n {\n \"url\": \"/_next/static/chunks/webpack-e299d4408a8d450c.js.map\",\n \"revision\": \"69fe9a9d1be3e6a76f57123659323842\"\n },\n {\n \"url\": \"/_next/static/css/0367e37f6e3fd8b5.css\",\n \"revision\": \"0367e37f6e3fd8b5\"\n },\n {\n \"url\": \"/_next/static/css/0367e37f6e3fd8b5.css.map\",\n \"revision\": \"685704c3118ce786c692a89639088dc4\"\n },\n {\n \"url\": \"/_next/static/css/0f0cb42ad369f189.css\",\n \"revision\": \"0f0cb42ad369f189\"\n },\n {\n \"url\": \"/_next/static/css/0f0cb42ad369f189.css.map\",\n \"revision\": \"e348cab54670937c3cff082e74d94c80\"\n },\n {\n \"url\": \"/_next/static/css/36e67111d2af8b79.css\",\n \"revision\": \"36e67111d2af8b79\"\n },\n {\n \"url\": \"/_next/static/css/36e67111d2af8b79.css.map\",\n \"revision\": \"9ad055e7f4fd8fef8e379f12e56abf26\"\n },\n {\n \"url\": \"/_next/static/css/41f6b882bf5c3924.css\",\n \"revision\": \"41f6b882bf5c3924\"\n },\n {\n \"url\": \"/_next/static/css/41f6b882bf5c3924.css.map\",\n \"revision\": \"61db84570f7a5d906bb1515a1447e74d\"\n },\n {\n \"url\": \"/_next/static/css/432e5ee1e7ae8de4.css\",\n \"revision\": \"432e5ee1e7ae8de4\"\n },\n {\n \"url\": \"/_next/static/css/432e5ee1e7ae8de4.css.map\",\n \"revision\": \"df80e6a0c3981edc23c7e76fbd83f899\"\n },\n {\n \"url\": \"/_next/static/css/4d05f548331f3701.css\",\n \"revision\": \"4d05f548331f3701\"\n },\n {\n \"url\": \"/_next/static/css/4d05f548331f3701.css.map\",\n \"revision\": \"d51d2d43bbd60f6497b20f9409e42934\"\n },\n {\n \"url\": \"/_next/static/css/58517c4333c805e1.css\",\n \"revision\": \"58517c4333c805e1\"\n },\n {\n \"url\": \"/_next/static/css/58517c4333c805e1.css.map\",\n \"revision\": \"2667fcdefee5d76806b8bf7ca55fbc4c\"\n },\n {\n \"url\": \"/_next/static/css/7323b2715eb37cb0.css\",\n \"revision\": \"7323b2715eb37cb0\"\n },\n {\n \"url\": \"/_next/static/css/7323b2715eb37cb0.css.map\",\n \"revision\": \"d5d686dcdf16a9e9285e543f464580ff\"\n },\n {\n \"url\": \"/_next/static/css/7b05caa48ae3756e.css\",\n \"revision\": \"7b05caa48ae3756e\"\n },\n {\n \"url\": \"/_next/static/css/7b05caa48ae3756e.css.map\",\n \"revision\": \"0a3e94edfdb7e5f9797b6df970cd1892\"\n },\n {\n \"url\": \"/_next/static/css/8dd1898b14cd062a.css\",\n \"revision\": \"8dd1898b14cd062a\"\n },\n {\n \"url\": \"/_next/static/css/8dd1898b14cd062a.css.map\",\n \"revision\": \"57d0c3f1115a4846013f7649563da84f\"\n },\n {\n \"url\": \"/_next/static/css/987144c8088097c9.css\",\n \"revision\": \"987144c8088097c9\"\n },\n {\n \"url\": \"/_next/static/css/987144c8088097c9.css.map\",\n \"revision\": \"3b14adc2dbe95f3106a38430ee2562d5\"\n },\n {\n \"url\": \"/_next/static/css/a6acc34b57b7fdc5.css\",\n \"revision\": \"a6acc34b57b7fdc5\"\n },\n {\n \"url\": \"/_next/static/css/a6acc34b57b7fdc5.css.map\",\n \"revision\": \"204d67a1db2cd99dedd7bb3c82f281cd\"\n },\n {\n \"url\": \"/_next/static/css/af776ea049ea19f5.css\",\n \"revision\": \"af776ea049ea19f5\"\n },\n {\n \"url\": \"/_next/static/css/af776ea049ea19f5.css.map\",\n \"revision\": \"54b2acd3662f2ab8dda59203dc19d640\"\n },\n {\n \"url\": \"/_next/static/css/b2413520eb4669a5.css\",\n \"revision\": \"b2413520eb4669a5\"\n },\n {\n \"url\": \"/_next/static/css/b2413520eb4669a5.css.map\",\n \"revision\": \"f8bf711535ca417ca6a41bdb82e1899d\"\n },\n {\n \"url\": \"/_next/static/css/bad4927b0cd6fbf9.css\",\n \"revision\": \"bad4927b0cd6fbf9\"\n },\n {\n \"url\": \"/_next/static/css/bad4927b0cd6fbf9.css.map\",\n \"revision\": \"2274583fb76a3907c5dc6ec75d995d99\"\n },\n {\n \"url\": \"/_next/static/css/c3973b25e24d3d13.css\",\n \"revision\": \"c3973b25e24d3d13\"\n },\n {\n \"url\": \"/_next/static/css/c3973b25e24d3d13.css.map\",\n \"revision\": \"bdf6dc5e8905300a53f57f98806684bd\"\n },\n {\n \"url\": \"/_next/static/css/d422263a0a03c70c.css\",\n \"revision\": \"d422263a0a03c70c\"\n },\n {\n \"url\": \"/_next/static/css/d422263a0a03c70c.css.map\",\n \"revision\": \"d96e583d479afcce9db5b8640774d91b\"\n },\n {\n \"url\": \"/_next/static/css/de44a315f01b5b27.css\",\n \"revision\": \"de44a315f01b5b27\"\n },\n {\n \"url\": \"/_next/static/css/de44a315f01b5b27.css.map\",\n \"revision\": \"f87e6c7970ebf95c06d39ce079a19616\"\n },\n {\n \"url\": \"/_next/static/css/fc9a001cad273251.css\",\n \"revision\": \"fc9a001cad273251\"\n },\n {\n \"url\": \"/_next/static/css/fc9a001cad273251.css.map\",\n \"revision\": \"21f2d26bca641608727061f36202c222\"\n },\n {\n \"url\": \"/_next/static/media/arrow1-about.656281e6.png\",\n \"revision\": \"656281e6\"\n },\n {\n \"url\": \"/_next/static/media/arrow2-about.1b039bcc.png\",\n \"revision\": \"1b039bcc\"\n },\n {\n \"url\": \"/_next/static/media/arrow3-about.70f825ed.png\",\n \"revision\": \"70f825ed\"\n },\n {\n \"url\": \"/_next/static/media/back-clouds-down.4d526728.png\",\n \"revision\": \"4d526728\"\n },\n {\n \"url\": \"/_next/static/media/back-clouds-up.23f147d4.png\",\n \"revision\": \"23f147d4\"\n },\n {\n \"url\": \"/_next/static/media/cloud1-about.2cdc493a.png\",\n \"revision\": \"2cdc493a\"\n },\n {\n \"url\": \"/_next/static/media/cloud2-about.32fd33bd.png\",\n \"revision\": \"32fd33bd\"\n },\n {\n \"url\": \"/_next/static/media/fallback.d0906556.png\",\n \"revision\": \"8713aeba6805ef460b16fa081edd1887\"\n },\n {\n \"url\": \"/_next/static/media/index-bg.6a2f476b.png\",\n \"revision\": \"6a2f476b\"\n },\n {\n \"url\": \"/_next/static/media/logo-circle.9f6f8f1c.svg\",\n \"revision\": \"2df6f251431f9f36e1815e5b90ce1f8a\"\n },\n {\n \"url\": \"/_next/static/media/noimage.7dc5d3ff.svg\",\n \"revision\": \"68711d71516a091f18169b2882dc6035\"\n },\n {\n \"url\": \"/_next/static/media/noimage.f7ce9bd0.png\",\n \"revision\": \"f7ce9bd0\"\n },\n {\n \"url\": \"/_next/static/media/thumbnail-play.348281a6.jpg\",\n \"revision\": \"99d63c99267bf2e74e95d92bfb00a0ea\"\n },\n {\n \"url\": \"/assets/arrow1-about.png\",\n \"revision\": \"4340c5b200d5d51631f944aad1ee2b5e\"\n },\n {\n \"url\": \"/assets/arrow2-about.png\",\n \"revision\": \"a73b3fcfc161b35e762e52e1810612f9\"\n },\n {\n \"url\": \"/assets/arrow3-about.png\",\n \"revision\": \"6c58e88a02000b98b2f500275e173068\"\n },\n {\n \"url\": \"/assets/back-clouds-down.png\",\n \"revision\": \"12a7304745da678d47a0072132c810c1\"\n },\n {\n \"url\": \"/assets/back-clouds-up.png\",\n \"revision\": \"e56f90fa70a1fe82aebb5f997b823f28\"\n },\n {\n \"url\": \"/assets/bg-download-mob-dark.png\",\n \"revision\": \"8c9a7504cdb60835ef0d39b0f448571d\"\n },\n {\n \"url\": \"/assets/bg-download-mob-dark.webp\",\n \"revision\": \"6a8c212f5d2cb66f259a4a8aa3af3311\"\n },\n {\n \"url\": \"/assets/bg-download-mob-light.png\",\n \"revision\": \"d92057b43d7e4217175d35b944141645\"\n },\n {\n \"url\": \"/assets/bg-download-mob-light.webp\",\n \"revision\": \"a225c5595468ab97f62a03246753cce6\"\n },\n {\n \"url\": \"/assets/bg-download-tiny-dark.svg\",\n \"revision\": \"4dfcf8aaeeb8a52d21bb3525d541ed5b\"\n },\n {\n \"url\": \"/assets/bg-download-tiny.webp\",\n \"revision\": \"a0a4bfab2ddbad09183baf2afe07a616\"\n },\n {\n \"url\": \"/assets/bubble-center.png\",\n \"revision\": \"5606f7307c513e99f36699e10f23ccf9\"\n },\n {\n \"url\": \"/assets/bubble-center.webp\",\n \"revision\": \"ef695adcbbd8936ed59f350682e61397\"\n },\n {\n \"url\": \"/assets/bubble-left-bottom.png\",\n \"revision\": \"df2d82a18a6135cf028abbf11781da69\"\n },\n {\n \"url\": \"/assets/bubble-left-bottom.webp\",\n \"revision\": \"ed0725bf3ac081532ad28a113a25bb0e\"\n },\n {\n \"url\": \"/assets/bubble-left-top.png\",\n \"revision\": \"5485d77a530a6f998e1e0c95cc58d223\"\n },\n {\n \"url\": \"/assets/bubble-left-top.webp\",\n \"revision\": \"cf1c941f7f1bde7958ebc663e7dd2f14\"\n },\n {\n \"url\": \"/assets/bubble-right-bottom.png\",\n \"revision\": \"c34007e9b2e094b58d0ad9f149efe7a6\"\n },\n {\n \"url\": \"/assets/bubble-right-bottom.webp\",\n \"revision\": \"c2189eac8ac13d5a006194e4171148b4\"\n },\n {\n \"url\": \"/assets/bubble-right-top.png\",\n \"revision\": \"6401d7510d2dda133da4f77b8e5857c3\"\n },\n {\n \"url\": \"/assets/bubble-right-top.webp\",\n \"revision\": \"06037b88ba36932c52d5484a2db3c735\"\n },\n {\n \"url\": \"/assets/cloud1-about.png\",\n \"revision\": \"d66dc0e33618136110dc0a851f98f4cc\"\n },\n {\n \"url\": \"/assets/cloud1.png\",\n \"revision\": \"28c7c7b997fb3662e2d21549b32b2972\"\n },\n {\n \"url\": \"/assets/cloud2-about.png\",\n \"revision\": \"8774eb6432d37ac1ecf7deaea117e1a5\"\n },\n {\n \"url\": \"/assets/cloud2.png\",\n \"revision\": \"a66f13dbef7a3324ab1d105991295e00\"\n },\n {\n \"url\": \"/assets/cloud3.png\",\n \"revision\": \"8889d6546ce489ca120d960479fc04d1\"\n },\n {\n \"url\": \"/assets/coming-soon.png\",\n \"revision\": \"ef24f5a15258aaa3846af7089935bf0a\"\n },\n {\n \"url\": \"/assets/community-img.svg\",\n \"revision\": \"3fd1e229d9517bb74c4e4903d9109ded\"\n },\n {\n \"url\": \"/assets/cover-fallback-day.png\",\n \"revision\": \"595641ae8f1d3b74ee12ee0b8878a520\"\n },\n {\n \"url\": \"/assets/cover-fallback-night.png\",\n \"revision\": \"bb6096d6a3e471fa7a8f869562d340db\"\n },\n {\n \"url\": \"/assets/download-algae-dark.png\",\n \"revision\": \"8c70504a94da6e93f4ac1b27046eb939\"\n },\n {\n \"url\": \"/assets/download-algae-dark.webp\",\n \"revision\": \"89a79f1000ca9995a6e14cfc60fd42a9\"\n },\n {\n \"url\": \"/assets/download-algae.png\",\n \"revision\": \"2490f946a17ba1abe4456f0f31d850a3\"\n },\n {\n \"url\": \"/assets/download-algae.webp\",\n \"revision\": \"1d97c2b64cfd934481e18c49ec8e8722\"\n },\n {\n \"url\": \"/assets/download-dark-fishes.png\",\n \"revision\": \"537442c023e388e9e33a93c821094381\"\n },\n {\n \"url\": \"/assets/download-dark-fishes.webp\",\n \"revision\": \"a36ea49d16f9c4b1e2833c2f6bbc618f\"\n },\n {\n \"url\": \"/assets/dunsky.jpeg\",\n \"revision\": \"6af464219667bd1b7a8b05a3a3133cf4\"\n },\n {\n \"url\": \"/assets/dunsky.webp\",\n \"revision\": \"abb98406fd78ae7cbf1ccf61e6b0a8f2\"\n },\n {\n \"url\": \"/assets/ecency-faq.jpg\",\n \"revision\": \"e2d5d30d0cb4a5fc5e470c56d62ede97\"\n },\n {\n \"url\": \"/assets/ecency-faq.webp\",\n \"revision\": \"42faa678c7ef5854f9ed0c999f6ef7eb\"\n },\n {\n \"url\": \"/assets/fallback.png\",\n \"revision\": \"8713aeba6805ef460b16fa081edd1887\"\n },\n {\n \"url\": \"/assets/fish-1.png\",\n \"revision\": \"4386e9af02b5f60f75caa040eced9a65\"\n },\n {\n \"url\": \"/assets/fish-1.webp\",\n \"revision\": \"8f0eb1179c74579084353e5df5b2a74f\"\n },\n {\n \"url\": \"/assets/fish-2.png\",\n \"revision\": \"92ce36fc40b95aeb3475d081bba0d798\"\n },\n {\n \"url\": \"/assets/fish-2.webp\",\n \"revision\": \"fe0c99a9f185d8b2e94bd249e625cf27\"\n },\n {\n \"url\": \"/assets/fish-3.png\",\n \"revision\": \"89c59580c072f1dbf52ac03068f040f3\"\n },\n {\n \"url\": \"/assets/fish-3.webp\",\n \"revision\": \"b9c3a3cc1cd0329d74ddb62d3a4e4b43\"\n },\n {\n \"url\": \"/assets/fish-4.png\",\n \"revision\": \"b91622c6328bbba13847519e0356db62\"\n },\n {\n \"url\": \"/assets/fish-4.webp\",\n \"revision\": \"a404c3ef59a9581554c06188ee262419\"\n },\n {\n \"url\": \"/assets/fish-5.png\",\n \"revision\": \"b271e3992390713707dc08f01691fb52\"\n },\n {\n \"url\": \"/assets/fish-5.webp\",\n \"revision\": \"abb4e590246f17bd00a21f7b414872d3\"\n },\n {\n \"url\": \"/assets/fish-junior.png\",\n \"revision\": \"78924f1ba81f1f59dd9a144be923edb1\"\n },\n {\n \"url\": \"/assets/fish-junior.webp\",\n \"revision\": \"bcae2a76d249cad55891d24e41e73b0c\"\n },\n {\n \"url\": \"/assets/fish-senior.png\",\n \"revision\": \"f3327a9c9d166c9da097fcfe88f38ed3\"\n },\n {\n \"url\": \"/assets/fish-senior.webp\",\n \"revision\": \"c70cf25bd04d52decb151396c900dcb3\"\n },\n {\n \"url\": \"/assets/footer-discord.svg\",\n \"revision\": \"04238f73e8da0be200731a4cc285d00e\"\n },\n {\n \"url\": \"/assets/footer-main-fish.png\",\n \"revision\": \"ba3d7c5371e84bdf30f6dee4d086a156\"\n },\n {\n \"url\": \"/assets/footer-main-fish.webp\",\n \"revision\": \"ac45436a3109caf9f94a2cd00f681783\"\n },\n {\n \"url\": \"/assets/footer-telegram.svg\",\n \"revision\": \"796b996dc8082544484feb13a97aa014\"\n },\n {\n \"url\": \"/assets/footer-twitter.svg\",\n \"revision\": \"c44b68c3cdee7732ce516bc250f6f27c\"\n },\n {\n \"url\": \"/assets/footer-youtube.svg\",\n \"revision\": \"6f91ba3c2f20618d27c15bff5352aba6\"\n },\n {\n \"url\": \"/assets/github-cover.png\",\n \"revision\": \"5eaca17c4b526f9b352a87a5a82dbfe4\"\n },\n {\n \"url\": \"/assets/good-karma.jpeg\",\n \"revision\": \"a7bb11629694bd7f9bd2b16bf058bb6b\"\n },\n {\n \"url\": \"/assets/good-karma.webp\",\n \"revision\": \"9a449b33cf032238499916c25584f58d\"\n },\n {\n \"url\": \"/assets/hero-algae-dark.svg\",\n \"revision\": \"eaa27188f9a588164e731b9f4a8f8295\"\n },\n {\n \"url\": \"/assets/hero-algae-light.svg\",\n \"revision\": \"4efcd71e3e8f8574446eeaa7a7517e33\"\n },\n {\n \"url\": \"/assets/hero-fishes-dark.png\",\n \"revision\": \"f8d8e17b68e2ff1490202f8503d24770\"\n },\n {\n \"url\": \"/assets/hero-fishes.svg\",\n \"revision\": \"a6307454b1e0fc4bcb6d402c33a63c7f\"\n },\n {\n \"url\": \"/assets/hive-signer.svg\",\n \"revision\": \"579ae88263a03ea7c8c4a9ec4e8b67f7\"\n },\n {\n \"url\": \"/assets/icon-android-white.svg\",\n \"revision\": \"f7df8d801059a45a14d1e90864157b1f\"\n },\n {\n \"url\": \"/assets/icon-android.png\",\n \"revision\": \"606b1396c3fffa5dc0f1d074695fab49\"\n },\n {\n \"url\": \"/assets/icon-android.webp\",\n \"revision\": \"c6bd14c9917803f8f69c4557be95ad9e\"\n },\n {\n \"url\": \"/assets/icon-apple-white.svg\",\n \"revision\": \"e4de9f34c14e50ed4fd12847091c16d2\"\n },\n {\n \"url\": \"/assets/icon-apple.svg\",\n \"revision\": \"a27b1b4829e566dca6d38f7c2e6d6ba5\"\n },\n {\n \"url\": \"/assets/icon-windows-white.svg\",\n \"revision\": \"4553dd690e4675fc4fb2132732b1c43b\"\n },\n {\n \"url\": \"/assets/icon-windows.svg\",\n \"revision\": \"80669c801739c850306618a2569b423c\"\n },\n {\n \"url\": \"/assets/illustration-decentralization.png\",\n \"revision\": \"0ad91ae4e70f22e8be87345e73144cb3\"\n },\n {\n \"url\": \"/assets/illustration-decentralization.webp\",\n \"revision\": \"ed3442432df26760623ec58c715fdf43\"\n },\n {\n \"url\": \"/assets/illustration-earn-money.png\",\n \"revision\": \"e2a7951254764e3dabac0697d089a3c2\"\n },\n {\n \"url\": \"/assets/illustration-earn-money.webp\",\n \"revision\": \"58605a59b4c1f6321ef90d5ef21eac24\"\n },\n {\n \"url\": \"/assets/illustration-hero-day.png\",\n \"revision\": \"ca7c9fd189caa73616664823e45b737d\"\n },\n {\n \"url\": \"/assets/illustration-hero-day.webp\",\n \"revision\": \"66c0bb6d0864af304a4e1801c967c526\"\n },\n {\n \"url\": \"/assets/illustration-hero.png\",\n \"revision\": \"9e2e1a46dc78fb0635c054fcf2d27b67\"\n },\n {\n \"url\": \"/assets/illustration-hero.webp\",\n \"revision\": \"75c6cdf85d150e6512fd2b3d0e20e332\"\n },\n {\n \"url\": \"/assets/illustration-open-source.png\",\n \"revision\": \"6f20524696843277aca578db00f29e14\"\n },\n {\n \"url\": \"/assets/illustration-open-source.webp\",\n \"revision\": \"79bf861b3c83c7de1ac96d8a35c4827d\"\n },\n {\n \"url\": \"/assets/illustration-true-ownership.png\",\n \"revision\": \"005b4f456f8d341de75c8c7cb25d750c\"\n },\n {\n \"url\": \"/assets/illustration-true-ownership.webp\",\n \"revision\": \"a2819f44d481e3203270877dc89cf87c\"\n },\n {\n \"url\": \"/assets/index-bg.png\",\n \"revision\": \"0931098d955341c1458c653ef42c5bec\"\n },\n {\n \"url\": \"/assets/keychain.png\",\n \"revision\": \"b4a1776481ec1bce0cdcb654126ee449\"\n },\n {\n \"url\": \"/assets/left-fishes.png\",\n \"revision\": \"c98d0bac15e561c7e4ce226541f5ab1e\"\n },\n {\n \"url\": \"/assets/left-fishes.webp\",\n \"revision\": \"7e5f5cee88eafa722b9b2eadbede120d\"\n },\n {\n \"url\": \"/assets/like.png\",\n \"revision\": \"af5f38b521e1c06eece664d5a3f24cdd\"\n },\n {\n \"url\": \"/assets/logo-192x192.svg\",\n \"revision\": \"09f9b1ec26a43fedaf3c527d9992ea3b\"\n },\n {\n \"url\": \"/assets/logo-384x384.svg\",\n \"revision\": \"c33b1a087528562650bdc7f9bb1889b3\"\n },\n {\n \"url\": \"/assets/logo-512x512.svg\",\n \"revision\": \"e0eb6d6416139753e199cf627599ac40\"\n },\n {\n \"url\": \"/assets/logo-circle-santa.svg\",\n \"revision\": \"a08e76920a86e2749d74345d86797cc5\"\n },\n {\n \"url\": \"/assets/logo-circle.svg\",\n \"revision\": \"2df6f251431f9f36e1815e5b90ce1f8a\"\n },\n {\n \"url\": \"/assets/logo-small-transparent.png\",\n \"revision\": \"197b6e7934149c67237a38f145dfb860\"\n },\n {\n \"url\": \"/assets/noimage.png\",\n \"revision\": \"66290b70590324b996aa6c841a4f6bf1\"\n },\n {\n \"url\": \"/assets/noimage.svg\",\n \"revision\": \"68711d71516a091f18169b2882dc6035\"\n },\n {\n \"url\": \"/assets/notification.mp3\",\n \"revision\": \"594e6e429f66513a2bc759fce6c1abc7\"\n },\n {\n \"url\": \"/assets/nsfw.png\",\n \"revision\": \"2e103d3e107e2974025b441b5fde485a\"\n },\n {\n \"url\": \"/assets/our-history.png\",\n \"revision\": \"730ae7e9850b787ea78d6151391ca463\"\n },\n {\n \"url\": \"/assets/our-history.webp\",\n \"revision\": \"f781b93801170a83acde5cf23bf538f4\"\n },\n {\n \"url\": \"/assets/our-team.png\",\n \"revision\": \"dc4a40a5f543e793462caf5c19d89f2f\"\n },\n {\n \"url\": \"/assets/our-team.webp\",\n \"revision\": \"ca3d13a54a5ba9e7e7df7af748c3a23a\"\n },\n {\n \"url\": \"/assets/our-vision.png\",\n \"revision\": \"acb541b415884dfce4b061ad21ce1b06\"\n },\n {\n \"url\": \"/assets/our-vision.webp\",\n \"revision\": \"bfe56f6816dade138c59010d69a8f83f\"\n },\n {\n \"url\": \"/assets/phone-dark-pc.png\",\n \"revision\": \"ba94fb9341a0303a8f6068ade064b0cb\"\n },\n {\n \"url\": \"/assets/phone-dark-pc.webp\",\n \"revision\": \"beef47eb0f0d9e6708e172b2138c48ab\"\n },\n {\n \"url\": \"/assets/phone-dark-tablet.png\",\n \"revision\": \"2358c7d62d813d3422a5af8bebb2be2e\"\n },\n {\n \"url\": \"/assets/phone-dark-tablet.webp\",\n \"revision\": \"c42d66f8c5c1999a648e6bb6a1a81227\"\n },\n {\n \"url\": \"/assets/phone-download-tiny.png\",\n \"revision\": \"0247b2bb16c64d46e4d8a73f60f4d501\"\n },\n {\n \"url\": \"/assets/phone-download-tiny.webp\",\n \"revision\": \"7120bd905eb5e5acbc866bd42058ba4c\"\n },\n {\n \"url\": \"/assets/phone-download.png\",\n \"revision\": \"54650a95d8ce20a2e03b68f0d6389201\"\n },\n {\n \"url\": \"/assets/phone-light-pc.png\",\n \"revision\": \"7bbef75c3da1d2a8e742b484292e6379\"\n },\n {\n \"url\": \"/assets/phone-light-pc.webp\",\n \"revision\": \"4a5839bf3499ef6687f1a798c683d7a1\"\n },\n {\n \"url\": \"/assets/phone-light-tablet.png\",\n \"revision\": \"49724acf6a25fedcd914ce0125517b8a\"\n },\n {\n \"url\": \"/assets/phone-light-tablet.webp\",\n \"revision\": \"7f448063c46119c5a7f0880f01b1814d\"\n },\n {\n \"url\": \"/assets/reward.png\",\n \"revision\": \"0faea76d5486dc7f637486da769fdad8\"\n },\n {\n \"url\": \"/assets/rewarding-and-freespeech.png\",\n \"revision\": \"ca1fc97612079d93de24bfb3ab6e0ea9\"\n },\n {\n \"url\": \"/assets/rewarding-and-freespeech.svg\",\n \"revision\": \"2df6f251431f9f36e1815e5b90ce1f8a\"\n },\n {\n \"url\": \"/assets/signup.png\",\n \"revision\": \"1ceacafe5770ed4f53829de572c9d219\"\n },\n {\n \"url\": \"/assets/svg.tsx\",\n \"revision\": \"2f1d7fbc25f8166e5b49e8997a803842\"\n },\n {\n \"url\": \"/assets/talhasch.jpeg\",\n \"revision\": \"9abb1df5ddbfd25e7fd72b0a4e202eff\"\n },\n {\n \"url\": \"/assets/talhasch.webp\",\n \"revision\": \"6e7e49e9ba1da71ecf46f0bb17c986c3\"\n },\n {\n \"url\": \"/assets/thumbnail-play.jpg\",\n \"revision\": \"99d63c99267bf2e74e95d92bfb00a0ea\"\n },\n {\n \"url\": \"/assets/writer-thinking.png\",\n \"revision\": \"03deb40c2a35de193e78c0e0d3d72a0e\"\n },\n {\n \"url\": \"/assets/writer.png\",\n \"revision\": \"00feab482a3f5309cce64ce9ca64041a\"\n },\n {\n \"url\": \"/firebase-messaging-sw.js\",\n \"revision\": \"db67bd2ec72e44b813ccabeb1ebb113f\"\n },\n {\n \"url\": \"/manifest.json\",\n \"revision\": \"3547aead3cd7bbd2b2ab3b7e23355d84\"\n },\n {\n \"url\": \"/next.svg\",\n \"revision\": \"8e061864f388b47f33a1c3780831193e\"\n },\n {\n \"url\": \"/vercel.svg\",\n \"revision\": \"61c6b19abff40ea7acd577be818f3976\"\n }\n], {\n \"ignoreURLParametersMatching\": []\n});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\nworkbox_routing_registerRoute(\"/\", new workbox_strategies_NetworkFirst({ \"cacheName\":\"start-url\", plugins: [{ cacheWillUpdate: async ({ request, response, event, state }) => { if (response && response.type === 'opaqueredirect') { return new Response(response.body, { status: 200, statusText: 'OK', headers: response.headers }) } return response } }] }), 'GET');\nworkbox_routing_registerRoute(/^https:\\/\\/fonts\\.(?:gstatic)\\.com\\/.*/i, new workbox_strategies_CacheFirst({ \"cacheName\":\"google-fonts-webfonts\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 31536000 })] }), 'GET');\nworkbox_routing_registerRoute(/^https:\\/\\/fonts\\.(?:googleapis)\\.com\\/.*/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"google-fonts-stylesheets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-font-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-image-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\/_next\\/image\\?url=.+$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"next-image\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:mp3|wav|ogg)$/i, new workbox_strategies_CacheFirst({ \"cacheName\":\"static-audio-assets\", plugins: [new workbox_range_requests_RangeRequestsPlugin(), new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:mp4)$/i, new workbox_strategies_CacheFirst({ \"cacheName\":\"static-video-assets\", plugins: [new workbox_range_requests_RangeRequestsPlugin(), new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:js)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-js-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:css|less)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-style-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\/_next\\/data\\/.+\\/.+\\.json$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"next-data\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:json|xml|csv)$/i, new workbox_strategies_NetworkFirst({ \"cacheName\":\"static-data-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(({ url }) => {\n const isSameOrigin = self.origin === url.origin\n if (!isSameOrigin) return false\n const pathname = url.pathname\n // Exclude /api/auth/callback/* to fix OAuth workflow in Safari without impact other environment\n // Above route is default for next-auth, you may need to change it if your OAuth workflow has a different callback route\n // Issue: https://github.com/shadowwalker/next-pwa/issues/131#issuecomment-821894809\n if (pathname.startsWith('/api/auth/')) return false\n if (pathname.startsWith('/api/')) return true\n return false\n }, new workbox_strategies_NetworkFirst({ \"cacheName\":\"apis\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 16, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(({ url }) => {\n const isSameOrigin = self.origin === url.origin\n if (!isSameOrigin) return false\n const pathname = url.pathname\n if (pathname.startsWith('/api/')) return false\n return true\n }, new workbox_strategies_NetworkFirst({ \"cacheName\":\"others\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(({ url }) => {\n const isSameOrigin = self.origin === url.origin\n return !isSameOrigin\n }, new workbox_strategies_NetworkFirst({ \"cacheName\":\"cross-origin\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 3600 })] }), 'GET');\n\n\n\n\n"],"names":["importScripts","self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","workbox_strategies_NetworkFirst","cacheName","plugins","cacheWillUpdate","async","request","response","event","state","type","Response","body","status","statusText","headers","workbox_strategies_CacheFirst","workbox_expiration_ExpirationPlugin","maxEntries","maxAgeSeconds","workbox_strategies_StaleWhileRevalidate","workbox_range_requests_RangeRequestsPlugin","origin","pathname","startsWith","networkTimeoutSeconds"],"mappings":"0nBAqBAA,gBAUAC,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,yBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,yBAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,yBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,yBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,yBAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,yBAEd,CACED,IAAO,4EACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,yBAEd,CACED,IAAO,mFACPC,SAAY,oCAEd,CACED,IAAO,sEACPC,SAAY,yBAEd,CACED,IAAO,0EACPC,SAAY,oCAEd,CACED,IAAO,6EACPC,SAAY,yBAEd,CACED,IAAO,iFACPC,SAAY,yBAEd,CACED,IAAO,mFACPC,SAAY,yBAEd,CACED,IAAO,6EACPC,SAAY,yBAEd,CACED,IAAO,+DACPC,SAAY,yBAEd,CACED,IAAO,yDACPC,SAAY,yBAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,0EACPC,SAAY,yBAEd,CACED,IAAO,8EACPC,SAAY,oCAEd,CACED,IAAO,0DACPC,SAAY,yBAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,0EACPC,SAAY,yBAEd,CACED,IAAO,8EACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,yBAEd,CACED,IAAO,2EACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,yBAEd,CACED,IAAO,mEACPC,SAAY,yBAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,yBAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,yBAEd,CACED,IAAO,0DACPC,SAAY,yBAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,yBAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,yBAEd,CACED,IAAO,6DACPC,SAAY,yBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,yBAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,yBAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,yBAEd,CACED,IAAO,0DACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,yBAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,yBAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,yBAEd,CACED,IAAO,gEACPC,SAAY,yBAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,yBAEd,CACED,IAAO,kFACPC,SAAY,yBAEd,CACED,IAAO,sFACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,0DACPC,SAAY,yBAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,yBAEd,CACED,IAAO,2EACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,yBAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,yBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,yBAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,yBAEd,CACED,IAAO,4EACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,yBAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,yBAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,yBAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,yBAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,yBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,yBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,yBAEd,CACED,IAAO,0DACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,yBAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,yBAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,YAEd,CACED,IAAO,gDACPC,SAAY,YAEd,CACED,IAAO,gDACPC,SAAY,YAEd,CACED,IAAO,oDACPC,SAAY,YAEd,CACED,IAAO,kDACPC,SAAY,YAEd,CACED,IAAO,gDACPC,SAAY,YAEd,CACED,IAAO,gDACPC,SAAY,YAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,YAEd,CACED,IAAO,+CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,YAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAA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"} \ No newline at end of file diff --git a/public/workbox-9b4d2a02.js.map b/public/workbox-9b4d2a02.js.map new file mode 100644 index 000000000..502502488 --- /dev/null +++ b/public/workbox-9b4d2a02.js.map @@ -0,0 +1 @@ +{"version":3,"file":"workbox-9b4d2a02.js","sources":["node_modules/workbox-core/_version.js","node_modules/workbox-core/_private/logger.js","node_modules/workbox-core/models/messages/messageGenerator.js","node_modules/workbox-core/_private/WorkboxError.js","node_modules/workbox-routing/_version.js","node_modules/workbox-routing/utils/constants.js","node_modules/workbox-routing/utils/normalizeHandler.js","node_modules/workbox-routing/Route.js","node_modules/workbox-routing/RegExpRoute.js","node_modules/workbox-routing/Router.js","node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","node_modules/workbox-routing/registerRoute.js","node_modules/workbox-strategies/_version.js","node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js","node_modules/workbox-core/_private/cacheNames.js","node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","node_modules/workbox-core/_private/Deferred.js","node_modules/workbox-core/models/quotaErrorCallbacks.js","node_modules/workbox-strategies/StrategyHandler.js","node_modules/workbox-core/_private/timeout.js","node_modules/workbox-core/_private/getFriendlyURL.js","node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","node_modules/workbox-strategies/Strategy.js","node_modules/workbox-core/_private/dontWaitFor.js","node_modules/idb/build/wrap-idb-value.js","node_modules/idb/build/index.js","node_modules/workbox-expiration/_version.js","node_modules/workbox-expiration/models/CacheTimestampsModel.js","node_modules/workbox-expiration/CacheExpiration.js","node_modules/workbox-range-requests/_version.js","node_modules/workbox-range-requests/createPartialResponse.js","node_modules/workbox-range-requests/utils/parseRangeHeader.js","node_modules/workbox-range-requests/utils/calculateEffectiveBoundaries.js","node_modules/workbox-core/_private/waitUntil.js","node_modules/workbox-precaching/_version.js","node_modules/workbox-precaching/utils/createCacheKey.js","node_modules/workbox-precaching/utils/PrecacheInstallReportPlugin.js","node_modules/workbox-precaching/utils/PrecacheCacheKeyPlugin.js","node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","node_modules/workbox-core/copyResponse.js","node_modules/workbox-precaching/PrecacheStrategy.js","node_modules/workbox-precaching/PrecacheController.js","node_modules/workbox-precaching/PrecacheRoute.js","node_modules/workbox-precaching/utils/generateURLVariations.js","node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","node_modules/workbox-strategies/CacheFirst.js","node_modules/workbox-expiration/ExpirationPlugin.js","node_modules/workbox-core/registerQuotaErrorCallback.js","node_modules/workbox-strategies/NetworkFirst.js","node_modules/workbox-range-requests/RangeRequestsPlugin.js","node_modules/workbox-strategies/StaleWhileRevalidate.js","node_modules/workbox-precaching/cleanupOutdatedCaches.js","node_modules/workbox-precaching/utils/deleteOutdatedCaches.js","node_modules/workbox-core/clientsClaim.js","node_modules/workbox-precaching/precacheAndRoute.js","node_modules/workbox-precaching/precache.js","node_modules/workbox-precaching/addRoute.js"],"sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:6.6.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst logger = (process.env.NODE_ENV === 'production'\n ? null\n : (() => {\n // Don't overwrite this value if it's already set.\n // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n if (!('__WB_DISABLE_DEV_LOGS' in globalThis)) {\n self.__WB_DISABLE_DEV_LOGS = false;\n }\n let inGroup = false;\n const methodToColorMap = {\n debug: `#7f8c8d`,\n log: `#2ecc71`,\n warn: `#f39c12`,\n error: `#c0392b`,\n groupCollapsed: `#3498db`,\n groupEnd: null, // No colored prefix on groupEnd\n };\n const print = function (method, args) {\n if (self.__WB_DISABLE_DEV_LOGS) {\n return;\n }\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n console[method](...logPrefix, ...args);\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/ban-types\n const api = {};\n const loggerMethods = Object.keys(methodToColorMap);\n for (const key of loggerMethods) {\n const method = key;\n api[method] = (...args) => {\n print(method, args);\n };\n }\n return api;\n })());\nexport { logger };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = process.env.NODE_ENV === 'production' ? fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:6.6.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof workbox-routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {workbox-routing~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method = defaultMethod) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n /**\n *\n * @param {workbox-routing-handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response\n */\n setCatchHandler(handler) {\n this.catchHandler = normalizeHandler(handler);\n }\n}\nexport { Route };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * {@link workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * @memberof workbox-routing\n * @extends workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regular expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * the captured values will be passed to the\n * {@link workbox-routing~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if (url.origin !== location.origin && result.index !== 0) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` +\n `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a `FetchEvent` using one or more\n * {@link workbox-routing.Route}, responding with a `Response` if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (event.data && event.data.type === 'CACHE_URLS') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event, }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([`Found a route to handle this request:`, route]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`,\n params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise &&\n (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event, }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if (matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call {@link workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|workbox-routing.Route~matchCallback|workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {workbox-routing.Route} The generated `Route`.\n *\n * @memberof workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http')\n ? captureUrl.pathname\n : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if (new RegExp(`${wildcards}`).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (url.pathname === captureUrl.pathname &&\n url.origin !== captureUrl.origin) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url.toString()}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\n else if (capture instanceof RegExp) {\n // If `capture` is a `RegExp` then `handler` and `method` must be present.\n route = new RegExpRoute(capture, handler, method);\n }\n else if (typeof capture === 'function') {\n // If `capture` is a function then `handler` and `method` must be present.\n route = new Route(capture, handler, method);\n }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:6.6.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nexport const cacheOkAndOpaquePlugin = {\n /**\n * Returns a valid response (to allow caching) if the status is 200 (OK) or\n * 0 (opaque).\n *\n * @param {Object} options\n * @param {Response} options.response\n * @return {Response|null}\n *\n * @private\n */\n cacheWillUpdate: async ({ response }) => {\n if (response.status === 200 || response.status === 0) {\n return response;\n }\n return null;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n const strippedURL = new URL(fullURL);\n for (const param of ignoreParams) {\n strippedURL.searchParams.delete(param);\n }\n return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array} ignoreParams\n * @return {Promise}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n const strippedRequestURL = stripParams(request.url, ignoreParams);\n // If the request doesn't include any ignored params, match as normal.\n if (request.url === strippedRequestURL) {\n return cache.match(request, matchOptions);\n }\n // Otherwise, match by comparing keys\n const keysOptions = Object.assign(Object.assign({}, matchOptions), { ignoreSearch: true });\n const cacheKeys = await cache.keys(request, keysOptions);\n for (const cacheKey of cacheKeys) {\n const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n if (strippedRequestURL === strippedCacheKeyURL) {\n return cache.match(cacheKey, matchOptions);\n }\n }\n return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nexport { Deferred };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\n// Can't change Function type right now.\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n return typeof input === 'string' ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * {@link workbox-strategies.Strategy~handle} or\n * {@link workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof workbox-strategies\n */\nclass StrategyHandler {\n /**\n * Creates a new instance associated with the passed strategy and event\n * that's handling the request.\n *\n * The constructor also initializes the state that will be passed to each of\n * the plugins handling this request.\n *\n * @param {workbox-strategies.Strategy} strategy\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params] The return value from the\n * {@link workbox-routing~matchCallback} (if applicable).\n */\n constructor(strategy, options) {\n this._cacheKeys = {};\n /**\n * The request the strategy is performing (passed to the strategy's\n * `handle()` or `handleAll()` method).\n * @name request\n * @instance\n * @type {Request}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * The event associated with this request.\n * @name event\n * @instance\n * @type {ExtendableEvent}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `URL` instance of `request.url` (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `url` param will be present if the strategy was invoked\n * from a workbox `Route` object.\n * @name url\n * @instance\n * @type {URL|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `param` value (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `param` param will be present if the strategy was invoked\n * from a workbox `Route` object and the\n * {@link workbox-routing~matchCallback} returned\n * a truthy value (it will be that value).\n * @name params\n * @instance\n * @type {*|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(options.event, ExtendableEvent, {\n moduleName: 'workbox-strategies',\n className: 'StrategyHandler',\n funcName: 'constructor',\n paramName: 'options.event',\n });\n }\n Object.assign(this, options);\n this.event = options.event;\n this._strategy = strategy;\n this._handlerDeferred = new Deferred();\n this._extendLifetimePromises = [];\n // Copy the plugins list (since it's mutable on the strategy),\n // so any mutations don't affect this handler instance.\n this._plugins = [...strategy.plugins];\n this._pluginStateMap = new Map();\n for (const plugin of this._plugins) {\n this._pluginStateMap.set(plugin, {});\n }\n this.event.waitUntil(this._handlerDeferred.promise);\n }\n /**\n * Fetches a given request (and invokes any applicable plugin callback\n * methods) using the `fetchOptions` (for non-navigation requests) and\n * `plugins` defined on the `Strategy` object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - `requestWillFetch()`\n * - `fetchDidSucceed()`\n * - `fetchDidFail()`\n *\n * @param {Request|string} input The URL or request to fetch.\n * @return {Promise}\n */\n async fetch(input) {\n const { event } = this;\n let request = toRequest(input);\n if (request.mode === 'navigate' &&\n event instanceof FetchEvent &&\n event.preloadResponse) {\n const possiblePreloadResponse = (await event.preloadResponse);\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = this.hasCallback('fetchDidFail')\n ? request.clone()\n : null;\n try {\n for (const cb of this.iterateCallbacks('requestWillFetch')) {\n request = await cb({ request: request.clone(), event });\n }\n }\n catch (err) {\n if (err instanceof Error) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownErrorMessage: err.message,\n });\n }\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (most likely from a `fetch` event) different\n // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n fetchResponse = await fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions);\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n fetchResponse = await callback({\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n // `originalRequest` will only exist if a `fetchDidFail` callback\n // is being used (see above).\n if (originalRequest) {\n await this.runCallbacks('fetchDidFail', {\n error: error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n }\n /**\n * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n * the response generated by `this.fetch()`.\n *\n * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n * so you do not have to manually call `waitUntil()` on the event.\n *\n * @param {Request|string} input The request or URL to fetch and cache.\n * @return {Promise}\n */\n async fetchAndCachePut(input) {\n const response = await this.fetch(input);\n const responseClone = response.clone();\n void this.waitUntil(this.cachePut(input, responseClone));\n return response;\n }\n /**\n * Matches a request from the cache (and invokes any applicable plugin\n * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n * defined on the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cachedResponseWillByUsed()\n *\n * @param {Request|string} key The Request or URL to use as the cache key.\n * @return {Promise} A matching response, if found.\n */\n async cacheMatch(key) {\n const request = toRequest(key);\n let cachedResponse;\n const { cacheName, matchOptions } = this._strategy;\n const effectiveRequest = await this.getCacheKey(request, 'read');\n const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { cacheName });\n cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n cachedResponse =\n (await callback({\n cacheName,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n event: this.event,\n })) || undefined;\n }\n return cachedResponse;\n }\n /**\n * Puts a request/response pair in the cache (and invokes any applicable\n * plugin callback methods) using the `cacheName` and `plugins` defined on\n * the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cacheWillUpdate()\n * - cacheDidUpdate()\n *\n * @param {Request|string} key The request or URL to use as the cache key.\n * @param {Response} response The response to cache.\n * @return {Promise} `false` if a cacheWillUpdate caused the response\n * not be cached, and `true` otherwise.\n */\n async cachePut(key, response) {\n const request = toRequest(key);\n // Run in the next task to avoid blocking other cache reads.\n // https://github.com/w3c/ServiceWorker/issues/1397\n await timeout(0);\n const effectiveRequest = await this.getCacheKey(request, 'write');\n if (process.env.NODE_ENV !== 'production') {\n if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(effectiveRequest.url),\n method: effectiveRequest.method,\n });\n }\n // See https://github.com/GoogleChrome/workbox/issues/2818\n const vary = response.headers.get('Vary');\n if (vary) {\n logger.debug(`The response for ${getFriendlyURL(effectiveRequest.url)} ` +\n `has a 'Vary: ${vary}' header. ` +\n `Consider setting the {ignoreVary: true} option on your strategy ` +\n `to ensure cache matching and deletion works as expected.`);\n }\n }\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await this._ensureResponseSafeToCache(response);\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n `will not be cached.`, responseToCache);\n }\n return false;\n }\n const { cacheName, matchOptions } = this._strategy;\n const cache = await self.caches.open(cacheName);\n const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n const oldResponse = hasCacheUpdateCallback\n ? await cacheMatchIgnoreParams(\n // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n // feature. Consider into ways to only add this behavior if using\n // precaching.\n cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions)\n : null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n `for ${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache);\n }\n catch (error) {\n if (error instanceof Error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n }\n for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n await callback({\n cacheName,\n oldResponse,\n newResponse: responseToCache.clone(),\n request: effectiveRequest,\n event: this.event,\n });\n }\n return true;\n }\n /**\n * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n * executes any of those callbacks found in sequence. The final `Request`\n * object returned by the last plugin is treated as the cache key for cache\n * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n * been registered, the passed request is returned unmodified\n *\n * @param {Request} request\n * @param {string} mode\n * @return {Promise}\n */\n async getCacheKey(request, mode) {\n const key = `${request.url} | ${mode}`;\n if (!this._cacheKeys[key]) {\n let effectiveRequest = request;\n for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n effectiveRequest = toRequest(await callback({\n mode,\n request: effectiveRequest,\n event: this.event,\n // params has a type any can't change right now.\n params: this.params, // eslint-disable-line\n }));\n }\n this._cacheKeys[key] = effectiveRequest;\n }\n return this._cacheKeys[key];\n }\n /**\n * Returns true if the strategy has at least one plugin with the given\n * callback.\n *\n * @param {string} name The name of the callback to check for.\n * @return {boolean}\n */\n hasCallback(name) {\n for (const plugin of this._strategy.plugins) {\n if (name in plugin) {\n return true;\n }\n }\n return false;\n }\n /**\n * Runs all plugin callbacks matching the given name, in order, passing the\n * given param object (merged ith the current plugin state) as the only\n * argument.\n *\n * Note: since this method runs all plugins, it's not suitable for cases\n * where the return value of a callback needs to be applied prior to calling\n * the next callback. See\n * {@link workbox-strategies.StrategyHandler#iterateCallbacks}\n * below for how to handle that case.\n *\n * @param {string} name The name of the callback to run within each plugin.\n * @param {Object} param The object to pass as the first (and only) param\n * when executing each callback. This object will be merged with the\n * current plugin state prior to callback execution.\n */\n async runCallbacks(name, param) {\n for (const callback of this.iterateCallbacks(name)) {\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n await callback(param);\n }\n }\n /**\n * Accepts a callback and returns an iterable of matching plugin callbacks,\n * where each callback is wrapped with the current handler state (i.e. when\n * you call each callback, whatever object parameter you pass it will\n * be merged with the plugin's current state).\n *\n * @param {string} name The name fo the callback to run\n * @return {Array}\n */\n *iterateCallbacks(name) {\n for (const plugin of this._strategy.plugins) {\n if (typeof plugin[name] === 'function') {\n const state = this._pluginStateMap.get(plugin);\n const statefulCallback = (param) => {\n const statefulParam = Object.assign(Object.assign({}, param), { state });\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n return plugin[name](statefulParam);\n };\n yield statefulCallback;\n }\n }\n }\n /**\n * Adds a promise to the\n * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n * of the event event associated with the request being handled (usually a\n * `FetchEvent`).\n *\n * Note: you can await\n * {@link workbox-strategies.StrategyHandler~doneWaiting}\n * to know when all added promises have settled.\n *\n * @param {Promise} promise A promise to add to the extend lifetime promises\n * of the event that triggered the request.\n */\n waitUntil(promise) {\n this._extendLifetimePromises.push(promise);\n return promise;\n }\n /**\n * Returns a promise that resolves once all promises passed to\n * {@link workbox-strategies.StrategyHandler~waitUntil}\n * have settled.\n *\n * Note: any work done after `doneWaiting()` settles should be manually\n * passed to an event's `waitUntil()` method (not this handler's\n * `waitUntil()` method), otherwise the service worker thread my be killed\n * prior to your work completing.\n */\n async doneWaiting() {\n let promise;\n while ((promise = this._extendLifetimePromises.shift())) {\n await promise;\n }\n }\n /**\n * Stops running the strategy and immediately resolves any pending\n * `waitUntil()` promises.\n */\n destroy() {\n this._handlerDeferred.resolve(null);\n }\n /**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Request} options.request\n * @param {Response} options.response\n * @return {Promise}\n *\n * @private\n */\n async _ensureResponseSafeToCache(response) {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n responseToCache =\n (await callback({\n request: this.request,\n response: responseToCache,\n event: this.event,\n })) || undefined;\n pluginsUsed = true;\n if (!responseToCache) {\n break;\n }\n }\n if (!pluginsUsed) {\n if (responseToCache && responseToCache.status !== 200) {\n responseToCache = undefined;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${this.request.url}' ` +\n `is an opaque response. The caching strategy that you're ` +\n `using will not cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${this.request.url}' ` +\n `returned a status code of '${response.status}' and won't ` +\n `be cached as a result.`);\n }\n }\n }\n }\n }\n return responseToCache;\n }\n}\nexport { StrategyHandler };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof workbox-strategies\n */\nclass Strategy {\n /**\n * Creates a new instance of the strategy and sets all documented option\n * properties as public instance properties.\n *\n * Note: if a custom strategy class extends the base Strategy class and does\n * not need more than these properties, it does not need to define its own\n * constructor.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n */\n constructor(options = {}) {\n /**\n * Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n *\n * @type {string}\n */\n this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n /**\n * The list\n * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * used by this strategy.\n *\n * @type {Array}\n */\n this.plugins = options.plugins || [];\n /**\n * Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n *\n * @type {Object}\n */\n this.fetchOptions = options.fetchOptions;\n /**\n * The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n *\n * @type {Object}\n */\n this.matchOptions = options.matchOptions;\n }\n /**\n * Perform a request strategy and returns a `Promise` that will resolve with\n * a `Response`, invoking all relevant plugin callbacks.\n *\n * When a strategy instance is registered with a Workbox\n * {@link workbox-routing.Route}, this method is automatically\n * called when the route matches.\n *\n * Alternatively, this method can be used in a standalone `FetchEvent`\n * listener by passing it to `event.respondWith()`.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n */\n handle(options) {\n const [responseDone] = this.handleAll(options);\n return responseDone;\n }\n /**\n * Similar to {@link workbox-strategies.Strategy~handle}, but\n * instead of just returning a `Promise` that resolves to a `Response` it\n * it will return an tuple of `[response, done]` promises, where the former\n * (`response`) is equivalent to what `handle()` returns, and the latter is a\n * Promise that will resolve once any promises that were added to\n * `event.waitUntil()` as part of performing the strategy have completed.\n *\n * You can await the `done` promise to ensure any extra work performed by\n * the strategy (usually caching responses) completes successfully.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * @return {Array} A tuple of [response, done]\n * promises that can be used to determine when the response resolves as\n * well as when the handler has completed all its work.\n */\n handleAll(options) {\n // Allow for flexible options to be passed.\n if (options instanceof FetchEvent) {\n options = {\n event: options,\n request: options.request,\n };\n }\n const event = options.event;\n const request = typeof options.request === 'string'\n ? new Request(options.request)\n : options.request;\n const params = 'params' in options ? options.params : undefined;\n const handler = new StrategyHandler(this, { event, request, params });\n const responseDone = this._getResponse(handler, request, event);\n const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n // Return an array of promises, suitable for use with Promise.all().\n return [responseDone, handlerDone];\n }\n async _getResponse(handler, request, event) {\n await handler.runCallbacks('handlerWillStart', { event, request });\n let response = undefined;\n try {\n response = await this._handle(request, handler);\n // The \"official\" Strategy subclasses all throw this error automatically,\n // but in case a third-party Strategy doesn't, ensure that we have a\n // consistent failure when there's no response or an error response.\n if (!response || response.type === 'error') {\n throw new WorkboxError('no-response', { url: request.url });\n }\n }\n catch (error) {\n if (error instanceof Error) {\n for (const callback of handler.iterateCallbacks('handlerDidError')) {\n response = await callback({ error, event, request });\n if (response) {\n break;\n }\n }\n }\n if (!response) {\n throw error;\n }\n else if (process.env.NODE_ENV !== 'production') {\n logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` +\n `a handlerDidError plugin.`);\n }\n }\n for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n response = await callback({ event, request, response });\n }\n return response;\n }\n async _awaitComplete(responseDone, handler, request, event) {\n let response;\n let error;\n try {\n response = await responseDone;\n }\n catch (error) {\n // Ignore errors, as response errors should be caught via the `response`\n // promise above. The `done` promise will only throw for errors in\n // promises passed to `handler.waitUntil()`.\n }\n try {\n await handler.runCallbacks('handlerDidRespond', {\n event,\n request,\n response,\n });\n await handler.doneWaiting();\n }\n catch (waitUntilError) {\n if (waitUntilError instanceof Error) {\n error = waitUntilError;\n }\n }\n await handler.runCallbacks('handlerDidComplete', {\n event,\n request,\n response,\n error: error,\n });\n handler.destroy();\n if (error) {\n throw error;\n }\n }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the {@link workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {workbox-strategies.StrategyHandler} handler\n * @return {Promise}\n *\n * @memberof workbox-strategies.Strategy\n */\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A helper function that prevents a promise from being flagged as unused.\n *\n * @private\n **/\nexport function dontWaitFor(promise) {\n // Effective no-op.\n void promise.then(() => { });\n}\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:expiration:6.6.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { openDB, deleteDB } from 'idb';\nimport '../_version.js';\nconst DB_NAME = 'workbox-expiration';\nconst CACHE_OBJECT_STORE = 'cache-entries';\nconst normalizeURL = (unNormalizedUrl) => {\n const url = new URL(unNormalizedUrl, location.href);\n url.hash = '';\n return url.href;\n};\n/**\n * Returns the timestamp model.\n *\n * @private\n */\nclass CacheTimestampsModel {\n /**\n *\n * @param {string} cacheName\n *\n * @private\n */\n constructor(cacheName) {\n this._db = null;\n this._cacheName = cacheName;\n }\n /**\n * Performs an upgrade of indexedDB.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDb(db) {\n // TODO(philipwalton): EdgeHTML doesn't support arrays as a keyPath, so we\n // have to use the `id` keyPath here and create our own values (a\n // concatenation of `url + cacheName`) instead of simply using\n // `keyPath: ['url', 'cacheName']`, which is supported in other browsers.\n const objStore = db.createObjectStore(CACHE_OBJECT_STORE, { keyPath: 'id' });\n // TODO(philipwalton): once we don't have to support EdgeHTML, we can\n // create a single index with the keyPath `['cacheName', 'timestamp']`\n // instead of doing both these indexes.\n objStore.createIndex('cacheName', 'cacheName', { unique: false });\n objStore.createIndex('timestamp', 'timestamp', { unique: false });\n }\n /**\n * Performs an upgrade of indexedDB and deletes deprecated DBs.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDbAndDeleteOldDbs(db) {\n this._upgradeDb(db);\n if (this._cacheName) {\n void deleteDB(this._cacheName);\n }\n }\n /**\n * @param {string} url\n * @param {number} timestamp\n *\n * @private\n */\n async setTimestamp(url, timestamp) {\n url = normalizeURL(url);\n const entry = {\n url,\n timestamp,\n cacheName: this._cacheName,\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n id: this._getId(url),\n };\n const db = await this.getDb();\n const tx = db.transaction(CACHE_OBJECT_STORE, 'readwrite', {\n durability: 'relaxed',\n });\n await tx.store.put(entry);\n await tx.done;\n }\n /**\n * Returns the timestamp stored for a given URL.\n *\n * @param {string} url\n * @return {number | undefined}\n *\n * @private\n */\n async getTimestamp(url) {\n const db = await this.getDb();\n const entry = await db.get(CACHE_OBJECT_STORE, this._getId(url));\n return entry === null || entry === void 0 ? void 0 : entry.timestamp;\n }\n /**\n * Iterates through all the entries in the object store (from newest to\n * oldest) and removes entries once either `maxCount` is reached or the\n * entry's timestamp is less than `minTimestamp`.\n *\n * @param {number} minTimestamp\n * @param {number} maxCount\n * @return {Array}\n *\n * @private\n */\n async expireEntries(minTimestamp, maxCount) {\n const db = await this.getDb();\n let cursor = await db\n .transaction(CACHE_OBJECT_STORE)\n .store.index('timestamp')\n .openCursor(null, 'prev');\n const entriesToDelete = [];\n let entriesNotDeletedCount = 0;\n while (cursor) {\n const result = cursor.value;\n // TODO(philipwalton): once we can use a multi-key index, we\n // won't have to check `cacheName` here.\n if (result.cacheName === this._cacheName) {\n // Delete an entry if it's older than the max age or\n // if we already have the max number allowed.\n if ((minTimestamp && result.timestamp < minTimestamp) ||\n (maxCount && entriesNotDeletedCount >= maxCount)) {\n // TODO(philipwalton): we should be able to delete the\n // entry right here, but doing so causes an iteration\n // bug in Safari stable (fixed in TP). Instead we can\n // store the keys of the entries to delete, and then\n // delete the separate transactions.\n // https://github.com/GoogleChrome/workbox/issues/1978\n // cursor.delete();\n // We only need to return the URL, not the whole entry.\n entriesToDelete.push(cursor.value);\n }\n else {\n entriesNotDeletedCount++;\n }\n }\n cursor = await cursor.continue();\n }\n // TODO(philipwalton): once the Safari bug in the following issue is fixed,\n // we should be able to remove this loop and do the entry deletion in the\n // cursor loop above:\n // https://github.com/GoogleChrome/workbox/issues/1978\n const urlsDeleted = [];\n for (const entry of entriesToDelete) {\n await db.delete(CACHE_OBJECT_STORE, entry.id);\n urlsDeleted.push(entry.url);\n }\n return urlsDeleted;\n }\n /**\n * Takes a URL and returns an ID that will be unique in the object store.\n *\n * @param {string} url\n * @return {string}\n *\n * @private\n */\n _getId(url) {\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n return this._cacheName + '|' + normalizeURL(url);\n }\n /**\n * Returns an open connection to the database.\n *\n * @private\n */\n async getDb() {\n if (!this._db) {\n this._db = await openDB(DB_NAME, 1, {\n upgrade: this._upgradeDbAndDeleteOldDbs.bind(this),\n });\n }\n return this._db;\n }\n}\nexport { CacheTimestampsModel };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheTimestampsModel } from './models/CacheTimestampsModel.js';\nimport './_version.js';\n/**\n * The `CacheExpiration` class allows you define an expiration and / or\n * limit on the number of responses stored in a\n * [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache).\n *\n * @memberof workbox-expiration\n */\nclass CacheExpiration {\n /**\n * To construct a new CacheExpiration instance you must provide at least\n * one of the `config` properties.\n *\n * @param {string} cacheName Name of the cache to apply restrictions to.\n * @param {Object} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n */\n constructor(cacheName, config = {}) {\n this._isRunning = false;\n this._rerunRequested = false;\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'cacheName',\n });\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._maxEntries = config.maxEntries;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._matchOptions = config.matchOptions;\n this._cacheName = cacheName;\n this._timestampModel = new CacheTimestampsModel(cacheName);\n }\n /**\n * Expires entries for the given cache and given criteria.\n */\n async expireEntries() {\n if (this._isRunning) {\n this._rerunRequested = true;\n return;\n }\n this._isRunning = true;\n const minTimestamp = this._maxAgeSeconds\n ? Date.now() - this._maxAgeSeconds * 1000\n : 0;\n const urlsExpired = await this._timestampModel.expireEntries(minTimestamp, this._maxEntries);\n // Delete URLs from the cache\n const cache = await self.caches.open(this._cacheName);\n for (const url of urlsExpired) {\n await cache.delete(url, this._matchOptions);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (urlsExpired.length > 0) {\n logger.groupCollapsed(`Expired ${urlsExpired.length} ` +\n `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` +\n `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` +\n `'${this._cacheName}' cache.`);\n logger.log(`Expired the following ${urlsExpired.length === 1 ? 'URL' : 'URLs'}:`);\n urlsExpired.forEach((url) => logger.log(` ${url}`));\n logger.groupEnd();\n }\n else {\n logger.debug(`Cache expiration ran and found no entries to remove.`);\n }\n }\n this._isRunning = false;\n if (this._rerunRequested) {\n this._rerunRequested = false;\n dontWaitFor(this.expireEntries());\n }\n }\n /**\n * Update the timestamp for the given URL. This ensures the when\n * removing entries based on maximum entries, most recently used\n * is accurate or when expiring, the timestamp is up-to-date.\n *\n * @param {string} url\n */\n async updateTimestamp(url) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(url, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'updateTimestamp',\n paramName: 'url',\n });\n }\n await this._timestampModel.setTimestamp(url, Date.now());\n }\n /**\n * Can be used to check if a URL has expired or not before it's used.\n *\n * This requires a look up from IndexedDB, so can be slow.\n *\n * Note: This method will not remove the cached entry, call\n * `expireEntries()` to remove indexedDB and Cache entries.\n *\n * @param {string} url\n * @return {boolean}\n */\n async isURLExpired(url) {\n if (!this._maxAgeSeconds) {\n if (process.env.NODE_ENV !== 'production') {\n throw new WorkboxError(`expired-test-without-max-age`, {\n methodName: 'isURLExpired',\n paramName: 'maxAgeSeconds',\n });\n }\n return false;\n }\n else {\n const timestamp = await this._timestampModel.getTimestamp(url);\n const expireOlderThan = Date.now() - this._maxAgeSeconds * 1000;\n return timestamp !== undefined ? timestamp < expireOlderThan : true;\n }\n }\n /**\n * Removes the IndexedDB object store used to keep track of cache expiration\n * metadata.\n */\n async delete() {\n // Make sure we don't attempt another rerun if we're called in the middle of\n // a cache expiration.\n this._rerunRequested = false;\n await this._timestampModel.expireEntries(Infinity); // Expires all.\n }\n}\nexport { CacheExpiration };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:range-requests:6.6.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { calculateEffectiveBoundaries } from './utils/calculateEffectiveBoundaries.js';\nimport { parseRangeHeader } from './utils/parseRangeHeader.js';\nimport './_version.js';\n/**\n * Given a `Request` and `Response` objects as input, this will return a\n * promise for a new `Response`.\n *\n * If the original `Response` already contains partial content (i.e. it has\n * a status of 206), then this assumes it already fulfills the `Range:`\n * requirements, and will return it as-is.\n *\n * @param {Request} request A request, which should contain a Range:\n * header.\n * @param {Response} originalResponse A response.\n * @return {Promise} Either a `206 Partial Content` response, with\n * the response body set to the slice of content specified by the request's\n * `Range:` header, or a `416 Range Not Satisfiable` response if the\n * conditions of the `Range:` header can't be met.\n *\n * @memberof workbox-range-requests\n */\nasync function createPartialResponse(request, originalResponse) {\n try {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-range-requests',\n funcName: 'createPartialResponse',\n paramName: 'request',\n });\n assert.isInstance(originalResponse, Response, {\n moduleName: 'workbox-range-requests',\n funcName: 'createPartialResponse',\n paramName: 'originalResponse',\n });\n }\n if (originalResponse.status === 206) {\n // If we already have a 206, then just pass it through as-is;\n // see https://github.com/GoogleChrome/workbox/issues/1720\n return originalResponse;\n }\n const rangeHeader = request.headers.get('range');\n if (!rangeHeader) {\n throw new WorkboxError('no-range-header');\n }\n const boundaries = parseRangeHeader(rangeHeader);\n const originalBlob = await originalResponse.blob();\n const effectiveBoundaries = calculateEffectiveBoundaries(originalBlob, boundaries.start, boundaries.end);\n const slicedBlob = originalBlob.slice(effectiveBoundaries.start, effectiveBoundaries.end);\n const slicedBlobSize = slicedBlob.size;\n const slicedResponse = new Response(slicedBlob, {\n // Status code 206 is for a Partial Content response.\n // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206\n status: 206,\n statusText: 'Partial Content',\n headers: originalResponse.headers,\n });\n slicedResponse.headers.set('Content-Length', String(slicedBlobSize));\n slicedResponse.headers.set('Content-Range', `bytes ${effectiveBoundaries.start}-${effectiveBoundaries.end - 1}/` +\n `${originalBlob.size}`);\n return slicedResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to construct a partial response; returning a ` +\n `416 Range Not Satisfiable response instead.`);\n logger.groupCollapsed(`View details here.`);\n logger.log(error);\n logger.log(request);\n logger.log(originalResponse);\n logger.groupEnd();\n }\n return new Response('', {\n status: 416,\n statusText: 'Range Not Satisfiable',\n });\n }\n}\nexport { createPartialResponse };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {string} rangeHeader A Range: header value.\n * @return {Object} An object with `start` and `end` properties, reflecting\n * the parsed value of the Range: header. If either the `start` or `end` are\n * omitted, then `null` will be returned.\n *\n * @private\n */\nfunction parseRangeHeader(rangeHeader) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(rangeHeader, 'string', {\n moduleName: 'workbox-range-requests',\n funcName: 'parseRangeHeader',\n paramName: 'rangeHeader',\n });\n }\n const normalizedRangeHeader = rangeHeader.trim().toLowerCase();\n if (!normalizedRangeHeader.startsWith('bytes=')) {\n throw new WorkboxError('unit-must-be-bytes', { normalizedRangeHeader });\n }\n // Specifying multiple ranges separate by commas is valid syntax, but this\n // library only attempts to handle a single, contiguous sequence of bytes.\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range#Syntax\n if (normalizedRangeHeader.includes(',')) {\n throw new WorkboxError('single-range-only', { normalizedRangeHeader });\n }\n const rangeParts = /(\\d*)-(\\d*)/.exec(normalizedRangeHeader);\n // We need either at least one of the start or end values.\n if (!rangeParts || !(rangeParts[1] || rangeParts[2])) {\n throw new WorkboxError('invalid-range-values', { normalizedRangeHeader });\n }\n return {\n start: rangeParts[1] === '' ? undefined : Number(rangeParts[1]),\n end: rangeParts[2] === '' ? undefined : Number(rangeParts[2]),\n };\n}\nexport { parseRangeHeader };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {Blob} blob A source blob.\n * @param {number} [start] The offset to use as the start of the\n * slice.\n * @param {number} [end] The offset to use as the end of the slice.\n * @return {Object} An object with `start` and `end` properties, reflecting\n * the effective boundaries to use given the size of the blob.\n *\n * @private\n */\nfunction calculateEffectiveBoundaries(blob, start, end) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(blob, Blob, {\n moduleName: 'workbox-range-requests',\n funcName: 'calculateEffectiveBoundaries',\n paramName: 'blob',\n });\n }\n const blobSize = blob.size;\n if ((end && end > blobSize) || (start && start < 0)) {\n throw new WorkboxError('range-not-satisfiable', {\n size: blobSize,\n end,\n start,\n });\n }\n let effectiveStart;\n let effectiveEnd;\n if (start !== undefined && end !== undefined) {\n effectiveStart = start;\n // Range values are inclusive, so add 1 to the value.\n effectiveEnd = end + 1;\n }\n else if (start !== undefined && end === undefined) {\n effectiveStart = start;\n effectiveEnd = blobSize;\n }\n else if (end !== undefined && start === undefined) {\n effectiveStart = blobSize - end;\n effectiveEnd = blobSize;\n }\n return {\n start: effectiveStart,\n end: effectiveEnd,\n };\n}\nexport { calculateEffectiveBoundaries };\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A utility method that makes it easier to use `event.waitUntil` with\n * async functions and return the result.\n *\n * @param {ExtendableEvent} event\n * @param {Function} asyncFn\n * @return {Function}\n * @private\n */\nfunction waitUntil(event, asyncFn) {\n const returnPromise = asyncFn();\n event.waitUntil(returnPromise);\n return returnPromise;\n}\nexport { waitUntil };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:6.6.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const originalURL = new URL(url, location.href);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to determine the\n * of assets that were updated (or not updated) during the install event.\n *\n * @private\n */\nclass PrecacheInstallReportPlugin {\n constructor() {\n this.updatedURLs = [];\n this.notUpdatedURLs = [];\n this.handlerWillStart = async ({ request, state, }) => {\n // TODO: `state` should never be undefined...\n if (state) {\n state.originalRequest = request;\n }\n };\n this.cachedResponseWillBeUsed = async ({ event, state, cachedResponse, }) => {\n if (event.type === 'install') {\n if (state &&\n state.originalRequest &&\n state.originalRequest instanceof Request) {\n // TODO: `state` should never be undefined...\n const url = state.originalRequest.url;\n if (cachedResponse) {\n this.notUpdatedURLs.push(url);\n }\n else {\n this.updatedURLs.push(url);\n }\n }\n }\n return cachedResponse;\n };\n }\n}\nexport { PrecacheInstallReportPlugin };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to translate URLs into\n * the corresponding cache key, based on the current revision info.\n *\n * @private\n */\nclass PrecacheCacheKeyPlugin {\n constructor({ precacheController }) {\n this.cacheKeyWillBeUsed = async ({ request, params, }) => {\n // Params is type any, can't change right now.\n /* eslint-disable */\n const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) ||\n this._precacheController.getCacheKeyForURL(request.url);\n /* eslint-enable */\n return cacheKey\n ? new Request(cacheKey, { headers: request.headers })\n : request;\n };\n this._precacheController = precacheController;\n }\n}\nexport { PrecacheCacheKeyPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nlet supportStatus;\n/**\n * A utility function that determines whether the current browser supports\n * constructing a new `Response` from a `response.body` stream.\n *\n * @return {boolean} `true`, if the current browser can successfully\n * construct a `Response` from a `response.body` stream, `false` otherwise.\n *\n * @private\n */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { canConstructResponseFromBodyStream } from './_private/canConstructResponseFromBodyStream.js';\nimport { WorkboxError } from './_private/WorkboxError.js';\nimport './_version.js';\n/**\n * Allows developers to copy a response and modify its `headers`, `status`,\n * or `statusText` values (the values settable via a\n * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}\n * object in the constructor).\n * To modify these values, pass a function as the second argument. That\n * function will be invoked with a single object with the response properties\n * `{headers, status, statusText}`. The return value of this function will\n * be used as the `ResponseInit` for the new `Response`. To change the values\n * either modify the passed parameter(s) and return it, or return a totally\n * new object.\n *\n * This method is intentionally limited to same-origin responses, regardless of\n * whether CORS was used or not.\n *\n * @param {Response} response\n * @param {Function} modifier\n * @memberof workbox-core\n */\nasync function copyResponse(response, modifier) {\n let origin = null;\n // If response.url isn't set, assume it's cross-origin and keep origin null.\n if (response.url) {\n const responseURL = new URL(response.url);\n origin = responseURL.origin;\n }\n if (origin !== self.location.origin) {\n throw new WorkboxError('cross-origin-copy-response', { origin });\n }\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // Create the new response from the body stream and `ResponseInit`\n // modifications. Note: not all browsers support the Response.body stream,\n // so fall back to reading the entire body into memory as a blob.\n const body = canConstructResponseFromBodyStream()\n ? clonedResponse.body\n : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from 'workbox-strategies/Strategy.js';\nimport './_version.js';\n/**\n * A {@link workbox-strategies.Strategy} implementation\n * specifically designed to work with\n * {@link workbox-precaching.PrecacheController}\n * to both cache and fetch precached assets.\n *\n * Note: an instance of this class is created automatically when creating a\n * `PrecacheController`; it's generally not necessary to create this yourself.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-precaching\n */\nclass PrecacheStrategy extends Strategy {\n /**\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] {@link https://developers.google.com/web/tools/workbox/guides/using-plugins|Plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters|init}\n * of all fetch() requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * {@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions|CacheQueryOptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor(options = {}) {\n options.cacheName = cacheNames.getPrecacheName(options.cacheName);\n super(options);\n this._fallbackToNetwork =\n options.fallbackToNetwork === false ? false : true;\n // Redirected responses cannot be used to satisfy a navigation request, so\n // any redirected response must be \"copied\" rather than cloned, so the new\n // response doesn't contain the `redirected` flag. See:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const response = await handler.cacheMatch(request);\n if (response) {\n return response;\n }\n // If this is an `install` event for an entry that isn't already cached,\n // then populate the cache.\n if (handler.event && handler.event.type === 'install') {\n return await this._handleInstall(request, handler);\n }\n // Getting here means something went wrong. An entry that should have been\n // precached wasn't found in the cache.\n return await this._handleFetch(request, handler);\n }\n async _handleFetch(request, handler) {\n let response;\n const params = (handler.params || {});\n // Fall back to the network if we're configured to do so.\n if (this._fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` +\n `found. Falling back to the network.`);\n }\n const integrityInManifest = params.integrity;\n const integrityInRequest = request.integrity;\n const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest;\n // Do not add integrity if the original request is no-cors\n // See https://github.com/GoogleChrome/workbox/issues/3096\n response = await handler.fetch(new Request(request, {\n integrity: request.mode !== 'no-cors'\n ? integrityInRequest || integrityInManifest\n : undefined,\n }));\n // It's only \"safe\" to repair the cache if we're using SRI to guarantee\n // that the response matches the precache manifest's expectations,\n // and there's either a) no integrity property in the incoming request\n // or b) there is an integrity, and it matches the precache manifest.\n // See https://github.com/GoogleChrome/workbox/issues/2858\n // Also if the original request users no-cors we don't use integrity.\n // See https://github.com/GoogleChrome/workbox/issues/3096\n if (integrityInManifest &&\n noIntegrityConflict &&\n request.mode !== 'no-cors') {\n this._useDefaultCacheabilityPluginIfNeeded();\n const wasCached = await handler.cachePut(request, response.clone());\n if (process.env.NODE_ENV !== 'production') {\n if (wasCached) {\n logger.log(`A response for ${getFriendlyURL(request.url)} ` +\n `was used to \"repair\" the precache.`);\n }\n }\n }\n }\n else {\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this.cacheName,\n url: request.url,\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read'));\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url));\n logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n }\n return response;\n }\n async _handleInstall(request, handler) {\n this._useDefaultCacheabilityPluginIfNeeded();\n const response = await handler.fetch(request);\n // Make sure we defer cachePut() until after we know the response\n // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737\n const wasCached = await handler.cachePut(request, response.clone());\n if (!wasCached) {\n // Throwing here will lead to the `install` handler failing, which\n // we want to do if *any* of the responses aren't safe to cache.\n throw new WorkboxError('bad-precaching-response', {\n url: request.url,\n status: response.status,\n });\n }\n return response;\n }\n /**\n * This method is complex, as there a number of things to account for:\n *\n * The `plugins` array can be set at construction, and/or it might be added to\n * to at any time before the strategy is used.\n *\n * At the time the strategy is used (i.e. during an `install` event), there\n * needs to be at least one plugin that implements `cacheWillUpdate` in the\n * array, other than `copyRedirectedCacheableResponsesPlugin`.\n *\n * - If this method is called and there are no suitable `cacheWillUpdate`\n * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.\n *\n * - If this method is called and there is exactly one `cacheWillUpdate`, then\n * we don't have to do anything (this might be a previously added\n * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).\n *\n * - If this method is called and there is more than one `cacheWillUpdate`,\n * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,\n * we need to remove it. (This situation is unlikely, but it could happen if\n * the strategy is used multiple times, the first without a `cacheWillUpdate`,\n * and then later on after manually adding a custom `cacheWillUpdate`.)\n *\n * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.\n *\n * @private\n */\n _useDefaultCacheabilityPluginIfNeeded() {\n let defaultPluginIndex = null;\n let cacheWillUpdatePluginCount = 0;\n for (const [index, plugin] of this.plugins.entries()) {\n // Ignore the copy redirected plugin when determining what to do.\n if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {\n continue;\n }\n // Save the default plugin's index, in case it needs to be removed.\n if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {\n defaultPluginIndex = index;\n }\n if (plugin.cacheWillUpdate) {\n cacheWillUpdatePluginCount++;\n }\n }\n if (cacheWillUpdatePluginCount === 0) {\n this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);\n }\n else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {\n // Only remove the default plugin; multiple custom plugins are allowed.\n this.plugins.splice(defaultPluginIndex, 1);\n }\n // Nothing needs to be done if cacheWillUpdatePluginCount is 1\n }\n}\nPrecacheStrategy.defaultPrecacheCacheabilityPlugin = {\n async cacheWillUpdate({ response }) {\n if (!response || response.status >= 400) {\n return null;\n }\n return response;\n },\n};\nPrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {\n async cacheWillUpdate({ response }) {\n return response.redirected ? await copyResponse(response) : response;\n },\n};\nexport { PrecacheStrategy };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { waitUntil } from 'workbox-core/_private/waitUntil.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { PrecacheInstallReportPlugin } from './utils/PrecacheInstallReportPlugin.js';\nimport { PrecacheCacheKeyPlugin } from './utils/PrecacheCacheKeyPlugin.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport { PrecacheStrategy } from './PrecacheStrategy.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] The cache to use for precaching.\n * @param {string} [options.plugins] Plugins to use when precaching as well\n * as responding to fetch events for precached assets.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor({ cacheName, plugins = [], fallbackToNetwork = true, } = {}) {\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n this._strategy = new PrecacheStrategy({\n cacheName: cacheNames.getPrecacheName(cacheName),\n plugins: [\n ...plugins,\n new PrecacheCacheKeyPlugin({ precacheController: this }),\n ],\n fallbackToNetwork,\n });\n // Bind the install and activate methods to the instance.\n this.install = this.install.bind(this);\n this.activate = this.activate.bind(this);\n }\n /**\n * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and\n * used to cache assets and respond to fetch events.\n */\n get strategy() {\n return this._strategy;\n }\n /**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n */\n precache(entries) {\n this.addToCacheList(entries);\n if (!this._installAndActiveListenersAdded) {\n self.addEventListener('install', this.install);\n self.addEventListener('activate', this.activate);\n this._installAndActiveListenersAdded = true;\n }\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {Array} entries\n * Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\n if (process.env.NODE_ENV === 'production') {\n // Use console directly to display this warning without bloating\n // bundle sizes by pulling in all of the logger codebase in prod.\n console.warn(warningMessage);\n }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n install(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const installReportPlugin = new PrecacheInstallReportPlugin();\n this.strategy.plugins.push(installReportPlugin);\n // Cache entries one at a time.\n // See https://github.com/GoogleChrome/workbox/issues/2528\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n await Promise.all(this.strategy.handleAll({\n params: { cacheKey },\n request,\n event,\n }));\n }\n const { updatedURLs, notUpdatedURLs } = installReportPlugin;\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, notUpdatedURLs);\n }\n return { updatedURLs, notUpdatedURLs };\n });\n }\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n activate(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const cache = await self.caches.open(this.strategy.cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n });\n }\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * @param {string} url A cache key whose SRI you want to look up.\n * @return {string} The subresource integrity associated with the cache key,\n * or undefined if it's not set.\n */\n getIntegrityForCacheKey(cacheKey) {\n return this._cacheKeysToIntegrities.get(cacheKey);\n }\n /**\n * This acts as a drop-in replacement for\n * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n * with the following differences:\n *\n * - It knows what the name of the precache is, and only checks in that cache.\n * - It allows you to pass in an \"original\" URL without versioning parameters,\n * and it will automatically look up the correct cache key for the currently\n * active revision of that URL.\n *\n * E.g., `matchPrecache('index.html')` will find the correct precached\n * response for the currently active service worker, even if the actual cache\n * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n *\n * @param {string|Request} request The key (without revisioning parameters)\n * to look up in the precache.\n * @return {Promise}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this.strategy.cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that looks up `url` in the precache (taking into\n * account revision information), and returns the corresponding `Response`.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @return {workbox-routing~handlerCallback}\n */\n createHandlerBoundToURL(url) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n return (options) => {\n options.request = new Request(url);\n options.params = Object.assign({ cacheKey }, options.params);\n return this.strategy.handle(options);\n };\n }\n}\nexport { PrecacheController };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { Route } from 'workbox-routing/Route.js';\nimport { generateURLVariations } from './utils/generateURLVariations.js';\nimport './_version.js';\n/**\n * A subclass of {@link workbox-routing.Route} that takes a\n * {@link workbox-precaching.PrecacheController}\n * instance and uses it to match incoming requests and handle fetching\n * responses from the precache.\n *\n * @memberof workbox-precaching\n * @extends workbox-routing.Route\n */\nclass PrecacheRoute extends Route {\n /**\n * @param {PrecacheController} precacheController A `PrecacheController`\n * instance used to both match requests and respond to fetch events.\n * @param {Object} [options] Options to control how requests are matched\n * against the list of precached URLs.\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox-precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URLs that should be checked for precache matches.\n */\n constructor(precacheController, options) {\n const match = ({ request, }) => {\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(request.url, options)) {\n const cacheKey = urlsToCacheKeys.get(possibleURL);\n if (cacheKey) {\n const integrity = precacheController.getIntegrityForCacheKey(cacheKey);\n return { cacheKey, integrity };\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url));\n }\n return;\n };\n super(match, precacheController.strategy);\n }\n}\nexport { PrecacheRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching = [/^utm_/, /^fbclid$/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a [cache-first](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#cache-first-falling-back-to-network)\n * request strategy.\n *\n * A cache first strategy is useful for assets that have been revisioned,\n * such as URLs like `/styles/example.a8f5f1.css`, since they\n * can be cached for long periods of time.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-strategies\n */\nclass CacheFirst extends Strategy {\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const logs = [];\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'makeRequest',\n paramName: 'request',\n });\n }\n let response = await handler.cacheMatch(request);\n let error = undefined;\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this.cacheName}' cache. ` +\n `Will respond with a network request.`);\n }\n try {\n response = await handler.fetchAndCachePut(request);\n }\n catch (err) {\n if (err instanceof Error) {\n error = err;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n }\n else {\n logs.push(`Unable to get a response from the network.`);\n }\n }\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this.cacheName}' cache.`);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n}\nexport { CacheFirst };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { registerQuotaErrorCallback } from 'workbox-core/registerQuotaErrorCallback.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheExpiration } from './CacheExpiration.js';\nimport './_version.js';\n/**\n * This plugin can be used in a `workbox-strategy` to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * It can only be used with `workbox-strategy` instances that have a\n * [custom `cacheName` property set](/web/tools/workbox/guides/configure-workbox#custom_cache_names_in_strategies).\n * In other words, it can't be used to expire entries in strategy that uses the\n * default runtime cache name.\n *\n * Whenever a cached response is used or updated, this plugin will look\n * at the associated cache and remove any old or extra responses.\n *\n * When using `maxAgeSeconds`, responses may be used *once* after expiring\n * because the expiration clean up will not have occurred until *after* the\n * cached response has been used. If the response has a \"Date\" header, then\n * a light weight expiration check is performed and the response will not be\n * used immediately.\n *\n * When using `maxEntries`, the entry least-recently requested will be removed\n * from the cache first.\n *\n * @memberof workbox-expiration\n */\nclass ExpirationPlugin {\n /**\n * @param {ExpirationPluginOptions} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n * @param {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n * automatic deletion if the available storage quota has been exceeded.\n */\n constructor(config = {}) {\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when a `Response` is about to be returned\n * from a [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) to\n * the handler. It allows the `Response` to be inspected for freshness and\n * prevents it from being used if the `Response`'s `Date` header value is\n * older than the configured `maxAgeSeconds`.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache the response is in.\n * @param {Response} options.cachedResponse The `Response` object that's been\n * read from a cache and whose freshness should be checked.\n * @return {Response} Either the `cachedResponse`, if it's\n * fresh, or `null` if the `Response` is older than `maxAgeSeconds`.\n *\n * @private\n */\n this.cachedResponseWillBeUsed = async ({ event, request, cacheName, cachedResponse, }) => {\n if (!cachedResponse) {\n return null;\n }\n const isFresh = this._isResponseDateFresh(cachedResponse);\n // Expire entries to ensure that even if the expiration date has\n // expired, it'll only be used once.\n const cacheExpiration = this._getCacheExpiration(cacheName);\n dontWaitFor(cacheExpiration.expireEntries());\n // Update the metadata for the request URL to the current timestamp,\n // but don't `await` it as we don't want to block the response.\n const updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n if (event) {\n try {\n event.waitUntil(updateTimestampDone);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n // The event may not be a fetch event; only log the URL if it is.\n if ('request' in event) {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache entry for ` +\n `'${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n }\n return isFresh ? cachedResponse : null;\n };\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when an entry is added to a cache.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache that was updated.\n * @param {string} options.request The Request for the cached entry.\n *\n * @private\n */\n this.cacheDidUpdate = async ({ cacheName, request, }) => {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'cacheName',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'request',\n });\n }\n const cacheExpiration = this._getCacheExpiration(cacheName);\n await cacheExpiration.updateTimestamp(request.url);\n await cacheExpiration.expireEntries();\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._config = config;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheExpirations = new Map();\n if (config.purgeOnQuotaError) {\n registerQuotaErrorCallback(() => this.deleteCacheAndMetadata());\n }\n }\n /**\n * A simple helper method to return a CacheExpiration instance for a given\n * cache name.\n *\n * @param {string} cacheName\n * @return {CacheExpiration}\n *\n * @private\n */\n _getCacheExpiration(cacheName) {\n if (cacheName === cacheNames.getRuntimeName()) {\n throw new WorkboxError('expire-custom-caches-only');\n }\n let cacheExpiration = this._cacheExpirations.get(cacheName);\n if (!cacheExpiration) {\n cacheExpiration = new CacheExpiration(cacheName, this._config);\n this._cacheExpirations.set(cacheName, cacheExpiration);\n }\n return cacheExpiration;\n }\n /**\n * @param {Response} cachedResponse\n * @return {boolean}\n *\n * @private\n */\n _isResponseDateFresh(cachedResponse) {\n if (!this._maxAgeSeconds) {\n // We aren't expiring by age, so return true, it's fresh\n return true;\n }\n // Check if the 'date' header will suffice a quick expiration check.\n // See https://github.com/GoogleChromeLabs/sw-toolbox/issues/164 for\n // discussion.\n const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n if (dateHeaderTimestamp === null) {\n // Unable to parse date, so assume it's fresh.\n return true;\n }\n // If we have a valid headerTime, then our response is fresh iff the\n // headerTime plus maxAgeSeconds is greater than the current time.\n const now = Date.now();\n return dateHeaderTimestamp >= now - this._maxAgeSeconds * 1000;\n }\n /**\n * This method will extract the data header and parse it into a useful\n * value.\n *\n * @param {Response} cachedResponse\n * @return {number|null}\n *\n * @private\n */\n _getDateHeaderTimestamp(cachedResponse) {\n if (!cachedResponse.headers.has('date')) {\n return null;\n }\n const dateHeader = cachedResponse.headers.get('date');\n const parsedDate = new Date(dateHeader);\n const headerTime = parsedDate.getTime();\n // If the Date header was invalid for some reason, parsedDate.getTime()\n // will return NaN.\n if (isNaN(headerTime)) {\n return null;\n }\n return headerTime;\n }\n /**\n * This is a helper method that performs two operations:\n *\n * - Deletes *all* the underlying Cache instances associated with this plugin\n * instance, by calling caches.delete() on your behalf.\n * - Deletes the metadata from IndexedDB used to keep track of expiration\n * details for each Cache instance.\n *\n * When using cache expiration, calling this method is preferable to calling\n * `caches.delete()` directly, since this will ensure that the IndexedDB\n * metadata is also cleanly removed and open IndexedDB instances are deleted.\n *\n * Note that if you're *not* using cache expiration for a given cache, calling\n * `caches.delete()` and passing in the cache's name should be sufficient.\n * There is no Workbox-specific method needed for cleanup in that case.\n */\n async deleteCacheAndMetadata() {\n // Do this one at a time instead of all at once via `Promise.all()` to\n // reduce the chance of inconsistency if a promise rejects.\n for (const [cacheName, cacheExpiration] of this._cacheExpirations) {\n await self.caches.delete(cacheName);\n await cacheExpiration.delete();\n }\n // Reset this._cacheExpirations to its initial state.\n this._cacheExpirations = new Map();\n }\n}\nexport { ExpirationPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from './_private/logger.js';\nimport { assert } from './_private/assert.js';\nimport { quotaErrorCallbacks } from './models/quotaErrorCallbacks.js';\nimport './_version.js';\n/**\n * Adds a function to the set of quotaErrorCallbacks that will be executed if\n * there's a quota error.\n *\n * @param {Function} callback\n * @memberof workbox-core\n */\n// Can't change Function type\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction registerQuotaErrorCallback(callback) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(callback, 'function', {\n moduleName: 'workbox-core',\n funcName: 'register',\n paramName: 'callback',\n });\n }\n quotaErrorCallbacks.add(callback);\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered a callback to respond to quota errors.', callback);\n }\n}\nexport { registerQuotaErrorCallback };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { cacheOkAndOpaquePlugin } from './plugins/cacheOkAndOpaquePlugin.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [network first](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#network-first-falling-back-to-cache)\n * request strategy.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses](https://developer.chrome.com/docs/workbox/caching-resources-during-runtime/#opaque-responses).\n * Opaque responses are are cross-origin requests where the response doesn't\n * support [CORS](https://enable-cors.org/).\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-strategies\n */\nclass NetworkFirst extends Strategy {\n /**\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n * @param {number} [options.networkTimeoutSeconds] If set, any network requests\n * that fail to respond within the timeout will fallback to the cache.\n *\n * This option can be used to combat\n * \"[lie-fi]{@link https://developers.google.com/web/fundamentals/performance/poor-connectivity/#lie-fi}\"\n * scenarios.\n */\n constructor(options = {}) {\n super(options);\n // If this instance contains no plugins with a 'cacheWillUpdate' callback,\n // prepend the `cacheOkAndOpaquePlugin` plugin to the plugins list.\n if (!this.plugins.some((p) => 'cacheWillUpdate' in p)) {\n this.plugins.unshift(cacheOkAndOpaquePlugin);\n }\n this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;\n if (process.env.NODE_ENV !== 'production') {\n if (this._networkTimeoutSeconds) {\n assert.isType(this._networkTimeoutSeconds, 'number', {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'constructor',\n paramName: 'networkTimeoutSeconds',\n });\n }\n }\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const logs = [];\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'handle',\n paramName: 'makeRequest',\n });\n }\n const promises = [];\n let timeoutId;\n if (this._networkTimeoutSeconds) {\n const { id, promise } = this._getTimeoutPromise({ request, logs, handler });\n timeoutId = id;\n promises.push(promise);\n }\n const networkPromise = this._getNetworkPromise({\n timeoutId,\n request,\n logs,\n handler,\n });\n promises.push(networkPromise);\n const response = await handler.waitUntil((async () => {\n // Promise.race() will resolve as soon as the first promise resolves.\n return ((await handler.waitUntil(Promise.race(promises))) ||\n // If Promise.race() resolved with null, it might be due to a network\n // timeout + a cache miss. If that were to happen, we'd rather wait until\n // the networkPromise resolves instead of returning null.\n // Note that it's fine to await an already-resolved promise, so we don't\n // have to check to see if it's still \"in flight\".\n (await networkPromise));\n })());\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url });\n }\n return response;\n }\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs array\n * @param {Event} options.event\n * @return {Promise}\n *\n * @private\n */\n _getTimeoutPromise({ request, logs, handler, }) {\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n const onNetworkTimeout = async () => {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Timing out the network response at ` +\n `${this._networkTimeoutSeconds} seconds.`);\n }\n resolve(await handler.cacheMatch(request));\n };\n timeoutId = setTimeout(onNetworkTimeout, this._networkTimeoutSeconds * 1000);\n });\n return {\n promise: timeoutPromise,\n id: timeoutId,\n };\n }\n /**\n * @param {Object} options\n * @param {number|undefined} options.timeoutId\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs Array.\n * @param {Event} options.event\n * @return {Promise}\n *\n * @private\n */\n async _getNetworkPromise({ timeoutId, request, logs, handler, }) {\n let error;\n let response;\n try {\n response = await handler.fetchAndCachePut(request);\n }\n catch (fetchError) {\n if (fetchError instanceof Error) {\n error = fetchError;\n }\n }\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n }\n else {\n logs.push(`Unable to get a response from the network. Will respond ` +\n `with a cached response.`);\n }\n }\n if (error || !response) {\n response = await handler.cacheMatch(request);\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Found a cached response in the '${this.cacheName}'` + ` cache.`);\n }\n else {\n logs.push(`No response found in the '${this.cacheName}' cache.`);\n }\n }\n }\n return response;\n }\n}\nexport { NetworkFirst };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { createPartialResponse } from './createPartialResponse.js';\nimport './_version.js';\n/**\n * The range request plugin makes it easy for a request with a 'Range' header to\n * be fulfilled by a cached response.\n *\n * It does this by intercepting the `cachedResponseWillBeUsed` plugin callback\n * and returning the appropriate subset of the cached response body.\n *\n * @memberof workbox-range-requests\n */\nclass RangeRequestsPlugin {\n constructor() {\n /**\n * @param {Object} options\n * @param {Request} options.request The original request, which may or may not\n * contain a Range: header.\n * @param {Response} options.cachedResponse The complete cached response.\n * @return {Promise} If request contains a 'Range' header, then a\n * new response with status 206 whose body is a subset of `cachedResponse` is\n * returned. Otherwise, `cachedResponse` is returned as-is.\n *\n * @private\n */\n this.cachedResponseWillBeUsed = async ({ request, cachedResponse, }) => {\n // Only return a sliced response if there's something valid in the cache,\n // and there's a Range: header in the request.\n if (cachedResponse && request.headers.has('range')) {\n return await createPartialResponse(request, cachedResponse);\n }\n // If there was no Range: header, or if cachedResponse wasn't valid, just\n // pass it through as-is.\n return cachedResponse;\n };\n }\n}\nexport { RangeRequestsPlugin };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { cacheOkAndOpaquePlugin } from './plugins/cacheOkAndOpaquePlugin.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [stale-while-revalidate](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#stale-while-revalidate)\n * request strategy.\n *\n * Resources are requested from both the cache and the network in parallel.\n * The strategy will respond with the cached version if available, otherwise\n * wait for the network response. The cache is updated with the network response\n * with each successful request.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses](https://developer.chrome.com/docs/workbox/caching-resources-during-runtime/#opaque-responses).\n * Opaque responses are cross-origin requests where the response doesn't\n * support [CORS](https://enable-cors.org/).\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-strategies\n */\nclass StaleWhileRevalidate extends Strategy {\n /**\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n super(options);\n // If this instance contains no plugins with a 'cacheWillUpdate' callback,\n // prepend the `cacheOkAndOpaquePlugin` plugin to the plugins list.\n if (!this.plugins.some((p) => 'cacheWillUpdate' in p)) {\n this.plugins.unshift(cacheOkAndOpaquePlugin);\n }\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const logs = [];\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'handle',\n paramName: 'request',\n });\n }\n const fetchAndCachePromise = handler.fetchAndCachePut(request).catch(() => {\n // Swallow this error because a 'no-response' error will be thrown in\n // main handler return flow. This will be in the `waitUntil()` flow.\n });\n void handler.waitUntil(fetchAndCachePromise);\n let response = await handler.cacheMatch(request);\n let error;\n if (response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this.cacheName}'` +\n ` cache. Will update with the network response in the background.`);\n }\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this.cacheName}' cache. ` +\n `Will wait for the network response.`);\n }\n try {\n // NOTE(philipwalton): Really annoying that we have to type cast here.\n // https://github.com/microsoft/TypeScript/issues/20006\n response = (await fetchAndCachePromise);\n }\n catch (err) {\n if (err instanceof Error) {\n error = err;\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n}\nexport { StaleWhileRevalidate };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { deleteOutdatedCaches } from './utils/deleteOutdatedCaches.js';\nimport './_version.js';\n/**\n * Adds an `activate` event listener which will clean up incompatible\n * precaches that were created by older versions of Workbox.\n *\n * @memberof workbox-precaching\n */\nfunction cleanupOutdatedCaches() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('activate', ((event) => {\n const cacheName = cacheNames.getPrecacheName();\n event.waitUntil(deleteOutdatedCaches(cacheName).then((cachesDeleted) => {\n if (process.env.NODE_ENV !== 'production') {\n if (cachesDeleted.length > 0) {\n logger.log(`The following out-of-date precaches were cleaned up ` +\n `automatically:`, cachesDeleted);\n }\n }\n }));\n }));\n}\nexport { cleanupOutdatedCaches };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst SUBSTRING_TO_FIND = '-precache-';\n/**\n * Cleans up incompatible precaches that were created by older versions of\n * Workbox, by a service worker registered under the current scope.\n *\n * This is meant to be called as part of the `activate` event.\n *\n * This should be safe to use as long as you don't include `substringToFind`\n * (defaulting to `-precache-`) in your non-precache cache names.\n *\n * @param {string} currentPrecacheName The cache name currently in use for\n * precaching. This cache won't be deleted.\n * @param {string} [substringToFind='-precache-'] Cache names which include this\n * substring will be deleted (excluding `currentPrecacheName`).\n * @return {Array} A list of all the cache names that were deleted.\n *\n * @private\n * @memberof workbox-precaching\n */\nconst deleteOutdatedCaches = async (currentPrecacheName, substringToFind = SUBSTRING_TO_FIND) => {\n const cacheNames = await self.caches.keys();\n const cacheNamesToDelete = cacheNames.filter((cacheName) => {\n return (cacheName.includes(substringToFind) &&\n cacheName.includes(self.registration.scope) &&\n cacheName !== currentPrecacheName);\n });\n await Promise.all(cacheNamesToDelete.map((cacheName) => self.caches.delete(cacheName)));\n return cacheNamesToDelete;\n};\nexport { deleteOutdatedCaches };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport './_version.js';\n/**\n * Claim any currently available clients once the service worker\n * becomes active. This is normally used in conjunction with `skipWaiting()`.\n *\n * @memberof workbox-core\n */\nfunction clientsClaim() {\n self.addEventListener('activate', () => self.clients.claim());\n}\nexport { clientsClaim };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * {@link workbox-precaching.precache} and\n * {@link workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} [options] See the\n * {@link workbox-precaching.PrecacheRoute} options.\n *\n * @memberof workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * {@link workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * {@link workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n *\n * @memberof workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.precache(entries);\n}\nexport { precache };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { registerRoute } from 'workbox-routing/registerRoute.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { PrecacheRoute } from './PrecacheRoute.js';\nimport './_version.js';\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options] See the {@link workbox-precaching.PrecacheRoute}\n * options.\n *\n * @memberof workbox-precaching\n */\nfunction addRoute(options) {\n const precacheController = getOrCreatePrecacheController();\n const precacheRoute = new PrecacheRoute(precacheController, options);\n registerRoute(precacheRoute);\n}\nexport { addRoute };\n"],"names":["self","_","e","messageGenerator","fallback","code","args","msg","length","JSON","stringify","WorkboxError","Error","constructor","errorCode","details","super","this","name","normalizeHandler","handler","handle","Route","match","method","setCatchHandler","catchHandler","RegExpRoute","regExp","url","result","exec","href","origin","location","index","slice","Router","_routes","Map","_defaultHandlerMap","routes","addFetchListener","addEventListener","event","request","responsePromise","handleRequest","respondWith","addCacheListener","data","type","payload","requestPromises","Promise","all","urlsToCache","map","entry","Request","waitUntil","ports","then","postMessage","URL","protocol","startsWith","sameOrigin","params","route","findMatchingRoute","has","get","err","reject","_catchHandler","catch","async","catchErr","matchResult","Array","isArray","Object","keys","undefined","setDefaultHandler","set","registerRoute","push","unregisterRoute","routeIndex","indexOf","splice","defaultRouter","getOrCreateDefaultRouter","capture","captureUrl","matchCallback","RegExp","moduleName","funcName","paramName","cacheOkAndOpaquePlugin","cacheWillUpdate","response","status","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","value","join","cacheNames","userCacheName","stripParams","fullURL","ignoreParams","strippedURL","param","searchParams","delete","Deferred","promise","resolve","quotaErrorCallbacks","Set","toRequest","input","StrategyHandler","strategy","options","_cacheKeys","assign","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","plugins","_pluginStateMap","plugin","fetch","mode","FetchEvent","preloadResponse","possiblePreloadResponse","originalRequest","hasCallback","clone","cb","iterateCallbacks","thrownErrorMessage","message","pluginFilteredRequest","fetchResponse","fetchOptions","callback","error","runCallbacks","fetchAndCachePut","responseClone","cachePut","cacheMatch","key","cachedResponse","matchOptions","effectiveRequest","getCacheKey","multiMatchOptions","caches","ms","setTimeout","String","replace","responseToCache","_ensureResponseSafeToCache","cache","open","hasCacheUpdateCallback","oldResponse","strippedRequestURL","keysOptions","ignoreSearch","cacheKeys","cacheKey","cacheMatchIgnoreParams","put","executeQuotaErrorCallbacks","newResponse","state","statefulCallback","statefulParam","doneWaiting","shift","destroy","pluginsUsed","Strategy","responseDone","handleAll","_getResponse","_awaitComplete","_handle","waitUntilError","dontWaitFor","instanceOfAny","object","constructors","some","c","idbProxyableTypes","cursorAdvanceMethods","cursorRequestMap","WeakMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","target","prop","receiver","IDBTransaction","objectStoreNames","objectStore","wrap","wrapFunction","func","IDBDatabase","prototype","transaction","IDBCursor","advance","continue","continuePrimaryKey","includes","apply","unwrap","storeNames","tx","call","sort","transformCachableValue","done","unlisten","removeEventListener","complete","DOMException","cacheDonePromiseForTransaction","IDBObjectStore","IDBIndex","Proxy","IDBRequest","success","promisifyRequest","newValue","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","storeName","store","oldTraps","_extends","CACHE_OBJECT_STORE","normalizeURL","unNormalizedUrl","hash","CacheTimestampsModel","_db","_cacheName","_upgradeDb","db","objStore","createObjectStore","keyPath","createIndex","unique","_upgradeDbAndDeleteOldDbs","blocked","indexedDB","deleteDatabase","oldVersion","deleteDB","setTimestamp","timestamp","id","_getId","getDb","durability","getTimestamp","expireEntries","minTimestamp","maxCount","cursor","openCursor","entriesToDelete","entriesNotDeletedCount","urlsDeleted","version","upgrade","blocking","terminated","openPromise","newVersion","openDB","bind","CacheExpiration","config","_isRunning","_rerunRequested","_maxEntries","maxEntries","_maxAgeSeconds","maxAgeSeconds","_matchOptions","_timestampModel","Date","now","urlsExpired","updateTimestamp","isURLExpired","expireOlderThan","Infinity","createPartialResponse","originalResponse","rangeHeader","headers","boundaries","normalizedRangeHeader","trim","toLowerCase","rangeParts","start","Number","end","parseRangeHeader","originalBlob","blob","effectiveBoundaries","blobSize","size","effectiveStart","effectiveEnd","calculateEffectiveBoundaries","slicedBlob","slicedBlobSize","slicedResponse","Response","statusText","asyncFn","returnPromise","createCacheKey","urlObject","revision","cacheKeyURL","originalURL","PrecacheInstallReportPlugin","updatedURLs","notUpdatedURLs","handlerWillStart","cachedResponseWillBeUsed","PrecacheCacheKeyPlugin","precacheController","cacheKeyWillBeUsed","_precacheController","getCacheKeyForURL","supportStatus","copyResponse","modifier","clonedResponse","responseInit","Headers","modifiedResponseInit","body","testResponse","canConstructResponseFromBodyStream","PrecacheStrategy","_fallbackToNetwork","fallbackToNetwork","copyRedirectedCacheableResponsesPlugin","_handleInstall","_handleFetch","integrityInManifest","integrity","integrityInRequest","noIntegrityConflict","_useDefaultCacheabilityPluginIfNeeded","defaultPluginIndex","cacheWillUpdatePluginCount","entries","defaultPrecacheCacheabilityPlugin","redirected","PrecacheController","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","install","activate","addToCacheList","_installAndActiveListenersAdded","urlsToWarnAbout","cacheMode","firstEntry","secondEntry","warningMessage","console","warn","installReportPlugin","credentials","currentlyCachedRequests","expectedCacheKeys","values","deletedURLs","getURLsToCacheKeys","getCachedURLs","getIntegrityForCacheKey","matchPrecache","createHandlerBoundToURL","getOrCreatePrecacheController","PrecacheRoute","urlsToCacheKeys","possibleURL","ignoreURLParametersMatching","directoryIndex","cleanURLs","urlManipulation","urlWithoutIgnoredParams","test","removeIgnoredSearchParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","generateURLVariations","isFresh","_isResponseDateFresh","cacheExpiration","_getCacheExpiration","updateTimestampDone","cacheDidUpdate","_config","_cacheExpirations","purgeOnQuotaError","add","registerQuotaErrorCallback","deleteCacheAndMetadata","dateHeaderTimestamp","_getDateHeaderTimestamp","dateHeader","headerTime","getTime","isNaN","p","unshift","_networkTimeoutSeconds","networkTimeoutSeconds","logs","promises","timeoutId","_getTimeoutPromise","networkPromise","_getNetworkPromise","race","fetchError","clearTimeout","fetchAndCachePromise","currentPrecacheName","substringToFind","cacheNamesToDelete","deleteOutdatedCaches","cachesDeleted","clients","claim","addRoute"],"mappings":"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"} \ No newline at end of file diff --git a/sentry.client.config.ts b/sentry.client.config.ts new file mode 100644 index 000000000..479812af6 --- /dev/null +++ b/sentry.client.config.ts @@ -0,0 +1,15 @@ +// This file configures the initialization of Sentry on the client. +// The config you add here will be used whenever a users loads a page in their browser. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +Sentry.init({ + dsn: "https://8a5c1659d1c2ba3385be28dc7235ce56@o4507985141956608.ingest.de.sentry.io/4507985146609744", + + // Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control. + tracesSampleRate: 1, + + // Setting this option to true will print useful information to the console while you're setting up Sentry. + debug: false, +}); diff --git a/sentry.edge.config.ts b/sentry.edge.config.ts new file mode 100644 index 000000000..fcee45b35 --- /dev/null +++ b/sentry.edge.config.ts @@ -0,0 +1,16 @@ +// This file configures the initialization of Sentry for edge features (middleware, edge routes, and so on). +// The config you add here will be used whenever one of the edge features is loaded. +// Note that this config is unrelated to the Vercel Edge Runtime and is also required when running locally. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +Sentry.init({ + dsn: "https://8a5c1659d1c2ba3385be28dc7235ce56@o4507985141956608.ingest.de.sentry.io/4507985146609744", + + // Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control. + tracesSampleRate: 1, + + // Setting this option to true will print useful information to the console while you're setting up Sentry. + debug: false, +}); diff --git a/sentry.server.config.ts b/sentry.server.config.ts new file mode 100644 index 000000000..eb8b35050 --- /dev/null +++ b/sentry.server.config.ts @@ -0,0 +1,15 @@ +// This file configures the initialization of Sentry on the server. +// The config you add here will be used whenever the server handles a request. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +Sentry.init({ + dsn: "https://8a5c1659d1c2ba3385be28dc7235ce56@o4507985141956608.ingest.de.sentry.io/4507985146609744", + + // Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control. + tracesSampleRate: 1, + + // Setting this option to true will print useful information to the console while you're setting up Sentry. + debug: false, +}); diff --git a/src/app/api/sentry-example-api/route.ts b/src/app/api/sentry-example-api/route.ts new file mode 100644 index 000000000..f486f3d1d --- /dev/null +++ b/src/app/api/sentry-example-api/route.ts @@ -0,0 +1,9 @@ +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +// A faulty API route to test Sentry's error monitoring +export function GET() { + throw new Error("Sentry Example API Route Error"); + return NextResponse.json({ data: "Testing Sentry Error..." }); +} diff --git a/src/app/sentry-example-page/page.tsx b/src/app/sentry-example-page/page.tsx new file mode 100644 index 000000000..e215e33fe --- /dev/null +++ b/src/app/sentry-example-page/page.tsx @@ -0,0 +1,79 @@ +"use client"; + +import Head from "next/head"; +import * as Sentry from "@sentry/nextjs"; + +export default function Page() { + return ( +
+ + Sentry Onboarding + + + +
+

+ + + +

+ +

Get started by sending us a sample error:

+ + +

+ Next, look for the error on the{" "} + Issues Page. +

+

+ For more information, see{" "} + + https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +

+
+
+ ); +} diff --git a/src/features/bugsnag.tsx b/src/features/bugsnag.tsx deleted file mode 100644 index ee75cc298..000000000 --- a/src/features/bugsnag.tsx +++ /dev/null @@ -1,26 +0,0 @@ -"use client"; - -import Bugsnag from "@bugsnag/js"; -import BugsnagPluginReact from "@bugsnag/plugin-react"; -import BugsnagPerformance from "@bugsnag/browser-performance"; -import React, { PropsWithChildren } from "react"; -import { useGlobalStore } from "@/core/global-store"; - -export function BugsnagErrorBoundary(props: PropsWithChildren) { - const activeUser = useGlobalStore((s) => s.activeUser); - - if (process.env.NODE_ENV !== "production") { - return <>{props.children}; - } - - Bugsnag.start({ - apiKey: "53c03fdd42cd699cb95f60abe77a5b19", - plugins: [new BugsnagPluginReact()] - }); - BugsnagPerformance.start({ apiKey: "53c03fdd42cd699cb95f60abe77a5b19" }); - const ErrorBoundary = Bugsnag.getPlugin("react")!.createErrorBoundary(React); - - Bugsnag.setUser(activeUser?.username); - - return {props.children}; -} diff --git a/src/features/shared/notifications/index.tsx b/src/features/shared/notifications/index.tsx index b820a4745..7084958af 100644 --- a/src/features/shared/notifications/index.tsx +++ b/src/features/shared/notifications/index.tsx @@ -29,7 +29,7 @@ export function NotificationsDialog({ openLinksInNewTab = false }: Props) { condition={({ visionFeatures }) => visionFeatures.notifications.enabled} > { setShow(v); diff --git a/src/features/ui/modal/modal-sidebar.tsx b/src/features/ui/modal/modal-sidebar.tsx index 1693cbcda..a8f30ff0b 100644 --- a/src/features/ui/modal/modal-sidebar.tsx +++ b/src/features/ui/modal/modal-sidebar.tsx @@ -34,7 +34,7 @@ export function ModalSidebar({ x: (placement === "right" ? 1 : -1) * 320 }} className={classNameObject({ - "h-full-dynamic overflow-y-auto no-scrollbar bg-white dark:bg-dark-700 absolute w-[20rem] top-0 bottom-0": + "ecency-sidebar h-full-dynamic overflow-y-auto no-scrollbar bg-white dark:bg-dark-700 absolute w-[20rem] top-0 bottom-0": true, "right-0 rounded-l-2xl": placement === "right", "left-0 rounded-r-2xl": placement === "left", diff --git a/src/instrumentation.ts b/src/instrumentation.ts new file mode 100644 index 000000000..8aff09f08 --- /dev/null +++ b/src/instrumentation.ts @@ -0,0 +1,13 @@ +import * as Sentry from '@sentry/nextjs'; + +export async function register() { + if (process.env.NEXT_RUNTIME === 'nodejs') { + await import('../sentry.server.config'); + } + + if (process.env.NEXT_RUNTIME === 'edge') { + await import('../sentry.edge.config'); + } +} + +export const onRequestError = Sentry.captureRequestError; diff --git a/yarn.lock b/yarn.lock index cb38a1802..feaac0981 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,11 +42,24 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== +"@babel/compat-data@^7.25.2": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" + integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== + "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.6.tgz#8be77cd77c55baadcc1eae1c33df90ab6d2151d4" @@ -68,6 +81,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.18.5": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.23.6", "@babel/generator@^7.7.2": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" @@ -78,6 +112,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.25.0", "@babel/generator@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" + integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== + dependencies: + "@babel/types" "^7.25.6" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -103,6 +147,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.22.15": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz#b04d915ce92ce363666f816a884cdcfc9be04953" @@ -172,6 +227,14 @@ dependencies: "@babel/types" "^7.22.15" +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-transforms@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" @@ -183,6 +246,16 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" @@ -220,6 +293,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" @@ -239,16 +320,31 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== +"@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + "@babel/helper-wrap-function@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" @@ -267,6 +363,14 @@ "@babel/traverse" "^7.23.6" "@babel/types" "^7.23.6" +"@babel/helpers@^7.25.0": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.6.tgz#57ee60141829ba2e102f30711ffe3afab357cc60" + integrity sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q== + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + "@babel/highlight@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" @@ -276,11 +380,28 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/parser@^7.25.0", "@babel/parser@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" + integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== + dependencies: + "@babel/types" "^7.25.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" @@ -977,6 +1098,15 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" +"@babel/template@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/traverse@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.6.tgz#b53526a2367a0dd6edc423637f3d2d0f2521abc5" @@ -993,6 +1123,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" + integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.6" + "@babel/parser" "^7.25.6" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" @@ -1002,95 +1145,20 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" + integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + 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== -"@bugsnag/browser-performance@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@bugsnag/browser-performance/-/browser-performance-2.9.0.tgz#17e9294129c44ff9c94277af2981e2ec4d844794" - integrity sha512-QxGzZomTcBd+fASg58cVpe8AMhCci7gkfk+QkBY2z4mqeSNo9OewPrmuJDoC6u7juiCohSM8yzBms5IF74SWxg== - dependencies: - "@bugsnag/core-performance" "^2.9.0" - "@bugsnag/cuid" "^3.1.1" - "@bugsnag/delivery-fetch-performance" "^2.9.0" - "@bugsnag/request-tracker-performance" "^2.9.0" - -"@bugsnag/browser@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@bugsnag/browser/-/browser-8.0.0.tgz#f2fe501c7145df65dd921af0f07853f31d67a0a5" - integrity sha512-v+Ff9rHuzB7Fb/RBxlqA1Bhn+SulZWIvbI+I0fIsJQ7mdOgnVuAK16HwiSzXSmrfntEB2M4NAyfUAQRcWjAKTA== - dependencies: - "@bugsnag/core" "^8.0.0" - -"@bugsnag/core-performance@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@bugsnag/core-performance/-/core-performance-2.9.0.tgz#041f79aac38dbaa11ad1aeb938aa015336e80c02" - integrity sha512-3tjobXvcKhGnD5aJ6tW/LIoTDCwjGH7bd3fCEtMxZyWw4s4pZ415ENMhKV/GmZ8YFpD4tVocuPJDeRQ9YKl+6g== - dependencies: - "@bugsnag/cuid" "^3.1.1" - -"@bugsnag/core@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@bugsnag/core/-/core-8.0.0.tgz#8f26e0ec9ca4a2718e9a03c113ac2d0c202691ec" - integrity sha512-AcDMjd4RZ+G8M/n6TFzL5P/1due+aNvTIu+26mu9TW2Tt4d/86lKVFQSy0H2Ju1HIaBdqtUUNCTXOIeNXJVkHQ== - dependencies: - "@bugsnag/cuid" "^3.0.0" - "@bugsnag/safe-json-stringify" "^6.0.0" - error-stack-parser "^2.0.3" - iserror "0.0.2" - stack-generator "^2.0.3" - -"@bugsnag/cuid@^3.0.0", "@bugsnag/cuid@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@bugsnag/cuid/-/cuid-3.1.1.tgz#dbd5d76559f6b7a66306fceacf503888883da514" - integrity sha512-d2z4b0rEo3chI07FNN1Xds8v25CNeekecU6FC/2Fs9MxY2EipkZTThVcV2YinMn8dvRUlViKOyC50evoUxg8tw== - -"@bugsnag/delivery-fetch-performance@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@bugsnag/delivery-fetch-performance/-/delivery-fetch-performance-2.9.0.tgz#269d4f9353d876bf67f335d3f8abc3ca2225b55e" - integrity sha512-uMXvLB5JTmGDZQxnlWFWRnhHewDP7WBvE/zzXQTbUc2yZPaPWCrDpQaybqCtuzu17Eht00dRPWbtwkpUe4jDaA== - dependencies: - "@bugsnag/core-performance" "^2.9.0" - -"@bugsnag/js@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@bugsnag/js/-/js-8.0.0.tgz#11bf1fdd8420ddaec7e78e3514b4559c5edb0325" - integrity sha512-xlSA48AJtnj+SsS824k1Gzo/gJTnn5xTBbWE7NhbsHEBBGVX3U7vOVBF75mZZEi89XwTiRwjQ91fASw4Rv5Ebg== - dependencies: - "@bugsnag/browser" "^8.0.0" - "@bugsnag/node" "^8.0.0" - -"@bugsnag/node@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@bugsnag/node/-/node-8.0.0.tgz#70d709100af7f970ae63cfcd738ce6b68f5902a3" - integrity sha512-boI969qvzuNgS61M0hTbLFKzWPo+OC8AFr4j3hGxGTOiqQD5QuFwSQ40Jcet+y1BHjMRjj3QD4U+722nOqaXyQ== - dependencies: - "@bugsnag/core" "^8.0.0" - byline "^5.0.0" - error-stack-parser "^2.0.2" - iserror "^0.0.2" - pump "^3.0.0" - stack-generator "^2.0.3" - -"@bugsnag/plugin-react@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@bugsnag/plugin-react/-/plugin-react-8.0.0.tgz#97c05c67665f574f68e37219d4019b5a6bcfc7ca" - integrity sha512-hzLRt0sw6PSups+yd/XKJPMOv8yp8x5yaOzITii7PjXND++0tStGnQQEWTbS5DCW1685mGqP/G4gye8s9LP5og== - -"@bugsnag/request-tracker-performance@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@bugsnag/request-tracker-performance/-/request-tracker-performance-2.9.0.tgz#0dba3ace42cd28ef0951e38ae6382afcc0841599" - integrity sha512-BjBAXZ0ZD4+Ex6uHjxucxz2ZS1ECEzo01A9R/i1Nk4ZTvnlmFyqAdAYBTrES+SE7qBxFYskUJlf3ZAXJ6qQimQ== - dependencies: - "@bugsnag/core-performance" "^2.9.0" - -"@bugsnag/safe-json-stringify@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz#22abdcd83e008c369902976730c34c150148a758" - integrity sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA== - "@bugsnag/source-maps@^2.0.0": version "2.3.3" resolved "https://registry.yarnpkg.com/@bugsnag/source-maps/-/source-maps-2.3.3.tgz#23ffb7f577a93b8b3284c6dcf76c5cbdcb0cc847" @@ -1298,6 +1366,18 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.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" @@ -1515,6 +1595,15 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -1525,6 +1614,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "@jridgewell/source-map@^0.3.3": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" @@ -1538,6 +1632,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" @@ -1554,6 +1653,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@next/env@14.2.3": version "14.2.3" resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.3.tgz#d6def29d1c763c0afb397343a15a82e7d92353a0" @@ -1654,11 +1761,289 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@opentelemetry/api-logs@0.52.1": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz#52906375da4d64c206b0c4cb8ffa209214654ecc" + integrity sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A== + dependencies: + "@opentelemetry/api" "^1.0.0" + +"@opentelemetry/api-logs@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz#c478cbd8120ec2547b64edfa03a552cfe42170be" + integrity sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw== + dependencies: + "@opentelemetry/api" "^1.0.0" + +"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.8", "@opentelemetry/api@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" + integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== + +"@opentelemetry/context-async-hooks@^1.25.1": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.26.0.tgz#fa92f722cf685685334bba95f258d3ef9fce60f6" + integrity sha512-HedpXXYzzbaoutw6DFLWLDket2FwLkLpil4hGCZ1xYEIMTcivdfwEOISgdbLEWyG3HW52gTq2V9mOVJrONgiwg== + +"@opentelemetry/core@1.26.0", "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.25.1", "@opentelemetry/core@^1.8.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.26.0.tgz#7d84265aaa850ed0ca5813f97d831155be42b328" + integrity sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/instrumentation-connect@0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.39.0.tgz#32bdbaac464cba061c95df6c850ee81efdd86f8b" + integrity sha512-pGBiKevLq7NNglMgqzmeKczF4XQMTOUOTkK8afRHMZMnrK3fcETyTH7lVaSozwiOM3Ws+SuEmXZT7DYrrhxGlg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@types/connect" "3.4.36" + +"@opentelemetry/instrumentation-express@0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.42.0.tgz#279f195aa66baee2b98623a16666c6229c8e7564" + integrity sha512-YNcy7ZfGnLsVEqGXQPT+S0G1AE46N21ORY7i7yUQyfhGAL4RBjnZUqefMI0NwqIl6nGbr1IpF0rZGoN8Q7x12Q== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-fastify@0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.39.0.tgz#96a040e4944daf77c53a8fe5a128bc3b2568e4aa" + integrity sha512-SS9uSlKcsWZabhBp2szErkeuuBDgxOUlllwkS92dVaWRnMmwysPhcEgHKB8rUe3BHg/GnZC1eo1hbTZv4YhfoA== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-fs@0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.15.0.tgz#41658507860f39fee5209bca961cea8d24ca2a83" + integrity sha512-JWVKdNLpu1skqZQA//jKOcKdJC66TWKqa2FUFq70rKohvaSq47pmXlnabNO+B/BvLfmidfiaN35XakT5RyMl2Q== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-generic-pool@0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.39.0.tgz#2b9af16ad82d5cbe67125c0125753cecd162a728" + integrity sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-graphql@0.43.0": + version "0.43.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.43.0.tgz#71bb94ea775c70dbd388c739b397ec1418f3f170" + integrity sha512-aI3YMmC2McGd8KW5du1a2gBA0iOMOGLqg4s9YjzwbjFwjlmMNFSK1P3AIg374GWg823RPUGfVTIgZ/juk9CVOA== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-hapi@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz#de8711907256d8fae1b5faf71fc825cef4a7ddbb" + integrity sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-http@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz#0d806adf1b3aba036bc46e16162e3c0dbb8a6b60" + integrity sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/instrumentation" "0.53.0" + "@opentelemetry/semantic-conventions" "1.27.0" + semver "^7.5.2" + +"@opentelemetry/instrumentation-ioredis@0.43.0": + version "0.43.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz#dbadabaeefc4cb47c406f878444f1bcac774fa89" + integrity sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/redis-common" "^0.36.2" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-kafkajs@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.3.0.tgz#6687bce4dac8b90ef8ccbf1b662d5d1e95a34414" + integrity sha512-UnkZueYK1ise8FXQeKlpBd7YYUtC7mM8J0wzUSccEfc/G8UqHQqAzIyYCUOUPUKp8GsjLnWOOK/3hJc4owb7Jg== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-koa@0.43.0": + version "0.43.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz#963fd192a1b5f6cbae5dabf4ec82e3105cbb23b1" + integrity sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-mongodb@0.47.0": + version "0.47.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.47.0.tgz#f8107d878281433905e717f223fb4c0f10356a7b" + integrity sha512-yqyXRx2SulEURjgOQyJzhCECSh5i1uM49NUaq9TqLd6fA7g26OahyJfsr9NE38HFqGRHpi4loyrnfYGdrsoVjQ== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/sdk-metrics" "^1.9.1" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-mongoose@0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz#375afd21adfcd897a8f521c1ffd2d91e6a428705" + integrity sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-mysql2@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz#6377b6e2d2487fd88e1d79aa03658db6c8d51651" + integrity sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@opentelemetry/sql-common" "^0.40.1" + +"@opentelemetry/instrumentation-mysql@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz#2d50691ead5219774bd36d66c35d5b4681485dd7" + integrity sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@types/mysql" "2.15.26" + +"@opentelemetry/instrumentation-nestjs-core@0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz#2c0e6405b56caaec32747d55c57ff9a034668ea8" + integrity sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-pg@0.44.0": + version "0.44.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.44.0.tgz#1e97a0aeb2dca068ee23ce75884a0a0063a7ce3f" + integrity sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@opentelemetry/sql-common" "^0.40.1" + "@types/pg" "8.6.1" + "@types/pg-pool" "2.0.6" + +"@opentelemetry/instrumentation-redis-4@0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.0.tgz#fc01104cfe884c7546385eaae03c57a47edd19d1" + integrity sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/redis-common" "^0.36.2" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-undici@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.6.0.tgz#9436ee155c8dcb0b760b66947c0e0f347688a5ef" + integrity sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation@0.53.0", "@opentelemetry/instrumentation@^0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz#e6369e4015eb5112468a4d45d38dcada7dad892d" + integrity sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A== + dependencies: + "@opentelemetry/api-logs" "0.53.0" + "@types/shimmer" "^1.2.0" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + semver "^7.5.2" + shimmer "^1.2.1" + +"@opentelemetry/instrumentation@^0.49 || ^0.50 || ^0.51 || ^0.52.0": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz#2e7e46a38bd7afbf03cf688c862b0b43418b7f48" + integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== + dependencies: + "@opentelemetry/api-logs" "0.52.1" + "@types/shimmer" "^1.0.2" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + semver "^7.5.2" + shimmer "^1.2.1" + +"@opentelemetry/redis-common@^0.36.2": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" + integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== + +"@opentelemetry/resources@1.26.0", "@opentelemetry/resources@^1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.26.0.tgz#da4c7366018bd8add1f3aa9c91c6ac59fd503cef" + integrity sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/sdk-metrics@^1.9.1": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz#37bb0afb1d4447f50aab9cdd05db6f2d8b86103e" + integrity sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/resources" "1.26.0" + +"@opentelemetry/sdk-trace-base@^1.22", "@opentelemetry/sdk-trace-base@^1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.26.0.tgz#0c913bc6d2cfafd901de330e4540952269ae579c" + integrity sha512-olWQldtvbK4v22ymrKLbIcBi9L2SpMO84sCPY54IVsJhP9fRsxJT194C/AVaAuJzLE30EdhhM1VmvVYR7az+cw== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/resources" "1.26.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/semantic-conventions@1.27.0", "@opentelemetry/semantic-conventions@^1.27.0": + version "1.27.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz#1a857dcc95a5ab30122e04417148211e6f945e6c" + integrity sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg== + +"@opentelemetry/sql-common@^0.40.1": + version "0.40.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz#93fbc48d8017449f5b3c3274f2268a08af2b83b6" + integrity sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg== + dependencies: + "@opentelemetry/core" "^1.1.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@popperjs/core@^2.11.8": version "2.11.8" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== +"@prisma/instrumentation@5.19.1": + version "5.19.1" + resolved "https://registry.yarnpkg.com/@prisma/instrumentation/-/instrumentation-5.19.1.tgz#146319cf85f22b7a43296f0f40cfeac55516e66e" + integrity sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w== + dependencies: + "@opentelemetry/api" "^1.8" + "@opentelemetry/instrumentation" "^0.49 || ^0.50 || ^0.51 || ^0.52.0" + "@opentelemetry/sdk-trace-base" "^1.22" + "@react-spring/animated@~9.7.3": version "9.7.3" resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.7.3.tgz#4211b1a6d48da0ff474a125e93c0f460ff816e0f" @@ -1706,6 +2091,18 @@ "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" +"@rollup/plugin-commonjs@26.0.1": + version "26.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz#16d4d6e54fa63021249a292b50f27c0b0f1a30d8" + integrity sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ== + dependencies: + "@rollup/pluginutils" "^5.0.1" + commondir "^1.0.1" + estree-walker "^2.0.2" + glob "^10.4.1" + is-reference "1.2.1" + magic-string "^0.30.3" + "@rollup/plugin-node-resolve@^11.2.1": version "11.2.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" @@ -1735,6 +2132,15 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^5.0.1": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@rushstack/eslint-patch@^1.3.3": version "1.6.0" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz#1898e7a7b943680d757417a47fb10f5fcc230b39" @@ -1767,6 +2173,247 @@ "@noble/hashes" "~1.3.0" "@scure/base" "~1.1.0" +"@sentry-internal/browser-utils@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.30.0.tgz#eb68c79556ffb864eb5924a53affde52f2b77362" + integrity sha512-pwX+awNWaxSOAsBLVLqc1+Hw+Fm1Nci9mbKFA6Ed5YzCG049PnBVQwugpmx2dcyyCqJpORhcIqb9jHdCkYmCiA== + dependencies: + "@sentry/core" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + +"@sentry-internal/feedback@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.30.0.tgz#6f78a245298502e4cc5ce77313dde6965abfecfe" + integrity sha512-ParFRxQY6helxkwUDmro77Wc5uSIC6rZos88jYMrYwFmoTJaNWf4lDzPyECfdSiSYyzSMZk4dorSUN85Ul7DCg== + dependencies: + "@sentry/core" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + +"@sentry-internal/replay-canvas@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.30.0.tgz#3630eec14d23b1fd368d8c331ee695aa5bb41425" + integrity sha512-y/QqcvchhtMlVA6eOZicIfTxtZarazQZJuFW0018ynPxBTiuuWSxMCLqduulXUYsFejfD8/eKHb3BpCIFdDYjg== + dependencies: + "@sentry-internal/replay" "8.30.0" + "@sentry/core" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + +"@sentry-internal/replay@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.30.0.tgz#6a4a8bd551a16ea5f77f913acbccd88061868c84" + integrity sha512-/KFre+BrovPCiovgAu5N1ErJtkDVzkJA5hV3Jw011AlxRWxrmPwu6+9sV9/rn3tqYAGyq6IggYqeIOHhLh1Ihg== + dependencies: + "@sentry-internal/browser-utils" "8.30.0" + "@sentry/core" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + +"@sentry/babel-plugin-component-annotate@2.22.3": + version "2.22.3" + resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.3.tgz#de4970d51a54ef52b21f0d6ec49bd06bf37753c1" + integrity sha512-OlHA+i+vnQHRIdry4glpiS/xTOtgjmpXOt6IBOUqynx5Jd/iK1+fj+t8CckqOx9wRacO/hru2wfW/jFq0iViLg== + +"@sentry/browser@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.30.0.tgz#3c6d5ef62d7daca2873b47f59b136c33941b56de" + integrity sha512-M+tKqawH9S3CqlAIcqdZcHbcsNQkEa9MrPqPCYvXco3C4LRpNizJP2XwBiGQY2yK+fOSvbaWpPtlI938/wuRZQ== + dependencies: + "@sentry-internal/browser-utils" "8.30.0" + "@sentry-internal/feedback" "8.30.0" + "@sentry-internal/replay" "8.30.0" + "@sentry-internal/replay-canvas" "8.30.0" + "@sentry/core" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + +"@sentry/bundler-plugin-core@2.22.3": + version "2.22.3" + resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.3.tgz#f8c0a25321216ae9777749c1a4b9d982ae1ec2e1" + integrity sha512-DeoUl0WffcqZZRl5Wy9aHvX4WfZbbWt0QbJ7NJrcEViq+dRAI2FQTYECFLwdZi5Gtb3oyqZICO+P7k8wDnzsjQ== + dependencies: + "@babel/core" "^7.18.5" + "@sentry/babel-plugin-component-annotate" "2.22.3" + "@sentry/cli" "^2.33.1" + dotenv "^16.3.1" + find-up "^5.0.0" + glob "^9.3.2" + magic-string "0.30.8" + unplugin "1.0.1" + +"@sentry/cli-darwin@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.36.1.tgz#786adf6984dbe3c6fb7dac51b625c314117b807d" + integrity sha512-JOHQjVD8Kqxm1jUKioAP5ohLOITf+Dh6+DBz4gQjCNdotsvNW5m63TKROwq2oB811p+Jzv5304ujmN4cAqW1Ww== + +"@sentry/cli-linux-arm64@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.36.1.tgz#ff449d7e7e715166257998c02cf635ca02acbadd" + integrity sha512-R//3ZEkbzvoStr3IA7nxBZNiBYyxOljOqAhgiTnejXHmnuwDzM3TBA2n5vKPE/kBFxboEBEw0UTzTIRb1T0bgw== + +"@sentry/cli-linux-arm@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.36.1.tgz#1ae5d335a1b4cd217a34c2bd6c6f5e0670136eb3" + integrity sha512-gvEOKN0fWL2AVqUBKHNXPRZfJNvKTs8kQhS8cQqahZGgZHiPCI4BqW45cKMq+ZTt1UUbLmt6khx5Dz7wi+0i5A== + +"@sentry/cli-linux-i686@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.36.1.tgz#112b9e26357e918cbbba918114ec8cdab07cdf60" + integrity sha512-R7sW5Vk/HacVy2YgQoQB+PwccvFYf2CZVPSFSFm2z7MEfNe77UYHWUq+sjJ4vxWG6HDWGVmaX0fjxyDkE01JRA== + +"@sentry/cli-linux-x64@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.36.1.tgz#c3e5bdb0c9a4bb44c83927c62a3cd7e006709bf7" + integrity sha512-UMr3ik8ksA7zQfbzsfwCb+ztenLnaeAbX94Gp+bzANZwPfi/vVHf2bLyqsBs4OyVt9SPlN1bbM/RTGfMjZ3JOw== + +"@sentry/cli-win32-i686@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.36.1.tgz#819573320e885e1dbf59b0a01d3bd370c84c1708" + integrity sha512-CflvhnvxPEs5GWQuuDtYSLqPrBaPbcSJFlBuUIb+8WNzRxvVfjgw1qzfZmkQqABqiy/YEsEekllOoMFZAvCcVA== + +"@sentry/cli-win32-x64@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.36.1.tgz#80779b4bffb4e2e32944eae72c60e6f40151b4dc" + integrity sha512-wWqht2xghcK3TGnooHZSzA3WSjdtno/xFjZLvWmw38rblGwgKMxLZnlxV6uDyS+OJ6CbfDTlCRay/0TIqA0N8g== + +"@sentry/cli@^2.33.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.36.1.tgz#a9146b798cb6d2f782a7a48d74633ddcd88dc8d3" + integrity sha512-gzK5uQKDWKhyH5udoB5+oaUNrS//urWyaXgKvHKz4gFfl744HuKY9dpLPP2nMnf0zLGmGM6xJnMXLqILq0mtxw== + dependencies: + https-proxy-agent "^5.0.0" + node-fetch "^2.6.7" + progress "^2.0.3" + proxy-from-env "^1.1.0" + which "^2.0.2" + optionalDependencies: + "@sentry/cli-darwin" "2.36.1" + "@sentry/cli-linux-arm" "2.36.1" + "@sentry/cli-linux-arm64" "2.36.1" + "@sentry/cli-linux-i686" "2.36.1" + "@sentry/cli-linux-x64" "2.36.1" + "@sentry/cli-win32-i686" "2.36.1" + "@sentry/cli-win32-x64" "2.36.1" + +"@sentry/core@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.30.0.tgz#f929e42e9a537bfa3eb6024082714e9ab98d822b" + integrity sha512-CJ/FuWLw0QEKGKXGL/nm9eaOdajEcmPekLuHAuOCxID7N07R9l9laz3vFbAkUZ97GGDv3sYrJZgywfY3Moropg== + dependencies: + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + +"@sentry/nextjs@^8": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-8.30.0.tgz#8b532ce34a5ecb832e9fc74f652b6272baa3be51" + integrity sha512-835H7/ERIGvxE2m9cYqB5Mmd4PfLPlVQdyJAEL3br7fpl5mp3A3JtA3AiZ98smpVW/rUkLHGOWziRb6uTgJSXA== + dependencies: + "@opentelemetry/instrumentation-http" "0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@rollup/plugin-commonjs" "26.0.1" + "@sentry/core" "8.30.0" + "@sentry/node" "8.30.0" + "@sentry/opentelemetry" "8.30.0" + "@sentry/react" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + "@sentry/vercel-edge" "8.30.0" + "@sentry/webpack-plugin" "2.22.3" + chalk "3.0.0" + resolve "1.22.8" + rollup "3.29.4" + stacktrace-parser "^0.1.10" + +"@sentry/node@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-8.30.0.tgz#730461be3a3382ab17e2c3f95c08e4e85a207429" + integrity sha512-Tog0Ag7sU3lNj4cPUZy1KRJXyYXZlWiwlk34KYNNxAk0vDiK6W0bF8mvS+aaUukgb7FO5A0eu9l+VApdBJOr3Q== + dependencies: + "@opentelemetry/api" "^1.9.0" + "@opentelemetry/context-async-hooks" "^1.25.1" + "@opentelemetry/core" "^1.25.1" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/instrumentation-connect" "0.39.0" + "@opentelemetry/instrumentation-express" "0.42.0" + "@opentelemetry/instrumentation-fastify" "0.39.0" + "@opentelemetry/instrumentation-fs" "0.15.0" + "@opentelemetry/instrumentation-generic-pool" "0.39.0" + "@opentelemetry/instrumentation-graphql" "0.43.0" + "@opentelemetry/instrumentation-hapi" "0.41.0" + "@opentelemetry/instrumentation-http" "0.53.0" + "@opentelemetry/instrumentation-ioredis" "0.43.0" + "@opentelemetry/instrumentation-kafkajs" "0.3.0" + "@opentelemetry/instrumentation-koa" "0.43.0" + "@opentelemetry/instrumentation-mongodb" "0.47.0" + "@opentelemetry/instrumentation-mongoose" "0.42.0" + "@opentelemetry/instrumentation-mysql" "0.41.0" + "@opentelemetry/instrumentation-mysql2" "0.41.0" + "@opentelemetry/instrumentation-nestjs-core" "0.40.0" + "@opentelemetry/instrumentation-pg" "0.44.0" + "@opentelemetry/instrumentation-redis-4" "0.42.0" + "@opentelemetry/instrumentation-undici" "0.6.0" + "@opentelemetry/resources" "^1.26.0" + "@opentelemetry/sdk-trace-base" "^1.26.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@prisma/instrumentation" "5.19.1" + "@sentry/core" "8.30.0" + "@sentry/opentelemetry" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + import-in-the-middle "^1.11.0" + +"@sentry/opentelemetry@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-8.30.0.tgz#b80417d44e4d20f03a7ecf5173a8a4ed4f317a57" + integrity sha512-6mCIP2zvxAiEsNEoF8kv+UUD4XGWSKJU6RY5BF1U26HLitXv1fNPtzaTR96Ehv9h0zktjLfqfpVUZ7DGkdBvLA== + dependencies: + "@sentry/core" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + +"@sentry/react@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-8.30.0.tgz#fe24964d3f5e963749d8a11b45332cea85bd9ac4" + integrity sha512-ktQjXs87jdsxW0YrHci3sb6zcSzhMECWnrTVU/KGZF8UoDsk4P4xRCknijd2SSmDIjSkwzUAANR43UkCi4BTQg== + dependencies: + "@sentry/browser" "8.30.0" + "@sentry/core" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + hoist-non-react-statics "^3.3.2" + +"@sentry/types@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.30.0.tgz#5f5011f5b16bafd30a039ca5e8c337e948c703fb" + integrity sha512-kgWW2BCjBmVlSQRG32GonHEVyeDbys74xf9mLPvynwHTgw3+NUlNAlEdu05xnb2ow4bCTHfbkS5G1zRgyv5k4Q== + +"@sentry/utils@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-8.30.0.tgz#2343dd8593ea83890b3e0d792ed3fa257955a26b" + integrity sha512-wZxU2HWlzsnu8214Xy7S7cRIuD6h8Z5DnnkojJfX0i0NLooepZQk2824el1Q13AakLb7/S8CHSHXOMnCtoSduw== + dependencies: + "@sentry/types" "8.30.0" + +"@sentry/vercel-edge@8.30.0": + version "8.30.0" + resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-8.30.0.tgz#f3e7167b8183b58ec704934078f4add14f59101a" + integrity sha512-0R0HWmPZwIOunj4JQoOT9FexhesAVNpMkM2mezP7QlVGGBQA39s9j8+o658Ymh8xzKo1ZTg4pHjoySLPhrN1JA== + dependencies: + "@sentry/core" "8.30.0" + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + +"@sentry/webpack-plugin@2.22.3": + version "2.22.3" + resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-2.22.3.tgz#a9eeb4689c062eb6dc50671c09f06ec6875b9b02" + integrity sha512-Sq1S6bL3nuoTP5typkj+HPjQ13dqftIE8kACAq4tKkXOpWO9bf6HtqcruEQCxMekbWDTdljsrknQ17ZBx2q66Q== + dependencies: + "@sentry/bundler-plugin-core" "2.22.3" + unplugin "1.0.1" + uuid "^9.0.0" + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -1949,11 +2596,23 @@ "@types/node" "*" base-x "^3.0.6" +"@types/connect@3.4.36": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + dependencies: + "@types/node" "*" + "@types/diff-match-patch@^1.0.36": version "1.0.36" resolved "https://registry.yarnpkg.com/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz#dcef10a69d357fe9d43ac4ff2eca6b85dbf466af" integrity sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg== +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" @@ -2067,6 +2726,13 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== +"@types/mysql@2.15.26": + version "2.15.26" + resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.26.tgz#f0de1484b9e2354d587e7d2bd17a873cc8300836" + integrity sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ== + dependencies: + "@types/node" "*" + "@types/node@*": version "20.10.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.4.tgz#b246fd84d55d5b1b71bf51f964bd514409347198" @@ -2098,6 +2764,31 @@ dependencies: path-to-regexp "*" +"@types/pg-pool@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/pg-pool/-/pg-pool-2.0.6.tgz#1376d9dc5aec4bb2ec67ce28d7e9858227403c77" + integrity sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ== + dependencies: + "@types/pg" "*" + +"@types/pg@*": + version "8.11.10" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.11.10.tgz#b8fb2b2b759d452fe3ec182beadd382563b63291" + integrity sha512-LczQUW4dbOQzsH2RQ5qoeJ6qJPdrcM/DcMLoqWQkMLMsq83J5lAX3LXjdkWdpscFy67JSOWDnh7Ny/sPFykmkg== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^4.0.1" + +"@types/pg@8.6.1": + version "8.6.1" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.1.tgz#099450b8dc977e8197a44f5229cedef95c8747f9" + integrity sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^2.2.0" + "@types/prop-types@*": version "15.7.11" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" @@ -2190,6 +2881,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== +"@types/shimmer@^1.0.2", "@types/shimmer@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/shimmer/-/shimmer-1.2.0.tgz#9b706af96fa06416828842397a70dfbbf1c14ded" + integrity sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg== + "@types/sortablejs@^1.15.8": version "1.15.8" resolved "https://registry.yarnpkg.com/@types/sortablejs/-/sortablejs-1.15.8.tgz#11ed555076046e00869a5ef85d1e7651e7a66ef6" @@ -2322,6 +3018,11 @@ acorn-globals@^7.0.0: acorn "^8.1.0" acorn-walk "^8.0.2" +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -2393,6 +3094,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -2412,6 +3118,11 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -2826,6 +3537,16 @@ browserslist@^4.21.10, browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.23.1: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + dependencies: + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -2882,11 +3603,6 @@ busboy@1.6.0: dependencies: streamsearch "^1.1.0" -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== - call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" @@ -2930,6 +3646,19 @@ caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001565, caniuse-lite@^1.0.300015 resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz" integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg== +caniuse-lite@^1.0.30001646: + version "1.0.30001662" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz#3574b22dfec54a3f3b6787331da1040fe8e763ec" + integrity sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA== + +chalk@3.0.0, chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^2.3.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" @@ -2939,14 +3668,6 @@ chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -2993,6 +3714,11 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== +cjs-module-lexer@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" + integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== + classnames@2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" @@ -3239,7 +3965,7 @@ cross-fetch@^3.0.4, cross-fetch@^3.0.6: dependencies: node-fetch "^2.6.12" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, 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== @@ -3369,6 +4095,13 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" +debug@^4.3.5: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -3559,6 +4292,11 @@ domutils@^3.1.0: domelementtype "^2.3.0" domhandler "^5.0.3" +dotenv@^16.3.1: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -3568,6 +4306,11 @@ drbg.js@^1.0.1: create-hash "^1.1.2" create-hmac "^1.1.4" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecurve@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" @@ -3588,6 +4331,11 @@ electron-to-chromium@^1.4.601: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz#cac69868548aee89961ffe63ff5a7716f0685b75" integrity sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA== +electron-to-chromium@^1.5.4: + version "1.5.26" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.26.tgz#449b4fa90e83ab98abbe3b6a96c8ee395de94452" + integrity sha512-Z+OMe9M/V6Ep9n/52+b7lkvYEps26z4Yz3vjWL1V61W0q+VLF1pOHhMY17sa4roz4AWmULSI8E6SAojZA5L0YQ== + elliptic@^6.5.2: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -3658,7 +4406,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.2, error-stack-parser@^2.0.3, error-stack-parser@^2.0.6: +error-stack-parser@^2.0.6: version "2.1.4" resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== @@ -3760,6 +4508,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + 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" @@ -3997,6 +4750,11 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4215,6 +4973,14 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -4373,6 +5139,18 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^10.4.1: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -4385,6 +5163,16 @@ glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^9.3.2: + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -4616,7 +5404,7 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -4681,6 +5469,16 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-in-the-middle@^1.11.0, import-in-the-middle@^1.8.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.11.0.tgz#a94c4925b8da18256cde3b3b7b38253e6ca5e708" + integrity sha512-5DimNQGoe0pLUHbR9qK84iWaWjjbsxiqXnw6Qz64+azRgleqv9k2kTt5fw7QsOpmaGYtuxxursnPPsnTKEx10Q== + dependencies: + acorn "^8.8.2" + acorn-import-attributes "^1.9.5" + cjs-module-lexer "^1.2.2" + module-details-from-path "^1.0.3" + import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" @@ -4903,6 +5701,13 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-reference@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -4984,11 +5789,6 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== -iserror@0.0.2, iserror@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/iserror/-/iserror-0.0.2.tgz#bd53451fe2f668b9f2402c1966787aaa2c7c0bf5" - integrity sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -5058,6 +5858,15 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jake@^10.8.5: version "10.8.7" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" @@ -5795,6 +6604,11 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -5814,6 +6628,13 @@ lz-string@^1.5.0: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== +magic-string@0.30.8: + version "0.30.8" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613" + integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -5821,6 +6642,13 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.30.3: + version "0.30.11" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" + integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -5974,6 +6802,20 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -5988,6 +6830,21 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +module-details-from-path@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" + integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== + moment@^2.30.1: version "2.30.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" @@ -5998,7 +6855,7 @@ ms@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: +ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -6084,7 +6941,7 @@ next@14.2.3: "@next/swc-win32-ia32-msvc" "14.2.3" "@next/swc-win32-x64-msvc" "14.2.3" -node-fetch@^2.6.0, node-fetch@^2.6.12: +node-fetch@^2.6.0, node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -6101,6 +6958,11 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + 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" @@ -6225,6 +7087,11 @@ object.values@^1.1.6, object.values@^1.1.7: define-properties "^1.2.0" es-abstract "^1.22.1" +obuf@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + 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" @@ -6289,6 +7156,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -6338,6 +7210,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.11.1, path-scurry@^1.6.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@*, path-to-regexp@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" @@ -6356,11 +7236,55 @@ path@^0.12.7: process "^0.11.1" util "^0.10.3" +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-numeric@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" + integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== + +pg-protocol@*: + version "1.7.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.7.0.tgz#ec037c87c20515372692edac8b63cf4405448a93" + integrity sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ== + +pg-types@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + +pg-types@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.2.tgz#399209a57c326f162461faa870145bb0f918b76d" + integrity sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng== + dependencies: + pg-int8 "1.0.1" + pg-numeric "1.0.2" + postgres-array "~3.0.1" + postgres-bytea "~3.0.0" + postgres-date "~2.1.0" + postgres-interval "^3.0.0" + postgres-range "^1.1.1" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -6486,6 +7410,55 @@ postcss@^8, postcss@^8.4.23: picocolors "^1.0.0" source-map-js "^1.0.2" +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-array@~3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.2.tgz#68d6182cb0f7f152a7e60dc6a6889ed74b0a5f98" + integrity sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog== + +postgres-bytea@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== + +postgres-bytea@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089" + integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw== + dependencies: + obuf "~1.1.2" + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-date@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.1.0.tgz#b85d3c1fb6fb3c6c8db1e9942a13a3bf625189d0" + integrity sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + +postgres-interval@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a" + integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== + +postgres-range@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863" + integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -6529,6 +7502,11 @@ process@^0.11.1: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -7022,6 +8000,15 @@ require-from-string@^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-in-the-middle@^7.1.1: + version "7.4.0" + resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz#606977820d4b5f9be75e5a108ce34cfed25b3bb4" + integrity sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ== + dependencies: + debug "^4.3.5" + module-details-from-path "^1.0.3" + resolve "^1.22.8" + 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" @@ -7064,7 +8051,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: +resolve@1.22.8, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.22.8: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -7124,6 +8111,13 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" +rollup@3.29.4: + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + optionalDependencies: + fsevents "~2.3.2" + rollup@^2.43.1: version "2.79.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" @@ -7269,6 +8263,11 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.5.2: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" @@ -7339,6 +8338,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shimmer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -7353,6 +8357,11 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -7459,7 +8468,7 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -stack-generator@^2.0.3, stack-generator@^2.0.5: +stack-generator@^2.0.5: version "2.0.10" resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ== @@ -7495,6 +8504,13 @@ stacktrace-js@^2.0.2: stack-generator "^2.0.5" stacktrace-gps "^3.0.4" +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" @@ -7508,7 +8524,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7517,6 +8533,15 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: version "4.0.10" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" @@ -7582,13 +8607,20 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -8008,6 +9040,11 @@ type-fest@^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.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -8127,6 +9164,16 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== +unplugin@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.0.1.tgz#83b528b981cdcea1cad422a12cd02e695195ef3f" + integrity sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA== + dependencies: + acorn "^8.8.1" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.5.0" + upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" @@ -8140,6 +9187,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -8301,6 +9356,16 @@ webpack-sources@^1.4.3: source-list-map "^2.0.0" source-map "~0.6.1" +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" + integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== + whatwg-encoding@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" @@ -8398,7 +9463,7 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.0" -which@^2.0.1: +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== @@ -8582,6 +9647,15 @@ workbox-window@6.6.1, workbox-window@^6.5.4: "@types/trusted-types" "^2.0.2" workbox-core "6.6.1" +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.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" @@ -8591,14 +9665,14 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" wrappy@1: version "1.0.2" @@ -8646,7 +9720,7 @@ xss@^1.0.9: commander "^2.20.3" cssfilter "0.0.10" -xtend@~4.0.1: +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==