scrabble-solver 2.18.5 → 2.18.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/.nx/workspace-data/d/server-process.json +3 -3
  2. package/.nx/workspace-data/file-map.json +491 -491
  3. package/.nx/workspace-data/lockfile-dependencies.json +12490 -0
  4. package/.nx/workspace-data/lockfile-nodes.json +23570 -0
  5. package/.nx/workspace-data/nx_files.lock +0 -0
  6. package/.nx/workspace-data/nx_files_v2.nxt +0 -0
  7. package/.nx/workspace-data/project-graph.json +759 -1018
  8. package/CLAUDE.md +2 -1
  9. package/bin/scrabble-solver.js +1 -1
  10. package/bump-version.js +2 -2
  11. package/bun.lock +167 -221
  12. package/bunfig.toml +1 -0
  13. package/lerna.json +1 -1
  14. package/package.json +20 -20
  15. package/packages/configs/package.json +3 -3
  16. package/packages/constants/package.json +1 -1
  17. package/packages/dictionaries/package.json +5 -5
  18. package/packages/logger/package.json +1 -1
  19. package/packages/scrabble-solver/.next/BUILD_ID +1 -1
  20. package/packages/scrabble-solver/.next/build-manifest.json +17 -17
  21. package/packages/scrabble-solver/.next/cache/.previewinfo +1 -1
  22. package/packages/scrabble-solver/.next/cache/.rscinfo +1 -1
  23. package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
  24. package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +2 -2
  25. package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
  26. package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack.old +0 -0
  27. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack +0 -0
  28. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  29. package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
  30. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
  31. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack.old +0 -0
  32. package/packages/scrabble-solver/.next/diagnostics/framework.json +1 -1
  33. package/packages/scrabble-solver/.next/next-server.js.nft.json +1 -1
  34. package/packages/scrabble-solver/.next/prerender-manifest.json +4 -4
  35. package/packages/scrabble-solver/.next/required-server-files.js +16 -1
  36. package/packages/scrabble-solver/.next/required-server-files.json +16 -1
  37. package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
  38. package/packages/scrabble-solver/.next/server/chunks/30.js +2 -2
  39. package/packages/scrabble-solver/.next/server/chunks/612.js +1 -1
  40. package/packages/scrabble-solver/.next/server/chunks/67.js +1 -1
  41. package/packages/scrabble-solver/.next/server/chunks/671.js +1 -1
  42. package/packages/scrabble-solver/.next/server/chunks/712.js +1 -1
  43. package/packages/scrabble-solver/.next/server/chunks/853.js +3 -3
  44. package/packages/scrabble-solver/.next/server/chunks/942.js +1 -1
  45. package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
  46. package/packages/scrabble-solver/.next/server/pages/404.html +1 -1
  47. package/packages/scrabble-solver/.next/server/pages/500.html +1 -1
  48. package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
  49. package/packages/scrabble-solver/.next/server/pages/_document.js.nft.json +1 -1
  50. package/packages/scrabble-solver/.next/server/pages/_error.js.nft.json +1 -1
  51. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js +1 -1
  52. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  53. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale].js +1 -1
  54. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
  55. package/packages/scrabble-solver/.next/server/pages/api/solve.js +1 -1
  56. package/packages/scrabble-solver/.next/server/pages/api/solve.js.nft.json +1 -1
  57. package/packages/scrabble-solver/.next/server/pages/api/verify.js +1 -1
  58. package/packages/scrabble-solver/.next/server/pages/api/verify.js.nft.json +1 -1
  59. package/packages/scrabble-solver/.next/server/pages/api/visit.js +1 -1
  60. package/packages/scrabble-solver/.next/server/pages/api/visit.js.nft.json +1 -1
  61. package/packages/scrabble-solver/.next/server/pages/index.html +1 -1
  62. package/packages/scrabble-solver/.next/server/pages/index.js +3 -3
  63. package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
  64. package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
  65. package/packages/scrabble-solver/.next/server/pages/not-found.html +1 -1
  66. package/packages/scrabble-solver/.next/server/preview-props.json +5 -0
  67. package/packages/scrabble-solver/.next/server/route-cache/PAGES/8a5edab282632443219e051e4ade2d1d5bbc671c781051bf1437897cbdfea0f1/$/index.html +1 -1
  68. package/packages/scrabble-solver/.next/server/route-cache/PAGES/8a5edab282632443219e051e4ade2d1d5bbc671c781051bf1437897cbdfea0f1/$/index.json +1 -1
  69. package/packages/scrabble-solver/.next/server/route-cache/PAGES/8a5edab282632443219e051e4ade2d1d5bbc671c781051bf1437897cbdfea0f1/$/index.meta +1 -1
  70. package/packages/scrabble-solver/.next/static/3Gq7FQIRlitT1llwNwhr2/_buildManifest.js +1 -0
  71. package/packages/scrabble-solver/.next/static/chunks/101-bb2fe4023bf9f5a4.js +3 -0
  72. package/packages/scrabble-solver/.next/static/chunks/{256.2a4fa7f278e0a97d.js → 256.ad3906547e15ca9d.js} +1 -1
  73. package/packages/scrabble-solver/.next/static/chunks/827.d01b6d69af340ba4.js +1 -0
  74. package/packages/scrabble-solver/.next/static/chunks/framework-0cd78dbcb5962d50.js +1 -0
  75. package/packages/scrabble-solver/.next/static/chunks/main-1b24c44d79c86b6e.js +5 -0
  76. package/packages/scrabble-solver/.next/static/chunks/pages/{_app-0c68f165d6de8507.js → _app-a32e0cf53e276591.js} +1 -1
  77. package/packages/scrabble-solver/.next/static/chunks/pages/index-357a0f88e80ff0b0.js +1 -0
  78. package/packages/scrabble-solver/.next/static/chunks/{webpack-31879a8fb6dcffd0.js → webpack-411457e3de3a41ad.js} +1 -1
  79. package/packages/scrabble-solver/.next/trace +36 -22
  80. package/packages/scrabble-solver/.next/trace-build +1 -1
  81. package/packages/scrabble-solver/.next/types/cache-life.d.ts +11 -43
  82. package/packages/scrabble-solver/.next/types/validator.ts +7 -0
  83. package/packages/scrabble-solver/package.json +40 -40
  84. package/packages/scrabble-solver/public/service-worker.js +2 -2
  85. package/packages/scrabble-solver/tsconfig.tsbuildinfo +1 -1
  86. package/packages/solver/package.json +6 -6
  87. package/packages/types/package.json +2 -2
  88. package/packages/word-definitions/package.json +7 -7
  89. package/packages/word-lists/package.json +8 -8
  90. package/playwright-report/index.html +2 -2
  91. package/packages/scrabble-solver/.next/static/YHx536pklAqlc9UGAXCj8/_buildManifest.js +0 -1
  92. package/packages/scrabble-solver/.next/static/chunks/101-fee295c7587c0836.js +0 -3
  93. package/packages/scrabble-solver/.next/static/chunks/827.09f660ca0a951d12.js +0 -1
  94. package/packages/scrabble-solver/.next/static/chunks/framework-988fd6f19d2744e8.js +0 -1
  95. package/packages/scrabble-solver/.next/static/chunks/main-d397eb8af33c5163.js +0 -5
  96. package/packages/scrabble-solver/.next/static/chunks/pages/index-ea21d96a88f25000.js +0 -1
  97. /package/packages/scrabble-solver/.next/static/{YHx536pklAqlc9UGAXCj8 → 3Gq7FQIRlitT1llwNwhr2}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- [{"name":"run-typescript","duration":153375,"timestamp":751401682,"id":13,"parentId":1,"tags":{},"startTime":1791233328477,"traceId":"9c4936d30bc5d746"},{"name":"run-webpack","duration":5637250,"timestamp":751557904,"id":15,"parentId":1,"tags":{},"startTime":1791233328634,"traceId":"9c4936d30bc5d746"},{"name":"static-check","duration":170332,"timestamp":757256154,"id":2114,"parentId":1,"tags":{},"startTime":1791233334332,"traceId":"9c4936d30bc5d746"},{"name":"static-generation","duration":247370,"timestamp":757436827,"id":2132,"parentId":1,"tags":{},"startTime":1791233334512,"traceId":"9c4936d30bc5d746"},{"name":"collect-build-traces","duration":4178550,"timestamp":757426921,"id":2129,"parentId":1,"tags":{},"startTime":1791233334503,"traceId":"9c4936d30bc5d746"},{"name":"telemetry-flush","duration":22,"timestamp":761606654,"id":2139,"parentId":1,"tags":{},"startTime":1791233338682,"traceId":"9c4936d30bc5d746"},{"name":"next-build","duration":10437838,"timestamp":751168842,"id":1,"tags":{"buildMode":"default","version":"16.3.8","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1791233328244,"traceId":"9c4936d30bc5d746"}]
1
+ [{"name":"run-typescript","duration":154241,"timestamp":1306899578,"id":13,"parentId":1,"tags":{},"startTime":1791480418660,"traceId":"85ef3cafbb41d076"},{"name":"run-webpack","duration":5744230,"timestamp":1307056993,"id":15,"parentId":1,"tags":{},"startTime":1791480418817,"traceId":"85ef3cafbb41d076"},{"name":"static-check","duration":176743,"timestamp":1312866796,"id":2117,"parentId":1,"tags":{},"startTime":1791480424627,"traceId":"85ef3cafbb41d076"},{"name":"static-generation","duration":247325,"timestamp":1313054709,"id":2135,"parentId":1,"tags":{},"startTime":1791480424815,"traceId":"85ef3cafbb41d076"},{"name":"collect-build-traces","duration":4195776,"timestamp":1313043970,"id":2132,"parentId":1,"tags":{},"startTime":1791480424804,"traceId":"85ef3cafbb41d076"},{"name":"telemetry-flush","duration":24,"timestamp":1317240985,"id":2142,"parentId":1,"tags":{},"startTime":1791480429001,"traceId":"85ef3cafbb41d076"},{"name":"next-build","duration":10570940,"timestamp":1306670077,"id":1,"tags":{"buildMode":"default","version":"16.4.0","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1791480418431,"traceId":"85ef3cafbb41d076"}]
@@ -1,16 +1,17 @@
1
1
  // Type definitions for Next.js cacheLife configs
2
2
 
3
- declare module 'next/cache' {
4
- export { unstable_cache } from 'next/dist/server/web/spec-extension/unstable-cache'
5
- export {
6
- updateTag,
7
- revalidateTag,
8
- revalidatePath,
9
- refresh,
10
- } from 'next/dist/server/web/spec-extension/revalidate'
11
- export { unstable_noStore } from 'next/dist/server/web/spec-extension/unstable-no-store'
12
- export { io } from 'next/dist/server/request/io'
3
+ export {}
13
4
 
5
+ declare module 'next/cache' {
6
+ export interface CacheLifeProfiles {
7
+ "default": true
8
+ "seconds": true
9
+ "minutes": true
10
+ "hours": true
11
+ "days": true
12
+ "weeks": true
13
+ "max": true
14
+ }
14
15
 
15
16
  /**
16
17
  * Cache this `"use cache"` for a timespan defined by the `"default"` profile.
@@ -110,37 +111,4 @@ declare module 'next/cache' {
110
111
  */
111
112
  export function cacheLife(profile: "max"): void
112
113
 
113
- /**
114
- * Cache this `"use cache"` using a custom timespan.
115
- * ```
116
- * stale: ... // seconds
117
- * revalidate: ... // seconds
118
- * expire: ... // seconds
119
- * ```
120
- *
121
- * This is similar to Cache-Control: max-age=`stale`,s-max-age=`revalidate`,stale-while-revalidate=`expire-revalidate`
122
- *
123
- * If a value is left out, the lowest of other cacheLife() calls or the default, is used instead.
124
- */
125
- export function cacheLife(profile: {
126
- /**
127
- * This cache may be stale on clients for ... seconds before checking with the server.
128
- */
129
- stale?: number,
130
- /**
131
- * If the server receives a new request after ... seconds, start revalidating new values in the background.
132
- */
133
- revalidate?: number,
134
- /**
135
- * If this entry has no traffic for ... seconds it will expire. The next request will recompute it.
136
- */
137
- expire?: number
138
- }): void
139
-
140
-
141
- import { cacheTag } from 'next/dist/server/use-cache/cache-tag'
142
- export { cacheTag }
143
-
144
- export const unstable_cacheTag: typeof cacheTag
145
- export const unstable_cacheLife: typeof cacheLife
146
114
  }
@@ -45,6 +45,7 @@ type ApiRouteConfig = {
45
45
  type __IsExpected<Specific extends PagesPageConfig> = Specific
46
46
  const handler = {} as typeof import("../../src/pages/index.js")
47
47
  type __Check = __IsExpected<typeof handler>
48
+
48
49
  // @ts-ignore
49
50
  type __Unused = __Check
50
51
  }
@@ -54,6 +55,7 @@ type ApiRouteConfig = {
54
55
  type __IsExpected<Specific extends PagesPageConfig> = Specific
55
56
  const handler = {} as typeof import("../../src/pages/not-found.js")
56
57
  type __Check = __IsExpected<typeof handler>
58
+
57
59
  // @ts-ignore
58
60
  type __Unused = __Check
59
61
  }
@@ -63,6 +65,7 @@ type ApiRouteConfig = {
63
65
  type __IsExpected<Specific extends ApiRouteConfig> = Specific
64
66
  const handler = {} as typeof import("../../src/pages/api/dictionary/[locale]/[word].js")
65
67
  type __Check = __IsExpected<typeof handler>
68
+
66
69
  // @ts-ignore
67
70
  type __Unused = __Check
68
71
  }
@@ -72,6 +75,7 @@ type ApiRouteConfig = {
72
75
  type __IsExpected<Specific extends ApiRouteConfig> = Specific
73
76
  const handler = {} as typeof import("../../src/pages/api/dictionary/[locale]/index.js")
74
77
  type __Check = __IsExpected<typeof handler>
78
+
75
79
  // @ts-ignore
76
80
  type __Unused = __Check
77
81
  }
@@ -81,6 +85,7 @@ type ApiRouteConfig = {
81
85
  type __IsExpected<Specific extends ApiRouteConfig> = Specific
82
86
  const handler = {} as typeof import("../../src/pages/api/solve.js")
83
87
  type __Check = __IsExpected<typeof handler>
88
+
84
89
  // @ts-ignore
85
90
  type __Unused = __Check
86
91
  }
@@ -90,6 +95,7 @@ type ApiRouteConfig = {
90
95
  type __IsExpected<Specific extends ApiRouteConfig> = Specific
91
96
  const handler = {} as typeof import("../../src/pages/api/verify.js")
92
97
  type __Check = __IsExpected<typeof handler>
98
+
93
99
  // @ts-ignore
94
100
  type __Unused = __Check
95
101
  }
@@ -99,6 +105,7 @@ type ApiRouteConfig = {
99
105
  type __IsExpected<Specific extends ApiRouteConfig> = Specific
100
106
  const handler = {} as typeof import("../../src/pages/api/visit.js")
101
107
  type __Check = __IsExpected<typeof handler>
108
+
102
109
  // @ts-ignore
103
110
  type __Unused = __Check
104
111
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/scrabble-solver",
3
- "version": "2.18.5",
3
+ "version": "2.18.6",
4
4
  "description": "Scrabble Solver web app: free word finder and board solver for Scrabble, Super Scrabble, Literaki, and more.",
5
5
  "keywords": [
6
6
  "scrabble",
@@ -54,47 +54,47 @@
54
54
  "type-check": "bun run generate-scss-types && tsc --noEmit"
55
55
  },
56
56
  "dependencies": {
57
- "@floating-ui/react": "^0.27.20",
58
- "@kamilmielnik/gaddag": "^3.0.0",
59
- "@reduxjs/toolkit": "^2.13.0",
60
- "@scrabble-solver/configs": "^2.18.5",
61
- "@scrabble-solver/constants": "^2.18.5",
62
- "@scrabble-solver/dictionaries": "^2.18.5",
63
- "@scrabble-solver/logger": "^2.18.5",
64
- "@scrabble-solver/solver": "^2.18.5",
65
- "@scrabble-solver/types": "^2.18.5",
66
- "@scrabble-solver/word-definitions": "^2.18.5",
67
- "classnames": "^2.5.1",
68
- "env-cmd": "^11.0.0",
69
- "include-media": "^2.0.0",
70
- "include-media-query-builder": "^1.1.0",
71
- "next": "^16.3.8",
72
- "normalize.css": "^8.0.1",
73
- "react": "^19.3.0",
74
- "react-cool-onclickoutside": "^1.7.0",
75
- "react-dom": "^19.3.0",
76
- "react-highlight-words": "^0.21.0",
77
- "react-modal": "^3.16.3",
78
- "react-redux": "^9.3.0",
79
- "react-window": "^2.3.3",
80
- "redux-saga": "^1.5.1",
81
- "store2": "^2.14.4",
82
- "use-debounce": "^10.1.1",
83
- "workbox-expiration": "^7.4.1",
84
- "workbox-precaching": "^7.4.1",
85
- "workbox-routing": "^7.4.1",
86
- "workbox-webpack-plugin": "^7.4.1",
87
- "workbox-window": "^7.4.1"
57
+ "@floating-ui/react": "0.27.20",
58
+ "@kamilmielnik/gaddag": "3.0.0",
59
+ "@reduxjs/toolkit": "2.13.0",
60
+ "@scrabble-solver/configs": "2.18.6",
61
+ "@scrabble-solver/constants": "2.18.6",
62
+ "@scrabble-solver/dictionaries": "2.18.6",
63
+ "@scrabble-solver/logger": "2.18.6",
64
+ "@scrabble-solver/solver": "2.18.6",
65
+ "@scrabble-solver/types": "2.18.6",
66
+ "@scrabble-solver/word-definitions": "2.18.6",
67
+ "classnames": "2.5.1",
68
+ "env-cmd": "11.0.0",
69
+ "include-media": "2.0.0",
70
+ "include-media-query-builder": "1.1.0",
71
+ "next": "16.4.0",
72
+ "normalize.css": "8.0.1",
73
+ "react": "19.3.0",
74
+ "react-cool-onclickoutside": "1.7.0",
75
+ "react-dom": "19.3.0",
76
+ "react-highlight-words": "0.21.0",
77
+ "react-modal": "3.16.3",
78
+ "react-redux": "9.3.0",
79
+ "react-window": "2.3.3",
80
+ "redux-saga": "1.5.1",
81
+ "store2": "2.14.4",
82
+ "use-debounce": "10.1.1",
83
+ "workbox-expiration": "7.4.1",
84
+ "workbox-precaching": "7.4.1",
85
+ "workbox-routing": "7.4.1",
86
+ "workbox-webpack-plugin": "7.4.1",
87
+ "workbox-window": "7.4.1"
88
88
  },
89
89
  "devDependencies": {
90
- "@svgr/webpack": "^8.1.0",
91
- "@types/react": "^19.3.0",
92
- "@types/react-dom": "^19.3.0",
93
- "@types/react-highlight-words": "^0.20.1",
94
- "@types/react-modal": "^3.16.3",
95
- "@types/react-portal": "^4.0.7",
96
- "postcss": "^8.5.29",
97
- "sass": "^1.105.1"
90
+ "@svgr/webpack": "8.1.0",
91
+ "@types/react": "19.3.0",
92
+ "@types/react-dom": "19.3.0",
93
+ "@types/react-highlight-words": "0.20.1",
94
+ "@types/react-modal": "3.16.3",
95
+ "@types/react-portal": "4.0.7",
96
+ "postcss": "8.5.29",
97
+ "sass": "1.105.1"
98
98
  },
99
99
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
100
100
  }
@@ -1,2 +1,2 @@
1
- (()=>{"use strict";let e,t,s;var a,r={303:()=>{try{self["workbox:strategies:7.4.0"]&&_()}catch(e){}},448:()=>{try{self["workbox:routing:7.4.0"]&&_()}catch(e){}},693:()=>{try{self["workbox:core:7.4.0"]&&_()}catch(e){}},802:()=>{try{self["workbox:precaching:7.4.0"]&&_()}catch(e){}}},i={};function n(e){var t=i[e];if(void 0!==t)return t.exports;var s=i[e]={exports:{}},a=!0;try{r[e](s,s.exports,n),a=!1}finally{a&&delete i[e]}return s.exports}n(693);class l extends Error{constructor(e,t){super(((e,...t)=>{let s=e;return t.length>0&&(s+=` :: ${JSON.stringify(t)}`),s})(e,t)),this.name=e,this.details=t}}let c={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"u">typeof registration?registration.scope:""},h=e=>[c.prefix,e,c.suffix].filter(e=>e&&e.length>0).join("-"),o=e=>e||h(c.precache);function u(e,t){let s=t();return e.waitUntil(s),s}n(802);class f{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:s})=>{if("install"===e.type&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;s?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return s}}}class d{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let s=(null==t?void 0:t.cacheKey)||this._precacheController.getCacheKeyForURL(e.url);return s?new Request(s,{headers:e.headers}):e},this._precacheController=e}}async function p(t,s){let a=null;if(t.url&&(a=new URL(t.url).origin),a!==self.location.origin)throw new l("cross-origin-copy-response",{origin:a});let r=t.clone(),i={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},n=s?s(i):i,c=!function(){if(void 0===e){let t=new Response("");if("body"in t)try{new Response(t.body),e=!0}catch(t){e=!1}e=!1}return e}()?await r.blob():r.body;return new Response(c,n)}function w(e,t){let s=new URL(e);for(let e of t)s.searchParams.delete(e);return s.href}async function y(e,t,s,a){let r=w(t.url,s);if(t.url===r)return e.match(t,a);let i=Object.assign(Object.assign({},a),{ignoreSearch:!0});for(let n of(await e.keys(t,i)))if(r===w(n.url,s))return e.match(n,a)}class g{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}let m=new Set;async function R(){for(let e of m)await e()}function C(e){return"string"==typeof e?new Request(e):e}n(303);class b{constructor(e,t){for(const s of(this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new g,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map,this._plugins))this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:t}=this,s=C(e);if("navigate"===s.mode&&t instanceof FetchEvent&&t.preloadResponse){let e=await t.preloadResponse;if(e)return e}let a=this.hasCallback("fetchDidFail")?s.clone():null;try{for(let e of this.iterateCallbacks("requestWillFetch"))s=await e({request:s.clone(),event:t})}catch(e){if(e instanceof Error)throw new l("plugin-error-request-will-fetch",{thrownErrorMessage:e.message})}let r=s.clone();try{let e;for(let a of(e=await fetch(s,"navigate"===s.mode?void 0:this._strategy.fetchOptions),this.iterateCallbacks("fetchDidSucceed")))e=await a({event:t,request:r,response:e});return e}catch(e){throw a&&await this.runCallbacks("fetchDidFail",{error:e,event:t,originalRequest:a.clone(),request:r.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){let t,s=C(e),{cacheName:a,matchOptions:r}=this._strategy,i=await this.getCacheKey(s,"read"),n=Object.assign(Object.assign({},r),{cacheName:a});for(let e of(t=await caches.match(i,n),this.iterateCallbacks("cachedResponseWillBeUsed")))t=await e({cacheName:a,matchOptions:r,cachedResponse:t,request:i,event:this.event})||void 0;return t}async cachePut(e,t){let s=C(e);await new Promise(e=>setTimeout(e,0));let a=await this.getCacheKey(s,"write");if(!t)throw new l("cache-put-with-no-response",{url:new URL(String(a.url),location.href).href.replace(RegExp(`^${location.origin}`),"")});let r=await this._ensureResponseSafeToCache(t);if(!r)return!1;let{cacheName:i,matchOptions:n}=this._strategy,c=await self.caches.open(i),h=this.hasCallback("cacheDidUpdate"),o=h?await y(c,a.clone(),["__WB_REVISION__"],n):null;try{await c.put(a,h?r.clone():r)}catch(e){if(e instanceof Error)throw"QuotaExceededError"===e.name&&await R(),e}for(let e of this.iterateCallbacks("cacheDidUpdate"))await e({cacheName:i,oldResponse:o,newResponse:r.clone(),request:a,event:this.event});return!0}async getCacheKey(e,t){let s=`${e.url} | ${t}`;if(!this._cacheKeys[s]){let a=e;for(let e of this.iterateCallbacks("cacheKeyWillBeUsed"))a=C(await e({mode:t,request:a,event:this.event,params:this.params}));this._cacheKeys[s]=a}return this._cacheKeys[s]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if("function"==typeof t[e]){let s=this._pluginStateMap.get(t),a=a=>{let r=Object.assign(Object.assign({},a),{state:s});return t[e](r)};yield a}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>"rejected"===e.status);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(let e of this.iterateCallbacks("cacheWillUpdate"))if(t=await e({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return!s&&t&&200!==t.status&&(t=void 0),t}}class v{constructor(e={}){this.cacheName=(e=>e||h(c.runtime))(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,s="string"==typeof e.request?new Request(e.request):e.request,a=new b(this,{event:t,request:s,params:"params"in e?e.params:void 0}),r=this._getResponse(a,s,t),i=this._awaitComplete(r,a,s,t);return[r,i]}async _getResponse(e,t,s){let a;await e.runCallbacks("handlerWillStart",{event:s,request:t});try{if(!(a=await this._handle(t,e))||"error"===a.type)throw new l("no-response",{url:t.url})}catch(r){if(r instanceof Error){for(let i of e.iterateCallbacks("handlerDidError"))if(a=await i({error:r,event:s,request:t}))break}if(a);else throw r}for(let r of e.iterateCallbacks("handlerWillRespond"))a=await r({event:s,request:t,response:a});return a}async _awaitComplete(e,t,s,a){let r,i;try{r=await e}catch(e){}try{await t.runCallbacks("handlerDidRespond",{event:a,request:s,response:r}),await t.doneWaiting()}catch(e){e instanceof Error&&(i=e)}if(await t.runCallbacks("handlerDidComplete",{event:a,request:s,response:r,error:i}),t.destroy(),i)throw i}}class L extends v{constructor(e={}){e.cacheName=o(e.cacheName),super(e),this._fallbackToNetwork=!1!==e.fallbackToNetwork,this.plugins.push(L.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){let s=await t.cacheMatch(e);return s||(t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,t){let s,a=t.params||{};if(this._fallbackToNetwork){let r=a.integrity,i=e.integrity,n=!i||i===r;s=await t.fetch(new Request(e,{integrity:"no-cors"!==e.mode?i||r:void 0})),r&&n&&"no-cors"!==e.mode&&(this._useDefaultCacheabilityPluginIfNeeded(),await t.cachePut(e,s.clone()))}else throw new l("missing-precache-entry",{cacheName:this.cacheName,url:e.url});return s}async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded();let s=await t.fetch(e);if(!await t.cachePut(e,s.clone()))throw new l("bad-precaching-response",{url:e.url,status:s.status});return s}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(let[s,a]of this.plugins.entries())a!==L.copyRedirectedCacheableResponsesPlugin&&(a===L.defaultPrecacheCacheabilityPlugin&&(e=s),a.cacheWillUpdate&&t++);0===t?this.plugins.push(L.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}L.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:e})=>!e||e.status>=400?null:e},L.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:e})=>e.redirected?await p(e):e};class U{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new L({cacheName:o(e),plugins:[...t,new d({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){let t=[];for(let s of e){"string"==typeof s?t.push(s):s&&void 0===s.revision&&t.push(s.url);let{cacheKey:e,url:a}=function(e){if(!e)throw new l("add-to-cache-list-unexpected-type",{entry:e});if("string"==typeof e){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:t,url:s}=e;if(!s)throw new l("add-to-cache-list-unexpected-type",{entry:e});if(!t){let e=new URL(s,location.href);return{cacheKey:e.href,url:e.href}}let a=new URL(s,location.href),r=new URL(s,location.href);return a.searchParams.set("__WB_REVISION__",t),{cacheKey:a.href,url:r.href}}(s),r="string"!=typeof s&&s.revision?"reload":"default";if(this._urlsToCacheKeys.has(a)&&this._urlsToCacheKeys.get(a)!==e)throw new l("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(a),secondEntry:e});if("string"!=typeof s&&s.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==s.integrity)throw new l("add-to-cache-list-conflicting-integrities",{url:a});this._cacheKeysToIntegrities.set(e,s.integrity)}this._urlsToCacheKeys.set(a,e),this._urlsToCacheModes.set(a,r),t.length>0&&console.warn(`Workbox is precaching URLs without revision info: ${t.join(", ")}
2
- This is generally NOT safe. Learn more at https://bit.ly/wb-precache`)}}install(e){return u(e,async()=>{let t=new f;for(let[s,a]of(this.strategy.plugins.push(t),this._urlsToCacheKeys)){let t=this._cacheKeysToIntegrities.get(a),r=this._urlsToCacheModes.get(s),i=new Request(s,{integrity:t,cache:r,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:a},request:i,event:e}))}let{updatedURLs:s,notUpdatedURLs:a}=t;return{updatedURLs:s,notUpdatedURLs:a}})}activate(e){return u(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),a=[];for(let r of t)s.has(r.url)||(await e.delete(r),a.push(r.url));return{deletedURLs:a}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s)return(await self.caches.open(this.strategy.cacheName)).match(s)}createHandlerBoundToURL(e){let t=this.getCacheKeyForURL(e);if(!t)throw new l("non-precached-url",{url:e});return s=>(s.request=new Request(e),s.params=Object.assign({cacheKey:t},s.params),this.strategy.handle(s))}}let k=()=>(t||(t=new U),t);n(448);let T=e=>e&&"object"==typeof e?e:{handle:e};class K{constructor(e,t,s="GET"){this.handler=T(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=T(e)}}class x extends K{constructor(e,t,s){super(({url:t})=>{let s=e.exec(t.href);if(s)return t.origin!==location.origin&&0!==s.index?void 0:s.slice(1)},t,s)}}class P{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",e=>{let{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)})}addCacheListener(){self.addEventListener("message",e=>{if(e.data&&"CACHE_URLS"===e.data.type){let{payload:t}=e.data,s=Promise.all(t.urlsToCache.map(t=>{"string"==typeof t&&(t=[t]);let s=new Request(...t);return this.handleRequest({request:s,event:e})}));e.waitUntil(s),e.ports&&e.ports[0]&&s.then(()=>e.ports[0].postMessage(!0))}})}handleRequest({request:e,event:t}){let s,a=new URL(e.url,location.href);if(!a.protocol.startsWith("http"))return;let r=a.origin===location.origin,{params:i,route:n}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:a}),l=n&&n.handler,c=e.method;if(!l&&this._defaultHandlerMap.has(c)&&(l=this._defaultHandlerMap.get(c)),!l)return;try{s=l.handle({url:a,request:e,event:t,params:i})}catch(e){s=Promise.reject(e)}let h=n&&n.catchHandler;return s instanceof Promise&&(this._catchHandler||h)&&(s=s.catch(async s=>{if(h)try{return await h.handle({url:a,request:e,event:t,params:i})}catch(e){e instanceof Error&&(s=e)}if(this._catchHandler)return this._catchHandler.handle({url:a,request:e,event:t});throw s})),s}findMatchingRoute({url:e,sameOrigin:t,request:s,event:a}){for(let r of this._routes.get(s.method)||[]){let i,n=r.match({url:e,sameOrigin:t,request:s,event:a});if(n)return Array.isArray(i=n)&&0===i.length||n.constructor===Object&&0===Object.keys(n).length?i=void 0:"boolean"==typeof n&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(e,t="GET"){this._defaultHandlerMap.set(t,T(e))}setCatchHandler(e){this._catchHandler=T(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new l("unregister-route-but-not-found-with-method",{method:e.method});let t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new l("unregister-route-route-not-registered")}}function q(e,t,a){let r;if("string"==typeof e){let s=new URL(e,location.href);r=new K(({url:e})=>e.href===s.href,t,a)}else if(e instanceof RegExp)r=new x(e,t,a);else if("function"==typeof e)r=new K(e,t,a);else if(e instanceof K)r=e;else throw new l("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});return(!s&&((s=new P).addFetchListener(),s.addCacheListener()),s).registerRoute(r),r}class E extends K{constructor(e,t){super(({request:s})=>{let a=e.getURLsToCacheKeys();for(let r of function*(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:a=!0,urlManipulation:r}={}){let i=new URL(e,location.href);i.hash="",yield i.href;let n=function(e,t=[]){for(let s of[...e.searchParams.keys()])t.some(e=>e.test(s))&&e.searchParams.delete(s);return e}(i,t);if(yield n.href,s&&n.pathname.endsWith("/")){let e=new URL(n.href);e.pathname+=s,yield e.href}if(a){let e=new URL(n.href);e.pathname+=".html",yield e.href}if(r)for(let e of r({url:i}))yield e.href}(s.url,t)){let t=a.get(r);if(t){let s=e.getIntegrityForCacheKey(t);return{cacheKey:t,integrity:s}}}},e.strategy)}}let M="-precache-",N=async(e,t=M)=>{let s=(await self.caches.keys()).filter(s=>s.includes(t)&&s.includes(self.registration.scope)&&s!==e);return await Promise.all(s.map(e=>self.caches.delete(e))),s};class W extends K{constructor(e,{allowlist:t=[/./],denylist:s=[]}={}){super(e=>this._match(e),e),this._allowlist=t,this._denylist=s}_match({url:e,request:t}){if(t&&"navigate"!==t.mode)return!1;let s=e.pathname+e.search;for(let e of this._denylist)if(e.test(s))return!1;return!!this._allowlist.some(e=>e.test(s))}}let O="app-shell";async function I(){let e=await caches.open(O);await e.add("/")}async function S(e){let{request:t}=e;try{return await fetch(t)}catch(s){let e=await caches.open(O),t=await e.match("/");if(!t)throw s;return t}}self.addEventListener("install",e=>{e.waitUntil(I()),self.skipWaiting()}),self.addEventListener("activate",()=>{self.clients.claim()}),self.addEventListener("activate",e=>{let t=o();e.waitUntil(N(t).then(e=>{}))}),a=[{'revision':'1960ebd3e6b0c7fc7bdc6186762dd2b7','url':'/_next/build-manifest.json'},{'revision':'723d2f2242ccfe388715c8fc0db5a426','url':'/_next/dynamic-css-manifest.json'},{'revision':'ea88ba9aba20e7d1d2b3d045cbb9e85d','url':'/_next/react-loadable-manifest.json'},{'revision':'d1fc43aadf1fda3b5fe27546d7621f66','url':'/_next/server/dynamic-css-manifest.js'},{'revision':'8021a311c8f857efd010322783930eda','url':'/_next/server/middleware-build-manifest.js'},{'revision':'3c03dfac5c2ba3615ebb74d6620de7ff','url':'/_next/server/middleware-react-loadable-manifest.js'},{'revision':'9fce7989bff5d35b01e177447faca50d','url':'/_next/server/next-font-manifest.js'},{'revision':'d51420cd4aa5d37d6719849cf36d0d6f','url':'/_next/server/next-font-manifest.json'},{'revision':'c4185ff37b2cb8cd5cede1a1781a9c15','url':'/_next/static/YHx536pklAqlc9UGAXCj8/_buildManifest.js'},{'revision':'b6652df95db52feb4daf4eca35380933','url':'/_next/static/YHx536pklAqlc9UGAXCj8/_ssgManifest.js'},{'revision':null,'url':'/_next/static/chunks/100.305bdf9c75b1758f.js'},{'revision':null,'url':'/_next/static/chunks/101-fee295c7587c0836.js'},{'revision':null,'url':'/_next/static/chunks/256.2a4fa7f278e0a97d.js'},{'revision':null,'url':'/_next/static/chunks/277.6785dfaf22fdb0b7.js'},{'revision':null,'url':'/_next/static/chunks/307.89e6100f58443679.js'},{'revision':null,'url':'/_next/static/chunks/341.79535ba85bf1986f.js'},{'revision':null,'url':'/_next/static/chunks/363.cec65b1f9668a75e.js'},{'revision':null,'url':'/_next/static/chunks/422.3e55b4c94e328701.js'},{'revision':null,'url':'/_next/static/chunks/541.dcd9e8b804f88da5.js'},{'revision':null,'url':'/_next/static/chunks/631.98d42abad0a60af6.js'},{'revision':null,'url':'/_next/static/chunks/663.bd2c45413fbca518.js'},{'revision':null,'url':'/_next/static/chunks/693.d295da7c7b873986.js'},{'revision':null,'url':'/_next/static/chunks/744.b06c9a3de4a1d877.js'},{'revision':null,'url':'/_next/static/chunks/820.823e9e885ebb66af.js'},{'revision':null,'url':'/_next/static/chunks/827.09f660ca0a951d12.js'},{'revision':null,'url':'/_next/static/chunks/865.59baba8296c9b116.js'},{'revision':null,'url':'/_next/static/chunks/912.077603e4f0bc6cca.js'},{'revision':null,'url':'/_next/static/chunks/939.2ad86b50405c7897.js'},{'revision':null,'url':'/_next/static/chunks/980.dd35e807b18063c1.js'},{'revision':null,'url':'/_next/static/chunks/990.61296e5870b91f11.js'},{'revision':null,'url':'/_next/static/chunks/framework-988fd6f19d2744e8.js'},{'revision':null,'url':'/_next/static/chunks/main-d397eb8af33c5163.js'},{'revision':null,'url':'/_next/static/chunks/pages/_app-0c68f165d6de8507.js'},{'revision':null,'url':'/_next/static/chunks/pages/_error-f0290a98eb3ed0ec.js'},{'revision':null,'url':'/_next/static/chunks/pages/index-ea21d96a88f25000.js'},{'revision':null,'url':'/_next/static/chunks/pages/not-found-a59f9deeeff63d17.js'},{'revision':'846118c33b2c0e922d7b3a7676f81f6f','url':'/_next/static/chunks/polyfills-42372ed130431b0a.js'},{'revision':null,'url':'/_next/static/chunks/webpack-31879a8fb6dcffd0.js'}],k().precache(a),q(new E(k(),void 0)),q(new W(S,{denylist:[/^\/api\//]}))})();
1
+ (()=>{"use strict";let e,t,s;var a,r={303:()=>{try{self["workbox:strategies:7.4.0"]&&_()}catch(e){}},448:()=>{try{self["workbox:routing:7.4.0"]&&_()}catch(e){}},693:()=>{try{self["workbox:core:7.4.0"]&&_()}catch(e){}},802:()=>{try{self["workbox:precaching:7.4.0"]&&_()}catch(e){}}},i={};function n(e){var t=i[e];if(void 0!==t)return t.exports;var s=i[e]={exports:{}},a=!0;try{r[e](s,s.exports,n),a=!1}finally{a&&delete i[e]}return s.exports}n(693);class l extends Error{constructor(e,t){super(((e,...t)=>{let s=e;return t.length>0&&(s+=` :: ${JSON.stringify(t)}`),s})(e,t)),this.name=e,this.details=t}}let c={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"u">typeof registration?registration.scope:""},h=e=>[c.prefix,e,c.suffix].filter(e=>e&&e.length>0).join("-"),o=e=>e||h(c.precache);function u(e,t){let s=t();return e.waitUntil(s),s}n(802);class f{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:s})=>{if("install"===e.type&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;s?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return s}}}class d{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let s=(null==t?void 0:t.cacheKey)||this._precacheController.getCacheKeyForURL(e.url);return s?new Request(s,{headers:e.headers}):e},this._precacheController=e}}async function p(t,s){let a=null;if(t.url&&(a=new URL(t.url).origin),a!==self.location.origin)throw new l("cross-origin-copy-response",{origin:a});let r=t.clone(),i={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},n=s?s(i):i,c=!function(){if(void 0===e){let t=new Response("");if("body"in t)try{new Response(t.body),e=!0}catch(t){e=!1}e=!1}return e}()?await r.blob():r.body;return new Response(c,n)}function w(e,t){let s=new URL(e);for(let e of t)s.searchParams.delete(e);return s.href}async function y(e,t,s,a){let r=w(t.url,s);if(t.url===r)return e.match(t,a);let i=Object.assign(Object.assign({},a),{ignoreSearch:!0});for(let n of(await e.keys(t,i)))if(r===w(n.url,s))return e.match(n,a)}class g{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}let m=new Set;async function R(){for(let e of m)await e()}function C(e){return"string"==typeof e?new Request(e):e}n(303);class b{constructor(e,t){for(let s of(this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new g,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map,this._plugins))this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:t}=this,s=C(e);if("navigate"===s.mode&&t instanceof FetchEvent&&t.preloadResponse){let e=await t.preloadResponse;if(e)return e}let a=this.hasCallback("fetchDidFail")?s.clone():null;try{for(let e of this.iterateCallbacks("requestWillFetch"))s=await e({request:s.clone(),event:t})}catch(e){if(e instanceof Error)throw new l("plugin-error-request-will-fetch",{thrownErrorMessage:e.message})}let r=s.clone();try{let e;for(let a of(e=await fetch(s,"navigate"===s.mode?void 0:this._strategy.fetchOptions),this.iterateCallbacks("fetchDidSucceed")))e=await a({event:t,request:r,response:e});return e}catch(e){throw a&&await this.runCallbacks("fetchDidFail",{error:e,event:t,originalRequest:a.clone(),request:r.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){let t,s=C(e),{cacheName:a,matchOptions:r}=this._strategy,i=await this.getCacheKey(s,"read"),n=Object.assign(Object.assign({},r),{cacheName:a});for(let e of(t=await caches.match(i,n),this.iterateCallbacks("cachedResponseWillBeUsed")))t=await e({cacheName:a,matchOptions:r,cachedResponse:t,request:i,event:this.event})||void 0;return t}async cachePut(e,t){let s=C(e);await new Promise(e=>setTimeout(e,0));let a=await this.getCacheKey(s,"write");if(!t)throw new l("cache-put-with-no-response",{url:new URL(String(a.url),location.href).href.replace(RegExp(`^${location.origin}`),"")});let r=await this._ensureResponseSafeToCache(t);if(!r)return!1;let{cacheName:i,matchOptions:n}=this._strategy,c=await self.caches.open(i),h=this.hasCallback("cacheDidUpdate"),o=h?await y(c,a.clone(),["__WB_REVISION__"],n):null;try{await c.put(a,h?r.clone():r)}catch(e){if(e instanceof Error)throw"QuotaExceededError"===e.name&&await R(),e}for(let e of this.iterateCallbacks("cacheDidUpdate"))await e({cacheName:i,oldResponse:o,newResponse:r.clone(),request:a,event:this.event});return!0}async getCacheKey(e,t){let s=`${e.url} | ${t}`;if(!this._cacheKeys[s]){let a=e;for(let e of this.iterateCallbacks("cacheKeyWillBeUsed"))a=C(await e({mode:t,request:a,event:this.event,params:this.params}));this._cacheKeys[s]=a}return this._cacheKeys[s]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if("function"==typeof t[e]){let s=this._pluginStateMap.get(t),a=a=>{let r=Object.assign(Object.assign({},a),{state:s});return t[e](r)};yield a}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>"rejected"===e.status);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(let e of this.iterateCallbacks("cacheWillUpdate"))if(t=await e({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return!s&&t&&200!==t.status&&(t=void 0),t}}class v{constructor(e={}){this.cacheName=e.cacheName||h(c.runtime),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,s="string"==typeof e.request?new Request(e.request):e.request,a=new b(this,{event:t,request:s,params:"params"in e?e.params:void 0}),r=this._getResponse(a,s,t),i=this._awaitComplete(r,a,s,t);return[r,i]}async _getResponse(e,t,s){let a;await e.runCallbacks("handlerWillStart",{event:s,request:t});try{if(!(a=await this._handle(t,e))||"error"===a.type)throw new l("no-response",{url:t.url})}catch(r){if(r instanceof Error){for(let i of e.iterateCallbacks("handlerDidError"))if(a=await i({error:r,event:s,request:t}))break}if(a);else throw r}for(let r of e.iterateCallbacks("handlerWillRespond"))a=await r({event:s,request:t,response:a});return a}async _awaitComplete(e,t,s,a){let r,i;try{r=await e}catch(e){}try{await t.runCallbacks("handlerDidRespond",{event:a,request:s,response:r}),await t.doneWaiting()}catch(e){e instanceof Error&&(i=e)}if(await t.runCallbacks("handlerDidComplete",{event:a,request:s,response:r,error:i}),t.destroy(),i)throw i}}class L extends v{constructor(e={}){e.cacheName=o(e.cacheName),super(e),this._fallbackToNetwork=!1!==e.fallbackToNetwork,this.plugins.push(L.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){let s=await t.cacheMatch(e);return s||(t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,t){let s,a=t.params||{};if(this._fallbackToNetwork){let r=a.integrity,i=e.integrity,n=!i||i===r;s=await t.fetch(new Request(e,{integrity:"no-cors"!==e.mode?i||r:void 0})),r&&n&&"no-cors"!==e.mode&&(this._useDefaultCacheabilityPluginIfNeeded(),await t.cachePut(e,s.clone()))}else throw new l("missing-precache-entry",{cacheName:this.cacheName,url:e.url});return s}async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded();let s=await t.fetch(e);if(!await t.cachePut(e,s.clone()))throw new l("bad-precaching-response",{url:e.url,status:s.status});return s}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(let[s,a]of this.plugins.entries())a!==L.copyRedirectedCacheableResponsesPlugin&&(a===L.defaultPrecacheCacheabilityPlugin&&(e=s),a.cacheWillUpdate&&t++);0===t?this.plugins.push(L.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}L.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:e})=>!e||e.status>=400?null:e},L.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:e})=>e.redirected?await p(e):e};class U{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new L({cacheName:o(e),plugins:[...t,new d({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){let t=[];for(let s of e){"string"==typeof s?t.push(s):s&&void 0===s.revision&&t.push(s.url);let{cacheKey:e,url:a}=function(e){if(!e)throw new l("add-to-cache-list-unexpected-type",{entry:e});if("string"==typeof e){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:t,url:s}=e;if(!s)throw new l("add-to-cache-list-unexpected-type",{entry:e});if(!t){let e=new URL(s,location.href);return{cacheKey:e.href,url:e.href}}let a=new URL(s,location.href),r=new URL(s,location.href);return a.searchParams.set("__WB_REVISION__",t),{cacheKey:a.href,url:r.href}}(s),r="string"!=typeof s&&s.revision?"reload":"default";if(this._urlsToCacheKeys.has(a)&&this._urlsToCacheKeys.get(a)!==e)throw new l("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(a),secondEntry:e});if("string"!=typeof s&&s.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==s.integrity)throw new l("add-to-cache-list-conflicting-integrities",{url:a});this._cacheKeysToIntegrities.set(e,s.integrity)}this._urlsToCacheKeys.set(a,e),this._urlsToCacheModes.set(a,r),t.length>0&&console.warn(`Workbox is precaching URLs without revision info: ${t.join(", ")}
2
+ This is generally NOT safe. Learn more at https://bit.ly/wb-precache`)}}install(e){return u(e,async()=>{let t=new f;for(let[s,a]of(this.strategy.plugins.push(t),this._urlsToCacheKeys)){let t=this._cacheKeysToIntegrities.get(a),r=this._urlsToCacheModes.get(s),i=new Request(s,{integrity:t,cache:r,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:a},request:i,event:e}))}let{updatedURLs:s,notUpdatedURLs:a}=t;return{updatedURLs:s,notUpdatedURLs:a}})}activate(e){return u(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),a=[];for(let r of t)s.has(r.url)||(await e.delete(r),a.push(r.url));return{deletedURLs:a}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s)return(await self.caches.open(this.strategy.cacheName)).match(s)}createHandlerBoundToURL(e){let t=this.getCacheKeyForURL(e);if(!t)throw new l("non-precached-url",{url:e});return s=>(s.request=new Request(e),s.params=Object.assign({cacheKey:t},s.params),this.strategy.handle(s))}}let k=()=>(t||(t=new U),t);n(448);let T=e=>e&&"object"==typeof e?e:{handle:e};class K{constructor(e,t,s="GET"){this.handler=T(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=T(e)}}class x extends K{constructor(e,t,s){super(({url:t})=>{let s=e.exec(t.href);if(s)return t.origin!==location.origin&&0!==s.index?void 0:s.slice(1)},t,s)}}class P{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",e=>{let{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)})}addCacheListener(){self.addEventListener("message",e=>{if(e.data&&"CACHE_URLS"===e.data.type){let{payload:t}=e.data,s=Promise.all(t.urlsToCache.map(t=>{"string"==typeof t&&(t=[t]);let s=new Request(...t);return this.handleRequest({request:s,event:e})}));e.waitUntil(s),e.ports&&e.ports[0]&&s.then(()=>e.ports[0].postMessage(!0))}})}handleRequest({request:e,event:t}){let s,a=new URL(e.url,location.href);if(!a.protocol.startsWith("http"))return;let r=a.origin===location.origin,{params:i,route:n}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:a}),l=n&&n.handler,c=e.method;if(!l&&this._defaultHandlerMap.has(c)&&(l=this._defaultHandlerMap.get(c)),!l)return;try{s=l.handle({url:a,request:e,event:t,params:i})}catch(e){s=Promise.reject(e)}let h=n&&n.catchHandler;return s instanceof Promise&&(this._catchHandler||h)&&(s=s.catch(async s=>{if(h)try{return await h.handle({url:a,request:e,event:t,params:i})}catch(e){e instanceof Error&&(s=e)}if(this._catchHandler)return this._catchHandler.handle({url:a,request:e,event:t});throw s})),s}findMatchingRoute({url:e,sameOrigin:t,request:s,event:a}){for(let r of this._routes.get(s.method)||[]){let i,n=r.match({url:e,sameOrigin:t,request:s,event:a});if(n)return Array.isArray(i=n)&&0===i.length||n.constructor===Object&&0===Object.keys(n).length?i=void 0:"boolean"==typeof n&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(e,t="GET"){this._defaultHandlerMap.set(t,T(e))}setCatchHandler(e){this._catchHandler=T(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new l("unregister-route-but-not-found-with-method",{method:e.method});let t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new l("unregister-route-route-not-registered")}}function q(e,t,a){let r;if("string"==typeof e){let s=new URL(e,location.href);r=new K(({url:e})=>e.href===s.href,t,a)}else if(e instanceof RegExp)r=new x(e,t,a);else if("function"==typeof e)r=new K(e,t,a);else if(e instanceof K)r=e;else throw new l("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});return(!s&&((s=new P).addFetchListener(),s.addCacheListener()),s).registerRoute(r),r}class E extends K{constructor(e,t){super(({request:s})=>{let a=e.getURLsToCacheKeys();for(let r of function*(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:a=!0,urlManipulation:r}={}){let i=new URL(e,location.href);i.hash="",yield i.href;let n=function(e,t=[]){for(let s of[...e.searchParams.keys()])t.some(e=>e.test(s))&&e.searchParams.delete(s);return e}(i,t);if(yield n.href,s&&n.pathname.endsWith("/")){let e=new URL(n.href);e.pathname+=s,yield e.href}if(a){let e=new URL(n.href);e.pathname+=".html",yield e.href}if(r)for(let e of r({url:i}))yield e.href}(s.url,t)){let t=a.get(r);if(t){let s=e.getIntegrityForCacheKey(t);return{cacheKey:t,integrity:s}}}},e.strategy)}}let M="-precache-",N=async(e,t=M)=>{let s=(await self.caches.keys()).filter(s=>s.includes(t)&&s.includes(self.registration.scope)&&s!==e);return await Promise.all(s.map(e=>self.caches.delete(e))),s};class W extends K{constructor(e,{allowlist:t=[/./],denylist:s=[]}={}){super(e=>this._match(e),e),this._allowlist=t,this._denylist=s}_match({url:e,request:t}){if(t&&"navigate"!==t.mode)return!1;let s=e.pathname+e.search;for(let e of this._denylist)if(e.test(s))return!1;return!!this._allowlist.some(e=>e.test(s))}}let O="app-shell";async function I(){let e=await caches.open(O);await e.add("/")}async function S(e){let{request:t}=e;try{return await fetch(t)}catch(s){let e=await caches.open(O),t=await e.match("/");if(!t)throw s;return t}}self.addEventListener("install",e=>{e.waitUntil(I()),self.skipWaiting()}),self.addEventListener("activate",()=>{self.clients.claim()}),self.addEventListener("activate",e=>{let t=o();e.waitUntil(N(t).then(e=>{}))}),a=[{'revision':'070df0d0177eda51677a37870d5e6b40','url':'/_next/build-manifest.json'},{'revision':'723d2f2242ccfe388715c8fc0db5a426','url':'/_next/dynamic-css-manifest.json'},{'revision':'ea88ba9aba20e7d1d2b3d045cbb9e85d','url':'/_next/react-loadable-manifest.json'},{'revision':'d1fc43aadf1fda3b5fe27546d7621f66','url':'/_next/server/dynamic-css-manifest.js'},{'revision':'076d6c09dccb62b3451173c20a1740f5','url':'/_next/server/middleware-build-manifest.js'},{'revision':'3c03dfac5c2ba3615ebb74d6620de7ff','url':'/_next/server/middleware-react-loadable-manifest.js'},{'revision':'9fce7989bff5d35b01e177447faca50d','url':'/_next/server/next-font-manifest.js'},{'revision':'d51420cd4aa5d37d6719849cf36d0d6f','url':'/_next/server/next-font-manifest.json'},{'revision':'3c05828aa04a20137cc72c18866384ad','url':'/_next/static/3Gq7FQIRlitT1llwNwhr2/_buildManifest.js'},{'revision':'b6652df95db52feb4daf4eca35380933','url':'/_next/static/3Gq7FQIRlitT1llwNwhr2/_ssgManifest.js'},{'revision':null,'url':'/_next/static/chunks/100.305bdf9c75b1758f.js'},{'revision':null,'url':'/_next/static/chunks/101-bb2fe4023bf9f5a4.js'},{'revision':null,'url':'/_next/static/chunks/256.ad3906547e15ca9d.js'},{'revision':null,'url':'/_next/static/chunks/277.6785dfaf22fdb0b7.js'},{'revision':null,'url':'/_next/static/chunks/307.89e6100f58443679.js'},{'revision':null,'url':'/_next/static/chunks/341.79535ba85bf1986f.js'},{'revision':null,'url':'/_next/static/chunks/363.cec65b1f9668a75e.js'},{'revision':null,'url':'/_next/static/chunks/422.3e55b4c94e328701.js'},{'revision':null,'url':'/_next/static/chunks/541.dcd9e8b804f88da5.js'},{'revision':null,'url':'/_next/static/chunks/631.98d42abad0a60af6.js'},{'revision':null,'url':'/_next/static/chunks/663.bd2c45413fbca518.js'},{'revision':null,'url':'/_next/static/chunks/693.d295da7c7b873986.js'},{'revision':null,'url':'/_next/static/chunks/744.b06c9a3de4a1d877.js'},{'revision':null,'url':'/_next/static/chunks/820.823e9e885ebb66af.js'},{'revision':null,'url':'/_next/static/chunks/827.d01b6d69af340ba4.js'},{'revision':null,'url':'/_next/static/chunks/865.59baba8296c9b116.js'},{'revision':null,'url':'/_next/static/chunks/912.077603e4f0bc6cca.js'},{'revision':null,'url':'/_next/static/chunks/939.2ad86b50405c7897.js'},{'revision':null,'url':'/_next/static/chunks/980.dd35e807b18063c1.js'},{'revision':null,'url':'/_next/static/chunks/990.61296e5870b91f11.js'},{'revision':null,'url':'/_next/static/chunks/framework-0cd78dbcb5962d50.js'},{'revision':null,'url':'/_next/static/chunks/main-1b24c44d79c86b6e.js'},{'revision':null,'url':'/_next/static/chunks/pages/_app-a32e0cf53e276591.js'},{'revision':null,'url':'/_next/static/chunks/pages/_error-f0290a98eb3ed0ec.js'},{'revision':null,'url':'/_next/static/chunks/pages/index-357a0f88e80ff0b0.js'},{'revision':null,'url':'/_next/static/chunks/pages/not-found-a59f9deeeff63d17.js'},{'revision':'846118c33b2c0e922d7b3a7676f81f6f','url':'/_next/static/chunks/polyfills-42372ed130431b0a.js'},{'revision':null,'url':'/_next/static/chunks/webpack-411457e3de3a41ad.js'}],k().precache(a),q(new E(k(),void 0)),q(new W(S,{denylist:[/^\/api\//]}))})();