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.
- package/.nx/workspace-data/d/server-process.json +3 -3
- package/.nx/workspace-data/file-map.json +491 -491
- package/.nx/workspace-data/lockfile-dependencies.json +12490 -0
- package/.nx/workspace-data/lockfile-nodes.json +23570 -0
- package/.nx/workspace-data/nx_files.lock +0 -0
- package/.nx/workspace-data/nx_files_v2.nxt +0 -0
- package/.nx/workspace-data/project-graph.json +759 -1018
- package/CLAUDE.md +2 -1
- package/bin/scrabble-solver.js +1 -1
- package/bump-version.js +2 -2
- package/bun.lock +167 -221
- package/bunfig.toml +1 -0
- package/lerna.json +1 -1
- package/package.json +20 -20
- package/packages/configs/package.json +3 -3
- package/packages/constants/package.json +1 -1
- package/packages/dictionaries/package.json +5 -5
- package/packages/logger/package.json +1 -1
- package/packages/scrabble-solver/.next/BUILD_ID +1 -1
- package/packages/scrabble-solver/.next/build-manifest.json +17 -17
- package/packages/scrabble-solver/.next/cache/.previewinfo +1 -1
- package/packages/scrabble-solver/.next/cache/.rscinfo +1 -1
- package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
- package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +2 -2
- package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/packages/scrabble-solver/.next/diagnostics/framework.json +1 -1
- package/packages/scrabble-solver/.next/next-server.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/prerender-manifest.json +4 -4
- package/packages/scrabble-solver/.next/required-server-files.js +16 -1
- package/packages/scrabble-solver/.next/required-server-files.json +16 -1
- package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
- package/packages/scrabble-solver/.next/server/chunks/30.js +2 -2
- package/packages/scrabble-solver/.next/server/chunks/612.js +1 -1
- package/packages/scrabble-solver/.next/server/chunks/67.js +1 -1
- package/packages/scrabble-solver/.next/server/chunks/671.js +1 -1
- package/packages/scrabble-solver/.next/server/chunks/712.js +1 -1
- package/packages/scrabble-solver/.next/server/chunks/853.js +3 -3
- package/packages/scrabble-solver/.next/server/chunks/942.js +1 -1
- package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
- package/packages/scrabble-solver/.next/server/pages/404.html +1 -1
- package/packages/scrabble-solver/.next/server/pages/500.html +1 -1
- package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/_document.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/_error.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale].js +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/solve.js +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/solve.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/verify.js +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/verify.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/visit.js +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/visit.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.html +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.js +3 -3
- package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/not-found.html +1 -1
- package/packages/scrabble-solver/.next/server/preview-props.json +5 -0
- package/packages/scrabble-solver/.next/server/route-cache/PAGES/8a5edab282632443219e051e4ade2d1d5bbc671c781051bf1437897cbdfea0f1/$/index.html +1 -1
- package/packages/scrabble-solver/.next/server/route-cache/PAGES/8a5edab282632443219e051e4ade2d1d5bbc671c781051bf1437897cbdfea0f1/$/index.json +1 -1
- package/packages/scrabble-solver/.next/server/route-cache/PAGES/8a5edab282632443219e051e4ade2d1d5bbc671c781051bf1437897cbdfea0f1/$/index.meta +1 -1
- package/packages/scrabble-solver/.next/static/3Gq7FQIRlitT1llwNwhr2/_buildManifest.js +1 -0
- package/packages/scrabble-solver/.next/static/chunks/101-bb2fe4023bf9f5a4.js +3 -0
- package/packages/scrabble-solver/.next/static/chunks/{256.2a4fa7f278e0a97d.js → 256.ad3906547e15ca9d.js} +1 -1
- package/packages/scrabble-solver/.next/static/chunks/827.d01b6d69af340ba4.js +1 -0
- package/packages/scrabble-solver/.next/static/chunks/framework-0cd78dbcb5962d50.js +1 -0
- package/packages/scrabble-solver/.next/static/chunks/main-1b24c44d79c86b6e.js +5 -0
- package/packages/scrabble-solver/.next/static/chunks/pages/{_app-0c68f165d6de8507.js → _app-a32e0cf53e276591.js} +1 -1
- package/packages/scrabble-solver/.next/static/chunks/pages/index-357a0f88e80ff0b0.js +1 -0
- package/packages/scrabble-solver/.next/static/chunks/{webpack-31879a8fb6dcffd0.js → webpack-411457e3de3a41ad.js} +1 -1
- package/packages/scrabble-solver/.next/trace +36 -22
- package/packages/scrabble-solver/.next/trace-build +1 -1
- package/packages/scrabble-solver/.next/types/cache-life.d.ts +11 -43
- package/packages/scrabble-solver/.next/types/validator.ts +7 -0
- package/packages/scrabble-solver/package.json +40 -40
- package/packages/scrabble-solver/public/service-worker.js +2 -2
- package/packages/scrabble-solver/tsconfig.tsbuildinfo +1 -1
- package/packages/solver/package.json +6 -6
- package/packages/types/package.json +2 -2
- package/packages/word-definitions/package.json +7 -7
- package/packages/word-lists/package.json +8 -8
- package/playwright-report/index.html +2 -2
- package/packages/scrabble-solver/.next/static/YHx536pklAqlc9UGAXCj8/_buildManifest.js +0 -1
- package/packages/scrabble-solver/.next/static/chunks/101-fee295c7587c0836.js +0 -3
- package/packages/scrabble-solver/.next/static/chunks/827.09f660ca0a951d12.js +0 -1
- package/packages/scrabble-solver/.next/static/chunks/framework-988fd6f19d2744e8.js +0 -1
- package/packages/scrabble-solver/.next/static/chunks/main-d397eb8af33c5163.js +0 -5
- package/packages/scrabble-solver/.next/static/chunks/pages/index-ea21d96a88f25000.js +0 -1
- /package/packages/scrabble-solver/.next/static/{YHx536pklAqlc9UGAXCj8 → 3Gq7FQIRlitT1llwNwhr2}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-typescript","duration":
|
|
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
|
-
|
|
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.
|
|
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": "
|
|
58
|
-
"@kamilmielnik/gaddag": "
|
|
59
|
-
"@reduxjs/toolkit": "
|
|
60
|
-
"@scrabble-solver/configs": "
|
|
61
|
-
"@scrabble-solver/constants": "
|
|
62
|
-
"@scrabble-solver/dictionaries": "
|
|
63
|
-
"@scrabble-solver/logger": "
|
|
64
|
-
"@scrabble-solver/solver": "
|
|
65
|
-
"@scrabble-solver/types": "
|
|
66
|
-
"@scrabble-solver/word-definitions": "
|
|
67
|
-
"classnames": "
|
|
68
|
-
"env-cmd": "
|
|
69
|
-
"include-media": "
|
|
70
|
-
"include-media-query-builder": "
|
|
71
|
-
"next": "
|
|
72
|
-
"normalize.css": "
|
|
73
|
-
"react": "
|
|
74
|
-
"react-cool-onclickoutside": "
|
|
75
|
-
"react-dom": "
|
|
76
|
-
"react-highlight-words": "
|
|
77
|
-
"react-modal": "
|
|
78
|
-
"react-redux": "
|
|
79
|
-
"react-window": "
|
|
80
|
-
"redux-saga": "
|
|
81
|
-
"store2": "
|
|
82
|
-
"use-debounce": "
|
|
83
|
-
"workbox-expiration": "
|
|
84
|
-
"workbox-precaching": "
|
|
85
|
-
"workbox-routing": "
|
|
86
|
-
"workbox-webpack-plugin": "
|
|
87
|
-
"workbox-window": "
|
|
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": "
|
|
91
|
-
"@types/react": "
|
|
92
|
-
"@types/react-dom": "
|
|
93
|
-
"@types/react-highlight-words": "
|
|
94
|
-
"@types/react-modal": "
|
|
95
|
-
"@types/react-portal": "
|
|
96
|
-
"postcss": "
|
|
97
|
-
"sass": "
|
|
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':'
|
|
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\//]}))})();
|