sinzmise-cetastories 2.0.0-1731114112124 → 2.0.0-1731116663626
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/404/index.html +1 -4033
- package/about/index.html +1 -4041
- package/album/index.html +1 -4050
- package/archives/2021/12/index.html +1 -3917
- package/archives/2021/index.html +1 -3917
- package/archives/2022/12/index.html +1 -3917
- package/archives/2022/index.html +1 -3917
- package/archives/2023/01/index.html +1 -4072
- package/archives/2023/02/index.html +1 -3917
- package/archives/2023/03/index.html +1 -4063
- package/archives/2023/04/index.html +1 -3992
- package/archives/2023/07/index.html +1 -4217
- package/archives/2023/08/index.html +1 -4067
- package/archives/2023/09/index.html +1 -3917
- package/archives/2023/10/index.html +1 -3917
- package/archives/2023/11/index.html +1 -3917
- package/archives/2023/12/index.html +1 -3918
- package/archives/2023/index.html +1 -4591
- package/archives/2023/page/2/index.html +1 -4572
- package/archives/2023/page/3/index.html +1 -3930
- package/archives/2024/01/index.html +1 -4142
- package/archives/2024/02/index.html +1 -3922
- package/archives/2024/03/index.html +1 -3916
- package/archives/2024/04/index.html +1 -3997
- package/archives/2024/05/index.html +1 -4065
- package/archives/2024/06/index.html +1 -3917
- package/archives/2024/07/index.html +1 -3917
- package/archives/2024/08/index.html +1 -3992
- package/archives/2024/09/index.html +1 -3917
- package/archives/2024/10/index.html +1 -3984
- package/archives/2024/index.html +1 -4576
- package/archives/2024/page/2/index.html +1 -4433
- package/archives/index.html +1 -4560
- package/archives/page/2/index.html +1 -4560
- package/archives/page/3/index.html +1 -4560
- package/archives/page/4/index.html +1 -4560
- package/archives/page/5/index.html +1 -4560
- package/assets/algolia/algoliasearch.js +3 -7182
- package/assets/algolia/algoliasearchLite.js +3 -4445
- package/atom.xml +31 -31
- package/bbs/bbs.html +1 -4012
- package/bbs/bbs.js +2 -12
- package/bbs/index.html +1 -4031
- package/categories/index.html +1 -4050
- package/categories//344/270/252/344/272/272/345/260/217/350/256/260/index.html +1 -4570
- package/categories//344/270/252/344/272/272/345/260/217/350/256/260/page/2/index.html +1 -4485
- package/categories//346/255/214/346/233/262/346/224/266/351/233/206/index.html +1 -3920
- package/categories//346/270/270/346/210/217/347/233/270/345/205/263/index.html +1 -4148
- package/categories//347/253/231/347/202/271/346/212/230/350/205/276/index.html +1 -4610
- package/categories//347/253/231/347/202/271/346/212/230/350/205/276/page/2/index.html +1 -4148
- package/categories//351/241/271/347/233/256/346/212/230/350/205/276/index.html +1 -4072
- package/charts/index.html +1 -4039
- package/comments/index.html +1 -4052
- package/css/custom2.css +2 -3
- package/css/first.css +2 -1868
- package/css/pace/big-counter.css +2 -39
- package/css/pace/corner-indicator.css +2 -72
- package/css/pace/flash.css +2 -76
- package/css/pace/mac-osx.css +2 -86
- package/css/pace/pace.css +2 -50
- package/css/plane.css +2 -59
- package/css/style.css +2 -8585
- package/css/tags.css +2 -3516
- package/essay/index.html +1 -4050
- package/fcircle/index.html +1 -4075
- package/games +2 -2
- package/index.html +1 -4717
- package/js/app.js +2 -1341
- package/js/autoload.js +2 -62
- package/js/ceta/fancybox.css +2 -2
- package/js/ceta/fancybox.umd.js +2 -2
- package/js/ceta/iconfontInkss.js +2 -1
- package/js/ceta/message.css +2 -6
- package/js/ceta/message.js +2 -6
- package/js/clock.js +2 -1
- package/js/kslink.js +2 -38
- package/js/newyear.js +2 -76
- package/js/plane.js +2 -2200
- package/js/plugins/aplayer.js +2 -186
- package/js/plugins/parallax.js +2 -191
- package/js/plugins/rightMenus.js +2 -623
- package/js/plugins/tags/contributors.js +2 -92
- package/js/plugins/tags/friends.js +2 -93
- package/js/plugins/tags/sites.js +2 -96
- package/js/search/algolia.js +2 -239
- package/js/search/hexo.js +2 -195
- package/js/search/meilisearch.js +2 -220
- package/js/txmap.js +2 -248
- package/link/index.html +1 -6180
- package/load.html +1 -294
- package/maps/assets/algolia/algoliasearch.js.map +1 -0
- package/maps/assets/algolia/algoliasearchLite.js.map +1 -0
- package/maps/bbs/bbs.js.map +1 -0
- package/maps/css/custom2.css.map +1 -0
- package/maps/css/first.css.map +1 -0
- package/maps/css/pace/big-counter.css.map +1 -0
- package/maps/css/pace/corner-indicator.css.map +1 -0
- package/maps/css/pace/flash.css.map +1 -0
- package/maps/css/pace/mac-osx.css.map +1 -0
- package/maps/css/pace/pace.css.map +1 -0
- package/maps/css/plane.css.map +1 -0
- package/maps/css/style.css.map +1 -0
- package/maps/css/tags.css.map +1 -0
- package/maps/js/app.js.map +1 -0
- package/maps/js/autoload.js.map +1 -0
- package/maps/js/ceta/fancybox.css.map +1 -0
- package/maps/js/ceta/fancybox.umd.js.map +1 -0
- package/maps/js/ceta/iconfontInkss.js.map +1 -0
- package/maps/js/ceta/message.css.map +1 -0
- package/maps/js/ceta/message.js.map +1 -0
- package/maps/js/clock.js.map +1 -0
- package/maps/js/kslink.js.map +1 -0
- package/maps/js/newyear.js.map +1 -0
- package/maps/js/plane.js.map +1 -0
- package/maps/js/plugins/aplayer.js.map +1 -0
- package/maps/js/plugins/parallax.js.map +1 -0
- package/maps/js/plugins/rightMenus.js.map +1 -0
- package/maps/js/plugins/tags/contributors.js.map +1 -0
- package/maps/js/plugins/tags/friends.js.map +1 -0
- package/maps/js/plugins/tags/sites.js.map +1 -0
- package/maps/js/search/algolia.js.map +1 -0
- package/maps/js/search/hexo.js.map +1 -0
- package/maps/js/search/meilisearch.js.map +1 -0
- package/maps/js/txmap.js.map +1 -0
- package/maps/sw.js.map +1 -0
- package/maps/weichuncai/css/style.css.map +1 -0
- package/maps/weichuncai/js/common.js.map +1 -0
- package/maps/weichuncai/js/jquery.js.map +1 -0
- package/maps/weichuncai/wcc-config.js.map +1 -0
- package/music/index.html +1 -4033
- package/package.json +1 -1
- package/page/2/index.html +1 -4578
- package/page/3/index.html +1 -4575
- package/page/4/index.html +1 -4572
- package/page/5/index.html +1 -3924
- package/posts/10021/index.html +5 -4130
- package/posts/10045/index.html +1 -4224
- package/posts/10733/index.html +1 -4125
- package/posts/10996/index.html +5 -4127
- package/posts/12779/index.html +1 -4134
- package/posts/13624/index.html +1 -4179
- package/posts/15688/index.html +1 -4133
- package/posts/15748/index.html +5 -4121
- package/posts/15799/index.html +1 -4130
- package/posts/15842/index.html +5 -4121
- package/posts/16107/index.html +1 -4111
- package/posts/18063/index.html +1 -4124
- package/posts/20412/index.html +1 -4134
- package/posts/21375/index.html +1 -4124
- package/posts/22945/index.html +4 -4169
- package/posts/23021/index.html +1 -4104
- package/posts/27531/index.html +5 -4121
- package/posts/28536/index.html +1 -4116
- package/posts/28733/index.html +1 -4168
- package/posts/29196/index.html +1 -4106
- package/posts/38917/index.html +1 -4144
- package/posts/38964/index.html +1 -4208
- package/posts/42487/index.html +1 -4135
- package/posts/42580/index.html +1 -4128
- package/posts/45875/index.html +1 -4118
- package/posts/46640/index.html +1 -4147
- package/posts/48762/index.html +1 -4109
- package/posts/50710/index.html +1 -4114
- package/posts/52677/index.html +1 -4125
- package/posts/53662/index.html +1 -4123
- package/posts/54386/index.html +1 -4116
- package/posts/54481/index.html +1 -4133
- package/posts/54787/index.html +5 -4124
- package/posts/56467/index.html +1 -4121
- package/posts/57692/index.html +1 -4143
- package/posts/58203/index.html +1 -4116
- package/posts/61417/index.html +1 -4117
- package/posts/61712/index.html +1 -4113
- package/posts/646/index.html +1 -4106
- package/posts/64856/index.html +1 -4120
- package/posts/64935/index.html +1 -4120
- package/search.xml +70 -70
- package/seas/index.html +1 -4050
- package/sw.js +2 -798
- package/tags/Flash/347/233/270/345/205/263/index.html +1 -3924
- package/tags/Steam/346/270/270/346/210/217/index.html +1 -3924
- package/tags/Windows/350/275/257/344/273/266/index.html +1 -3997
- package/tags/index.html +1 -4033
- package/tags//344/270/252/344/272/272/345/260/217/350/256/260/index.html +1 -4570
- package/tags//344/270/252/344/272/272/345/260/217/350/256/260/page/2/index.html +1 -4485
- package/tags//345/205/266/345/256/203/346/270/270/346/210/217/index.html +1 -4073
- package/tags//345/212/240/350/275/275/345/212/250/347/224/273/index.html +1 -3924
- package/tags//346/202/254/346/265/256/345/256/240/347/211/251-/347/234/213/346/235/277/345/250/230/index.html +1 -3925
- package/tags//346/255/214/346/233/262/346/224/266/351/233/206/index.html +1 -3920
- package/tags//346/270/270/346/210/217/347/233/270/345/205/263/index.html +1 -4148
- package/tags//347/253/231/347/202/271/345/272/225/351/203/250/351/255/224/346/224/271/index.html +1 -3924
- package/tags//347/253/231/347/202/271/346/212/230/350/205/276/index.html +1 -4610
- package/tags//347/253/231/347/202/271/346/212/230/350/205/276/page/2/index.html +1 -4148
- package/tags//350/207/252/345/273/272/351/203/250/347/275/262/index.html +1 -4224
- package/tags//351/241/265/351/235/242/351/255/224/346/224/271/index.html +1 -4075
- package/tags//351/241/271/347/233/256/346/212/230/350/205/276/index.html +1 -4072
- package/update/index.html +1 -4112
- package/weichuncai/css/style.css +2 -25
- package/weichuncai/js/common.js +2 -449
- package/weichuncai/js/jquery.js +2 -139
- package/weichuncai/wcc-config.js +2 -17
package/sw.js
CHANGED
@@ -1,798 +1,2 @@
|
|
1
|
-
// 全站打包上传 npm,sw 并发请求 cdn
|
2
|
-
|
3
|
-
const cacheSuffixVersion = '00000018-0.5481051434706005';
|
4
|
-
const CACHE_NAME = prefix + '-v' + cacheSuffixVersion;
|
5
|
-
const PreCachlist = [
|
6
|
-
"/css/style.css",
|
7
|
-
"/js/app.js",
|
8
|
-
"/js/search/hexo.js",
|
9
|
-
];
|
10
|
-
let NPMMirror = true;
|
11
|
-
const NPMPackage = "sinzmise-cetastories";
|
12
|
-
let NPMPackageVersion = "latest";
|
13
|
-
let debug = true;
|
14
|
-
// location.hostname == 'localhost' && (debug = true) && (NPMMirror = false);
|
15
|
-
const handleFetch = async (event) => {
|
16
|
-
const url = event.request.url;
|
17
|
-
if (/nocache/.test(url)) {
|
18
|
-
return NetworkOnly(event)
|
19
|
-
} else if (/@latest/.test(url)) {
|
20
|
-
return CacheFirst(event)
|
21
|
-
} else if (/cdnjs\.cloudflare\.com/.test(url)) {
|
22
|
-
return CacheAlways(event)
|
23
|
-
} else if (/music\.126\.net/.test(url)) {
|
24
|
-
return CacheAlways(event)
|
25
|
-
} else if (/qqmusic\.qq\.com/.test(url)) {
|
26
|
-
return CacheAlways(event)
|
27
|
-
} else if (/jsdelivr\.net/.test(url)) {
|
28
|
-
return CacheAlways(event)
|
29
|
-
} else if (/npm\.elemecdn\.com/.test(url)) {
|
30
|
-
return CacheAlways(event)
|
31
|
-
} else if (/unpkg\.com/.test(url)) {
|
32
|
-
return CacheAlways(event)
|
33
|
-
} else if (/.*\.(?:png|jpg|jpeg|svg|gif|webp|ico|eot|ttf|woff|woff2|mp3)$/.test(url)) {
|
34
|
-
return CacheAlways(event)
|
35
|
-
} else if (/.*\.(css|js)$/.test(url)) {
|
36
|
-
return CacheAlways(event)
|
37
|
-
} else {
|
38
|
-
return CacheFirst(event)
|
39
|
-
}
|
40
|
-
}
|
41
|
-
const cdn = {
|
42
|
-
gh: {
|
43
|
-
jsdelivr: 'https://kkgithub.com/extdomains/cdn.jsdelivr.net/gh',
|
44
|
-
fastly: 'https://fastly.jsdelivr.net/gh',
|
45
|
-
gcore: 'https://gcore.jsdelivr.net/gh',
|
46
|
-
testingcf: 'https://testingcf.jsdelivr.net/gh',
|
47
|
-
test1: 'https://test1.jsdelivr.net/gh',
|
48
|
-
},
|
49
|
-
combine: {
|
50
|
-
jsdelivr: 'https://kkgithub.com/extdomains/cdn.jsdelivr.net/combine',
|
51
|
-
fastly: 'https://fastly.jsdelivr.net/combine',
|
52
|
-
gcore: 'https://gcore.jsdelivr.net/combine',
|
53
|
-
testingcf: 'https://testingcf.jsdelivr.net/combine',
|
54
|
-
test1: 'https://test1.jsdelivr.net/combine',
|
55
|
-
},
|
56
|
-
npm: {
|
57
|
-
jsdelivr: 'https://kkgithub.com/extdomains/cdn.jsdelivr.net/npm',
|
58
|
-
fastly: 'https://fastly.jsdelivr.net/npm',
|
59
|
-
gcore: 'https://gcore.jsdelivr.net/npm',
|
60
|
-
testingcf: 'https://testingcf.jsdelivr.net/npm',
|
61
|
-
test1: 'https://test1.jsdelivr.net/npm',
|
62
|
-
unpkg: 'https://unpkg.com',
|
63
|
-
eleme: 'https://npm.elemecdn.com',
|
64
|
-
storisinz: 'https://jsd.cdn.storisinz.site/npm',
|
65
|
-
webcache: 'https://npm.webcache.cn',
|
66
|
-
},
|
67
|
-
cdnjs: {
|
68
|
-
cdnjs: 'https://kkgithub.com/extdomains/cdnjs.cloudflare.com/ajax/libs',
|
69
|
-
baomitu: 'https://lib.baomitu.com',
|
70
|
-
bootcdn: 'https://cdn.bootcdn.net/ajax/libs',
|
71
|
-
bytedance: 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M',
|
72
|
-
sustech: 'https://mirrors.sustech.edu.cn/cdnjs/ajax/libs',
|
73
|
-
}
|
74
|
-
}
|
75
|
-
const cdn_match_list = []
|
76
|
-
for (const type in cdn) {
|
77
|
-
for (const key in cdn[type]) {
|
78
|
-
cdn_match_list.push({ type: type, key: cdn[type][key] })
|
79
|
-
}
|
80
|
-
}
|
81
|
-
const _console = console;
|
82
|
-
const color = {
|
83
|
-
black: '#000000',
|
84
|
-
red: '#FF0000',
|
85
|
-
green: '#008000',
|
86
|
-
yellow: '#FFFF00',
|
87
|
-
blue: '#0000FF',
|
88
|
-
magenta: '#FF00FF',
|
89
|
-
cyan: '#00FFFF',
|
90
|
-
white: '#FFFFFF',
|
91
|
-
};
|
92
|
-
const add = (...arr) => {
|
93
|
-
let fi = [
|
94
|
-
[]
|
95
|
-
];
|
96
|
-
for (let key = 0; key < arr.length; key++) {
|
97
|
-
const [first, ...other] = arr[key];
|
98
|
-
fi[0] += first;
|
99
|
-
fi = fi.concat(other);
|
100
|
-
}
|
101
|
-
return fi;
|
102
|
-
};
|
103
|
-
const createlog = (util) => (...args) => {
|
104
|
-
// const fun = _console[util] ? _console[util] : _console.log;
|
105
|
-
const fun = util == "error" ? _console[util] : _console.log;
|
106
|
-
fun.apply(void 0, args);
|
107
|
-
};
|
108
|
-
const creategroup = (util) => (...args) => {
|
109
|
-
const fun = _console.groupCollapsed;
|
110
|
-
fun.apply(void 0, args);
|
111
|
-
};
|
112
|
-
const colorUtils = {
|
113
|
-
bold: (str) => {
|
114
|
-
if (typeof str === 'string' || typeof str === 'number') {
|
115
|
-
return `${str};font-weight: bold;`;
|
116
|
-
}
|
117
|
-
for (let key = 1; key < str.length; key++) {
|
118
|
-
str[key] += `;font-weight: bold;`;
|
119
|
-
}
|
120
|
-
return str;
|
121
|
-
}
|
122
|
-
};
|
123
|
-
const colorHash = {
|
124
|
-
log: 'black',
|
125
|
-
wait: 'cyan',
|
126
|
-
error: 'red',
|
127
|
-
warn: 'yellow',
|
128
|
-
ready: 'green',
|
129
|
-
info: 'blue',
|
130
|
-
event: 'magenta',
|
131
|
-
};
|
132
|
-
const createChalk = (name) => (...str) => {
|
133
|
-
if (typeof str[0] === 'object') {
|
134
|
-
createlog(name)(...add(colorUtils.bold(colorUtils[colorHash[name]](`[${firstToUpperCase(name)}] `)), ...str));
|
135
|
-
return;
|
136
|
-
}
|
137
|
-
let strArr = str;
|
138
|
-
if (typeof str === 'string' || typeof str === 'number') {
|
139
|
-
strArr = colorUtils[colorHash[name]](str);
|
140
|
-
}
|
141
|
-
createlog(name)(...add(colorUtils.bold(colorUtils[colorHash[name]](`[${firstToUpperCase(name)}] `)), strArr));
|
142
|
-
};
|
143
|
-
const createChalkBg = (name) => (...str) => {
|
144
|
-
if (typeof str[0] === 'object') {
|
145
|
-
createlog(name)(...add(colorUtils.bold(colorUtils[`bg${firstToUpperCase(colorHash[name])}`](`[${firstToUpperCase(name)}] `)), ...str));
|
146
|
-
return;
|
147
|
-
}
|
148
|
-
let strArr = str;
|
149
|
-
if (typeof str === 'string' || typeof str === 'number') {
|
150
|
-
strArr = colorUtils[colorHash[name]](str);
|
151
|
-
}
|
152
|
-
createlog(name)(...add(colorUtils.bold(colorUtils[`bg${firstToUpperCase(colorHash[name])}`](`[${firstToUpperCase(name)}] `)), strArr));
|
153
|
-
};
|
154
|
-
const createChalkGroup = (name) => (...str) => {
|
155
|
-
if (typeof str[0] === 'object') {
|
156
|
-
creategroup(name)(...add(colorUtils.bold(colorUtils[colorHash[name]](`[${firstToUpperCase(name)}] `)), ...str));
|
157
|
-
return;
|
158
|
-
}
|
159
|
-
let strArr = str;
|
160
|
-
if (typeof str === 'string' || typeof str === 'number') {
|
161
|
-
strArr = colorUtils[colorHash[name]](str);
|
162
|
-
}
|
163
|
-
creategroup(name)(...add(colorUtils.bold(colorUtils[colorHash[name]](`[${firstToUpperCase(name)}] `)), strArr));
|
164
|
-
};
|
165
|
-
const chalk = {
|
166
|
-
group: {
|
167
|
-
end: _console.groupEnd
|
168
|
-
},
|
169
|
-
bg: {}
|
170
|
-
};
|
171
|
-
Object.keys(colorHash).forEach(key => {
|
172
|
-
chalk[key] = createChalk(key);
|
173
|
-
chalk.group[key] = createChalkGroup(key);
|
174
|
-
chalk.bg[key] = createChalkBg(key);
|
175
|
-
});
|
176
|
-
const firstToUpperCase = (str) => str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
|
177
|
-
Object.keys(color).forEach(key => {
|
178
|
-
colorUtils[key] = (str) => {
|
179
|
-
if (typeof str === 'string' || typeof str === 'number') {
|
180
|
-
return [`%c${str}`, `color:${color[key]}`];
|
181
|
-
}
|
182
|
-
for (let i = 1; i < str.length; i++) {
|
183
|
-
str[i] += `;color:${color[key]}`;
|
184
|
-
}
|
185
|
-
return str;
|
186
|
-
};
|
187
|
-
colorUtils[`bg${firstToUpperCase(key)}`] = (str) => {
|
188
|
-
if (typeof str === 'string' || typeof str === 'number') {
|
189
|
-
return [`%c${str}`, `padding: 2px 4px; border-radius: 3px; color: ${key === 'white' ? '#000' : '#fff'}; font-weight: bold; background:${color[key]};`];
|
190
|
-
}
|
191
|
-
for (let i = 1; i < str.length; i++) {
|
192
|
-
str[i] += `;padding: 2px 4px; border-radius: 3px; font-weight: bold; background:${color[key]};`;
|
193
|
-
}
|
194
|
-
return str;
|
195
|
-
};
|
196
|
-
});
|
197
|
-
self.logger = {
|
198
|
-
add,
|
199
|
-
...chalk,
|
200
|
-
...colorUtils,
|
201
|
-
};
|
202
|
-
|
203
|
-
if (!debug) {
|
204
|
-
logger = {
|
205
|
-
log: () => { },
|
206
|
-
wait: () => { },
|
207
|
-
error: () => { },
|
208
|
-
warn: () => { },
|
209
|
-
ready: () => { },
|
210
|
-
info: () => { },
|
211
|
-
event: () => { },
|
212
|
-
group: {
|
213
|
-
log: () => { },
|
214
|
-
wait: () => { },
|
215
|
-
error: () => { },
|
216
|
-
warn: () => { },
|
217
|
-
ready: () => { },
|
218
|
-
info: () => { },
|
219
|
-
event: () => { },
|
220
|
-
end: () => { },
|
221
|
-
},
|
222
|
-
bg: {
|
223
|
-
log: () => { },
|
224
|
-
wait: () => { },
|
225
|
-
error: () => { },
|
226
|
-
warn: () => { },
|
227
|
-
ready: () => { },
|
228
|
-
info: () => { },
|
229
|
-
event: () => { },
|
230
|
-
}
|
231
|
-
};
|
232
|
-
console.log = () => { };
|
233
|
-
}
|
234
|
-
|
235
|
-
const generate_uuid = () => {
|
236
|
-
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
237
|
-
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
|
238
|
-
return v.toString(16);
|
239
|
-
});
|
240
|
-
}
|
241
|
-
self.db = {
|
242
|
-
read: (key, config) => {
|
243
|
-
if (!config) { config = { type: "text" } }
|
244
|
-
return new Promise((resolve, reject) => {
|
245
|
-
caches.open(CACHE_NAME).then(cache => {
|
246
|
-
cache.match(new Request(`https://LOCALCACHE/${encodeURIComponent(key)}`)).then(function (res) {
|
247
|
-
if (!res) resolve(null)
|
248
|
-
res.text().then(text => resolve(text))
|
249
|
-
}).catch(() => {
|
250
|
-
resolve(null)
|
251
|
-
})
|
252
|
-
})
|
253
|
-
})
|
254
|
-
},
|
255
|
-
write: (key, value) => {
|
256
|
-
return new Promise((resolve, reject) => {
|
257
|
-
caches.open(CACHE_NAME).then(function (cache) {
|
258
|
-
cache.put(new Request(`https://LOCALCACHE/${encodeURIComponent(key)}`), new Response(value));
|
259
|
-
resolve()
|
260
|
-
}).catch(() => {
|
261
|
-
reject()
|
262
|
-
})
|
263
|
-
})
|
264
|
-
}
|
265
|
-
}
|
266
|
-
const compareVersion = (a, b) => {
|
267
|
-
let v1 = a.split('.');
|
268
|
-
let v2 = b.split('.');
|
269
|
-
const len = Math.max(v1.length, v2.length);
|
270
|
-
while (v1.length < len) {
|
271
|
-
v1.push('0');
|
272
|
-
}
|
273
|
-
while (v2.length < len) {
|
274
|
-
v2.push('0');
|
275
|
-
}
|
276
|
-
for (let i = 0; i < len; i++) {
|
277
|
-
const num1 = parseInt(v1[i]);
|
278
|
-
const num2 = parseInt(v2[i]);
|
279
|
-
if (num1 > num2) {
|
280
|
-
return a;
|
281
|
-
} else if (num1 < num2) {
|
282
|
-
return b;
|
283
|
-
}
|
284
|
-
}
|
285
|
-
return a;
|
286
|
-
}
|
287
|
-
|
288
|
-
const mirrors = [
|
289
|
-
`https://registry.npmjs.org/${NPMPackage}/latest`,
|
290
|
-
`https://registry.npmmirror.com/${NPMPackage}/latest`,
|
291
|
-
`https://mirrors.cloud.tencent.com/npm/${NPMPackage}/latest`
|
292
|
-
]
|
293
|
-
const getLocalVersion = async () => {
|
294
|
-
NPMPackageVersion = await db.read('blog_version') || NPMPackageVersion
|
295
|
-
logger.bg.info(`Local Version: ${NPMPackage}@${NPMPackageVersion}`)
|
296
|
-
}
|
297
|
-
let mirror_time = 0;
|
298
|
-
const setNewestVersion = async () => {
|
299
|
-
if (!NPMMirror) {
|
300
|
-
return
|
301
|
-
}
|
302
|
-
let f = null;
|
303
|
-
if (!(mirror_time % (mirrors.length + 1))) {
|
304
|
-
f = FetchEngine(mirrors);
|
305
|
-
} else {
|
306
|
-
f = fetch(mirrors[(mirror_time % (mirrors.length + 1)) - 1]);
|
307
|
-
}
|
308
|
-
mirror_time++;
|
309
|
-
return f
|
310
|
-
.then(res => res.json())
|
311
|
-
.then(async res => {
|
312
|
-
if (!res.version) throw ('No Version Found!')
|
313
|
-
NPMPackageVersion = compareVersion(res.version, await db.read('blog_version') || NPMPackageVersion)
|
314
|
-
logger.bg.ready(`${NPMPackage}@${NPMPackageVersion}`)
|
315
|
-
await db.write('blog_version', NPMPackageVersion)
|
316
|
-
})
|
317
|
-
.catch(error => {
|
318
|
-
logger.error('[Set Newest Version] ' + (error.stack || error))
|
319
|
-
})
|
320
|
-
}
|
321
|
-
setInterval(async () => {
|
322
|
-
await setNewestVersion()
|
323
|
-
}, 60 * 1000);
|
324
|
-
setTimeout(async () => {
|
325
|
-
await setNewestVersion()
|
326
|
-
}, 5000)
|
327
|
-
const installFunction = async () => {
|
328
|
-
await getLocalVersion();
|
329
|
-
return caches.open(CACHE_NAME + "-precache")
|
330
|
-
.then(async function (cache) {
|
331
|
-
if (!await db.read('uuid')) {
|
332
|
-
await db.write('uuid', generate_uuid())
|
333
|
-
}
|
334
|
-
if (PreCachlist.length) {
|
335
|
-
logger.group.event(`Precaching ${PreCachlist.length} files.`);
|
336
|
-
let index = 0;
|
337
|
-
PreCachlist.forEach(function (url) {
|
338
|
-
cache.match(new Request(url)).then(function (response) {
|
339
|
-
if (response) {
|
340
|
-
logger.ready(`Precaching ${url}`);
|
341
|
-
} else {
|
342
|
-
logger.wait(`Precaching ${url}`);
|
343
|
-
cache.add(new Request(url));
|
344
|
-
}
|
345
|
-
index++;
|
346
|
-
if (index === PreCachlist.length) {
|
347
|
-
logger.ready(`Precached ${PreCachlist.length} files.`);
|
348
|
-
logger.group.end();
|
349
|
-
}
|
350
|
-
})
|
351
|
-
})
|
352
|
-
}
|
353
|
-
}).catch((error) => {
|
354
|
-
logger.error('[install] ' + (error.stack || error));
|
355
|
-
})
|
356
|
-
}
|
357
|
-
self.addEventListener('install', async function (event) {
|
358
|
-
logger.bg.event("service worker install event listening");
|
359
|
-
try {
|
360
|
-
self.skipWaiting();
|
361
|
-
event.waitUntil(installFunction());
|
362
|
-
logger.bg.ready('service worker install sucess!');
|
363
|
-
} catch (error) {
|
364
|
-
logger.error('[install] ' + (error.stack || error));
|
365
|
-
}
|
366
|
-
});
|
367
|
-
self.addEventListener('activate', async event => {
|
368
|
-
logger.bg.event("service worker activate event listening");
|
369
|
-
try {
|
370
|
-
event.waitUntil(
|
371
|
-
caches.keys().then((keys) => {
|
372
|
-
return Promise.all(keys.map((key) => {
|
373
|
-
if (!key.includes(cacheSuffixVersion)) {
|
374
|
-
caches.delete(key);
|
375
|
-
logger.bg.ready('Deleted Outdated Cache: ' + key);
|
376
|
-
}
|
377
|
-
}));
|
378
|
-
}).catch((error) => {
|
379
|
-
logger.error('[activate] ' + (error.stack || error));
|
380
|
-
})
|
381
|
-
);
|
382
|
-
await self.clients.claim()
|
383
|
-
logger.bg.ready('service worker activate sucess!');
|
384
|
-
} catch (error) {
|
385
|
-
logger.error('[activate] ' + (error.stack || error));
|
386
|
-
}
|
387
|
-
})
|
388
|
-
self.addEventListener('fetch', async event => {
|
389
|
-
event.respondWith(
|
390
|
-
handleFetch(event).catch((error) => {
|
391
|
-
logger.error('[fetch] ' + event.request.url + '\n[error] ' + (error.stack || error));
|
392
|
-
})
|
393
|
-
)
|
394
|
-
});
|
395
|
-
|
396
|
-
|
397
|
-
const NetworkOnly = async (event) => {
|
398
|
-
logger.group.info('NetworkOnly: ' + new URL(event.request.url).pathname);
|
399
|
-
logger.wait('service worker fetch: ' + event.request.url)
|
400
|
-
logger.group.end();
|
401
|
-
return fetch(event.request)
|
402
|
-
}
|
403
|
-
const CacheFirst = async (event) => {
|
404
|
-
return caches.match(event.request).then(function (resp) {
|
405
|
-
logger.group.info('CacheFirst: ' + new URL(event.request.url).pathname);
|
406
|
-
logger.wait('service worker fetch: ' + event.request.url)
|
407
|
-
if (resp) {
|
408
|
-
logger.group.ready(`Cache Hit`);
|
409
|
-
console.log(resp)
|
410
|
-
logger.group.end();
|
411
|
-
logger.group.end();
|
412
|
-
event.waitUntil(CacheRuntime(event.request))
|
413
|
-
return resp;
|
414
|
-
} else {
|
415
|
-
logger.warn(`Cache Miss`);
|
416
|
-
logger.group.end();
|
417
|
-
return CacheRuntime(event.request)
|
418
|
-
}
|
419
|
-
})
|
420
|
-
}
|
421
|
-
const CacheAlways = async (event) => {
|
422
|
-
return caches.match(event.request).then(function (resp) {
|
423
|
-
logger.group.info('CacheAlways: ' + new URL(event.request.url).pathname);
|
424
|
-
logger.wait('service worker fetch: ' + event.request.url)
|
425
|
-
if (resp) {
|
426
|
-
logger.group.ready(`Cache Hit`);
|
427
|
-
console.log(resp)
|
428
|
-
logger.group.end();
|
429
|
-
logger.group.end();
|
430
|
-
return resp;
|
431
|
-
} else {
|
432
|
-
logger.warn(`Cache Miss`);
|
433
|
-
logger.group.end();
|
434
|
-
return CacheRuntime(event.request)
|
435
|
-
}
|
436
|
-
})
|
437
|
-
}
|
438
|
-
|
439
|
-
const matchCache = async (event) => {
|
440
|
-
return caches.match(event.request).then(function (resp) {
|
441
|
-
logger.group.info('service worker fetch: ' + event.request.url)
|
442
|
-
if (resp) {
|
443
|
-
logger.group.ready(`Cache Hit`);
|
444
|
-
console.log(resp)
|
445
|
-
logger.group.end();
|
446
|
-
logger.group.end();
|
447
|
-
return resp;
|
448
|
-
} else {
|
449
|
-
logger.warn(`Cache Miss`);
|
450
|
-
logger.group.end();
|
451
|
-
return CacheRuntime(event.request)
|
452
|
-
}
|
453
|
-
})
|
454
|
-
}
|
455
|
-
async function CacheRuntime(request) {
|
456
|
-
const url = new URL(request.url);
|
457
|
-
let response = await matchCDN(request);
|
458
|
-
if (!response) {
|
459
|
-
response = await fetch(request).catch(() => null)
|
460
|
-
}
|
461
|
-
logger.group.event(`Cache Runtime ${url.pathname}`);
|
462
|
-
logger.wait(`Caching url: ${request.url}`);
|
463
|
-
console.log(response);
|
464
|
-
|
465
|
-
if (request.method === "GET" && (url.protocol == "https:")) {
|
466
|
-
const cache = await caches.open(CACHE_NAME + "-runtime");
|
467
|
-
cache.put(request, response.clone()).catch(error => {
|
468
|
-
logger.error('[Cache Runtime] ' + (error.stack || error));
|
469
|
-
if (error.name === 'QuotaExceededError') {
|
470
|
-
caches.delete(CACHE_NAME + "-runtime");
|
471
|
-
logger.ready("deleted cache")
|
472
|
-
}
|
473
|
-
})
|
474
|
-
logger.ready(`Cached url: ${request.url}`);
|
475
|
-
} else {
|
476
|
-
logger.warn(`Not Cached url: ${request.url}`);
|
477
|
-
}
|
478
|
-
logger.group.end();
|
479
|
-
return response;
|
480
|
-
}
|
481
|
-
|
482
|
-
const matchCDN = async (req) => {
|
483
|
-
const nav = navigator
|
484
|
-
const { saveData, effectiveType } = nav.connection || nav.mozConnection || nav.webkitConnection || {}
|
485
|
-
if (saveData || /2g/.test(effectiveType)) {
|
486
|
-
logger.warn("Slow Network: Transparent Proxy");
|
487
|
-
return fetch(req);
|
488
|
-
}
|
489
|
-
const urls = []
|
490
|
-
let urlObj = new URL(req.url)
|
491
|
-
let pathType = urlObj.pathname.split('/')[1]
|
492
|
-
let pathTestRes = "";
|
493
|
-
|
494
|
-
if (NPMMirror && new RegExp(location.origin).test(req.url)) {
|
495
|
-
logger.group.ready(`Match NPM Mirror: ` + req.url);
|
496
|
-
for (const key in cdn.npm) {
|
497
|
-
let url = cdn.npm[key] + "/" + NPMPackage + "@" + NPMPackageVersion + req.url.replace(location.origin, '')
|
498
|
-
url = fullPath(fullPath(url))
|
499
|
-
console.log(url);
|
500
|
-
urls.push(url)
|
501
|
-
}
|
502
|
-
logger.group.end()
|
503
|
-
}
|
504
|
-
if (!urls.length) {
|
505
|
-
for (const item of cdn_match_list) {
|
506
|
-
if (new RegExp(item.key).test(req.url)) {
|
507
|
-
pathType = item.type
|
508
|
-
pathTestRes = new RegExp(item.key).exec(req.url)[0]
|
509
|
-
break;
|
510
|
-
}
|
511
|
-
}
|
512
|
-
for (const type in cdn) {
|
513
|
-
if (type === pathType) {
|
514
|
-
logger.group.ready(`Match CDN ${pathType}: ` + req.url);
|
515
|
-
for (const key in cdn[type]) {
|
516
|
-
const url = cdn[type][key] + req.url.replace(pathTestRes, '')
|
517
|
-
console.log(url);
|
518
|
-
urls.push(url)
|
519
|
-
}
|
520
|
-
logger.group.end()
|
521
|
-
}
|
522
|
-
}
|
523
|
-
}
|
524
|
-
|
525
|
-
let res;
|
526
|
-
if (urls.length)
|
527
|
-
res = FetchEngine(urls)
|
528
|
-
else
|
529
|
-
res = fetch(req)
|
530
|
-
if (res && NPMMirror && new RegExp(location.origin).test(req.url)) {
|
531
|
-
const ext = fullPath(fullPath(req.url)).split('.').pop()
|
532
|
-
const contentType = getContentType(ext)
|
533
|
-
res = res
|
534
|
-
.then(res => res.arrayBuffer())
|
535
|
-
.then(buffer => new Response(buffer, {
|
536
|
-
headers: {
|
537
|
-
"Content-Type": contentType
|
538
|
-
}
|
539
|
-
}))
|
540
|
-
.catch(() => null)
|
541
|
-
}
|
542
|
-
return res
|
543
|
-
}
|
544
|
-
|
545
|
-
const fullPath = (url) => {
|
546
|
-
url = url.split('?')[0].split('#')[0]
|
547
|
-
if (url.endsWith('/')) {
|
548
|
-
url += 'index.html'
|
549
|
-
} else {
|
550
|
-
const list = url.split('/')
|
551
|
-
const last = list[list.length - 1]
|
552
|
-
if (last.indexOf('.') === -1) {
|
553
|
-
url += '.html'
|
554
|
-
}
|
555
|
-
}
|
556
|
-
return url
|
557
|
-
}
|
558
|
-
async function progress(res) {
|
559
|
-
return new Response(await res.arrayBuffer(), {
|
560
|
-
status: res.status,
|
561
|
-
headers: res.headers
|
562
|
-
})
|
563
|
-
}
|
564
|
-
|
565
|
-
function createPromiseAny() {
|
566
|
-
Promise.any = function (promises) {
|
567
|
-
return new Promise((resolve, reject) => {
|
568
|
-
promises = Array.isArray(promises) ? promises : []
|
569
|
-
let len = promises.length
|
570
|
-
let errs = []
|
571
|
-
if (len === 0) return reject(new AggregateError('All promises were rejected'))
|
572
|
-
promises.forEach((p) => {
|
573
|
-
if (p instanceof Promise) {
|
574
|
-
p.then(
|
575
|
-
(res) => resolve(res),
|
576
|
-
(err) => {
|
577
|
-
len--
|
578
|
-
errs.push(err)
|
579
|
-
if (len === 0) reject(new AggregateError(errs))
|
580
|
-
}
|
581
|
-
)
|
582
|
-
} else {
|
583
|
-
reject(p)
|
584
|
-
}
|
585
|
-
})
|
586
|
-
})
|
587
|
-
}
|
588
|
-
}
|
589
|
-
|
590
|
-
function fetchAny(reqs) {
|
591
|
-
const controller = new AbortController()
|
592
|
-
|
593
|
-
return reqs.map(req => {
|
594
|
-
return new Promise((resolve, reject) => {
|
595
|
-
fetch(req, {
|
596
|
-
signal: controller.signal
|
597
|
-
})
|
598
|
-
.then(progress)
|
599
|
-
.then(res => {
|
600
|
-
controller.abort()
|
601
|
-
if (res.status !== 200)
|
602
|
-
reject(null)
|
603
|
-
else
|
604
|
-
resolve(res)
|
605
|
-
})
|
606
|
-
.catch(() => reject(null))
|
607
|
-
})
|
608
|
-
})
|
609
|
-
}
|
610
|
-
|
611
|
-
function fetchParallel(reqs) {
|
612
|
-
const abortEvent = new Event("abortOtherInstance")
|
613
|
-
const eventTarget = new EventTarget();
|
614
|
-
|
615
|
-
return reqs.map(async req => {
|
616
|
-
const controller = new AbortController();
|
617
|
-
let tagged = false;
|
618
|
-
eventTarget.addEventListener(abortEvent.type, () => {
|
619
|
-
if (!tagged) controller.abort();
|
620
|
-
})
|
621
|
-
return new Promise((resolve, reject) => {
|
622
|
-
fetch(req, {
|
623
|
-
signal: controller.signal,
|
624
|
-
}).then(res => {
|
625
|
-
tagged = true;
|
626
|
-
eventTarget.dispatchEvent(abortEvent)
|
627
|
-
if (res.status !== 200)
|
628
|
-
reject(null)
|
629
|
-
else
|
630
|
-
resolve(res)
|
631
|
-
}).catch(() => reject(null))
|
632
|
-
})
|
633
|
-
});
|
634
|
-
}
|
635
|
-
|
636
|
-
const FetchEngine = (reqs) => {
|
637
|
-
if (!Promise.any) createPromiseAny();
|
638
|
-
return Promise.any(fetchParallel(reqs)).then(res => res)
|
639
|
-
.catch((e) => {
|
640
|
-
if (e == "AggregateError: All promises were rejected") {
|
641
|
-
return Promise.any(fetchAny(reqs))
|
642
|
-
.then((res) => res)
|
643
|
-
.catch(() => null);
|
644
|
-
}
|
645
|
-
return null;
|
646
|
-
});
|
647
|
-
};
|
648
|
-
|
649
|
-
const getContentType = (ext) => {
|
650
|
-
switch (ext) {
|
651
|
-
case 'js':
|
652
|
-
return 'text/javascript'
|
653
|
-
case 'html':
|
654
|
-
return 'text/html'
|
655
|
-
case 'css':
|
656
|
-
return 'text/css'
|
657
|
-
case 'json':
|
658
|
-
return 'application/json'
|
659
|
-
case 'webp':
|
660
|
-
return 'image/webp'
|
661
|
-
case 'jpg':
|
662
|
-
return 'image/jpg'
|
663
|
-
case 'jpeg':
|
664
|
-
return 'image/jpeg'
|
665
|
-
case 'png':
|
666
|
-
return 'image/png'
|
667
|
-
case 'gif':
|
668
|
-
return 'image/gif'
|
669
|
-
case 'xml':
|
670
|
-
return 'text/xml'
|
671
|
-
case 'xsl':
|
672
|
-
return 'text/xml'
|
673
|
-
case 'webmanifest':
|
674
|
-
return 'text/webmanifest'
|
675
|
-
case 'map':
|
676
|
-
return 'application/json'
|
677
|
-
case 'bcmap':
|
678
|
-
return 'image/vnd.wap.wbmp'
|
679
|
-
case 'wbmp':
|
680
|
-
return 'image/vnd.wap.wbmp'
|
681
|
-
case 'bmp':
|
682
|
-
return 'image/bmp'
|
683
|
-
case 'ico':
|
684
|
-
return 'image/vnd.microsoft.icon'
|
685
|
-
case 'tiff':
|
686
|
-
return 'image/tiff'
|
687
|
-
case 'tif':
|
688
|
-
return 'image/tiff'
|
689
|
-
case 'svg':
|
690
|
-
return 'image/svg+xml'
|
691
|
-
case 'svgz':
|
692
|
-
return 'image/svg+xml'
|
693
|
-
case 'woff':
|
694
|
-
return 'application/font-woff'
|
695
|
-
case 'woff2':
|
696
|
-
return 'application/font-woff2'
|
697
|
-
case 'ttf':
|
698
|
-
return 'application/font-ttf'
|
699
|
-
case 'otf':
|
700
|
-
return 'application/font-otf'
|
701
|
-
case 'eot':
|
702
|
-
return 'application/vnd.ms-fontobject'
|
703
|
-
case 'zip':
|
704
|
-
return 'application/zip'
|
705
|
-
case 'tar':
|
706
|
-
return 'application/x-tar'
|
707
|
-
case 'gz':
|
708
|
-
return 'application/gzip'
|
709
|
-
case 'bz2':
|
710
|
-
return 'application/x-bzip2'
|
711
|
-
case 'rar':
|
712
|
-
return 'application/x-rar-compressed'
|
713
|
-
case '7z':
|
714
|
-
return 'application/x-7z-compressed'
|
715
|
-
case 'doc':
|
716
|
-
return 'application/msword'
|
717
|
-
case 'docx':
|
718
|
-
return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
|
719
|
-
case 'xls':
|
720
|
-
return 'application/vnd.ms-excel'
|
721
|
-
case 'xlsx':
|
722
|
-
return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
723
|
-
case 'ppt':
|
724
|
-
return 'application/vnd.ms-powerpoint'
|
725
|
-
case 'pptx':
|
726
|
-
return 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
|
727
|
-
case 'pdf':
|
728
|
-
return 'application/pdf'
|
729
|
-
case 'txt':
|
730
|
-
return 'text/plain'
|
731
|
-
case 'rtf':
|
732
|
-
return 'application/rtf'
|
733
|
-
case 'mp3':
|
734
|
-
return 'audio/mpeg'
|
735
|
-
case 'wav':
|
736
|
-
return 'audio/x-wav'
|
737
|
-
case 'ogg':
|
738
|
-
return 'audio/ogg'
|
739
|
-
case 'mp4':
|
740
|
-
return 'video/mp4'
|
741
|
-
case 'm4v':
|
742
|
-
return 'video/x-m4v'
|
743
|
-
case 'mov':
|
744
|
-
return 'video/quicktime'
|
745
|
-
case 'avi':
|
746
|
-
return 'video/x-msvideo'
|
747
|
-
case 'wmv':
|
748
|
-
return 'video/x-ms-wmv'
|
749
|
-
case 'flv':
|
750
|
-
return 'video/x-flv'
|
751
|
-
case 'swf':
|
752
|
-
return 'application/x-shockwave-flash'
|
753
|
-
case 'mpg':
|
754
|
-
return 'video/mpeg'
|
755
|
-
case 'mpeg':
|
756
|
-
return 'video/mpeg'
|
757
|
-
case 'mpe':
|
758
|
-
return 'video/mpeg'
|
759
|
-
case 'mpv':
|
760
|
-
return 'video/mpeg'
|
761
|
-
case 'm2v':
|
762
|
-
return 'video/mpeg'
|
763
|
-
case 'm4a':
|
764
|
-
return 'audio/mp4'
|
765
|
-
case 'aac':
|
766
|
-
return 'audio/aac'
|
767
|
-
case 'm3u':
|
768
|
-
return 'audio/x-mpegurl'
|
769
|
-
case 'm3u8':
|
770
|
-
return 'application/vnd.apple.mpegurl'
|
771
|
-
case 'pls':
|
772
|
-
return 'audio/x-scpls'
|
773
|
-
case 'cue':
|
774
|
-
return 'application/x-cue'
|
775
|
-
case 'wma':
|
776
|
-
return 'audio/x-ms-wma'
|
777
|
-
case 'flac':
|
778
|
-
return 'audio/flac'
|
779
|
-
case 'aif':
|
780
|
-
return 'audio/x-aiff'
|
781
|
-
case 'aiff':
|
782
|
-
return 'audio/x-aiff'
|
783
|
-
case 'aifc':
|
784
|
-
return 'audio/x-aiff'
|
785
|
-
case 'au':
|
786
|
-
return 'audio/basic'
|
787
|
-
case 'snd':
|
788
|
-
return 'audio/basic'
|
789
|
-
case 'mid':
|
790
|
-
return 'audio/midi'
|
791
|
-
case 'midi':
|
792
|
-
return 'audio/midi'
|
793
|
-
case 'kar':
|
794
|
-
return 'audio/midi'
|
795
|
-
default:
|
796
|
-
return 'text/plain'
|
797
|
-
}
|
798
|
-
}
|
1
|
+
const prefix="sinzmise-cetastories",cacheSuffixVersion="00000018-0.6915162664059634",CACHE_NAME=prefix+"-v"+cacheSuffixVersion,PreCachlist=["/css/style.css","/js/app.js","/js/search/hexo.js"];let NPMMirror=!0;const NPMPackage="sinzmise-cetastories";let NPMPackageVersion="latest",debug=!0;const handleFetch=async e=>{const t=e.request.url;return/nocache/.test(t)?NetworkOnly(e):/@latest/.test(t)?CacheFirst(e):/cdnjs\.cloudflare\.com/.test(t)||/music\.126\.net/.test(t)||/qqmusic\.qq\.com/.test(t)||/jsdelivr\.net/.test(t)||/npm\.elemecdn\.com/.test(t)||/unpkg\.com/.test(t)||/.*\.(?:png|jpg|jpeg|svg|gif|webp|ico|eot|ttf|woff|woff2|mp3)$/.test(t)||/.*\.(css|js)$/.test(t)?CacheAlways(e):CacheFirst(e)},cdn={gh:{jsdelivr:"https://cdn.jsdelivr.net/gh",fastly:"https://fastly.jsdelivr.net/gh",gcore:"https://gcore.jsdelivr.net/gh",testingcf:"https://testingcf.jsdelivr.net/gh",test1:"https://test1.jsdelivr.net/gh",storisinz:"https://jsd.cdn.storisinz.site/gh",webcache:"https://code.webcache.cn/gh"},combine:{jsdelivr:"https://cdn.jsdelivr.net/combine",fastly:"https://fastly.jsdelivr.net/combine",gcore:"https://gcore.jsdelivr.net/combine",testingcf:"https://testingcf.jsdelivr.net/combine",test1:"https://test1.jsdelivr.net/combine",storisinz:"https://jsd.cdn.storisinz.site/combine"},npm:{jsdelivr:"https://cdn.jsdelivr.net/npm",fastly:"https://fastly.jsdelivr.net/npm",gcore:"https://gcore.jsdelivr.net/npm",testingcf:"https://testingcf.jsdelivr.net/npm",test1:"https://test1.jsdelivr.net/npm",unpkg:"https://unpkg.com",eleme:"https://npm.elemecdn.com",storisinz:"https://jsd.cdn.storisinz.site/npm",webcache:"https://npm.webcache.cn"},cdnjs:{cdnjs:"https://cdnjs.cloudflare.com/ajax/libs",baomitu:"https://lib.baomitu.com",bytedance:"https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M",sustech:"https://mirrors.sustech.edu.cn/cdnjs/ajax/libs",webcache:"https://cdnjs.webstatic.cn/ajax/libs"}},cdn_match_list=[];for(const e in cdn)for(const t in cdn[e])cdn_match_list.push({type:e,key:cdn[e][t]});const _console=console,color={black:"#000000",red:"#FF0000",green:"#008000",yellow:"#FFFF00",blue:"#0000FF",magenta:"#FF00FF",cyan:"#00FFFF",white:"#FFFFFF"},add=(...e)=>{let t=[[]];for(let r=0;r<e.length;r++){const[n,...o]=e[r];t[0]+=n,t=t.concat(o)}return t},createlog=e=>(...t)=>{("error"==e?_console[e]:_console.log).apply(void 0,t)},creategroup=e=>(...e)=>{_console.groupCollapsed.apply(void 0,e)},colorUtils={bold:e=>{if("string"==typeof e||"number"==typeof e)return`${e};font-weight: bold;`;for(let t=1;t<e.length;t++)e[t]+=";font-weight: bold;";return e}},colorHash={log:"black",wait:"cyan",error:"red",warn:"yellow",ready:"green",info:"blue",event:"magenta"},createChalk=e=>(...t)=>{if("object"==typeof t[0])return void createlog(e)(...add(colorUtils.bold(colorUtils[colorHash[e]](`[${firstToUpperCase(e)}] `)),...t));let r=t;"string"!=typeof t&&"number"!=typeof t||(r=colorUtils[colorHash[e]](t)),createlog(e)(...add(colorUtils.bold(colorUtils[colorHash[e]](`[${firstToUpperCase(e)}] `)),r))},createChalkBg=e=>(...t)=>{if("object"==typeof t[0])return void createlog(e)(...add(colorUtils.bold(colorUtils[`bg${firstToUpperCase(colorHash[e])}`](`[${firstToUpperCase(e)}] `)),...t));let r=t;"string"!=typeof t&&"number"!=typeof t||(r=colorUtils[colorHash[e]](t)),createlog(e)(...add(colorUtils.bold(colorUtils[`bg${firstToUpperCase(colorHash[e])}`](`[${firstToUpperCase(e)}] `)),r))},createChalkGroup=e=>(...t)=>{if("object"==typeof t[0])return void creategroup()(...add(colorUtils.bold(colorUtils[colorHash[e]](`[${firstToUpperCase(e)}] `)),...t));let r=t;"string"!=typeof t&&"number"!=typeof t||(r=colorUtils[colorHash[e]](t)),creategroup()(...add(colorUtils.bold(colorUtils[colorHash[e]](`[${firstToUpperCase(e)}] `)),r))},chalk={group:{end:_console.groupEnd},bg:{}};Object.keys(colorHash).forEach((e=>{chalk[e]=createChalk(e),chalk.group[e]=createChalkGroup(e),chalk.bg[e]=createChalkBg(e)}));const firstToUpperCase=e=>e.toLowerCase().replace(/( |^)[a-z]/g,(e=>e.toUpperCase()));Object.keys(color).forEach((e=>{colorUtils[e]=t=>{if("string"==typeof t||"number"==typeof t)return[`%c${t}`,`color:${color[e]}`];for(let r=1;r<t.length;r++)t[r]+=`;color:${color[e]}`;return t},colorUtils[`bg${firstToUpperCase(e)}`]=t=>{if("string"==typeof t||"number"==typeof t)return[`%c${t}`,`padding: 2px 4px; border-radius: 3px; color: ${"white"===e?"#000":"#fff"}; font-weight: bold; background:${color[e]};`];for(let r=1;r<t.length;r++)t[r]+=`;padding: 2px 4px; border-radius: 3px; font-weight: bold; background:${color[e]};`;return t}})),self.logger={add:add,...chalk,...colorUtils},debug||(logger={log:()=>{},wait:()=>{},error:()=>{},warn:()=>{},ready:()=>{},info:()=>{},event:()=>{},group:{log:()=>{},wait:()=>{},error:()=>{},warn:()=>{},ready:()=>{},info:()=>{},event:()=>{},end:()=>{}},bg:{log:()=>{},wait:()=>{},error:()=>{},warn:()=>{},ready:()=>{},info:()=>{},event:()=>{}}},console.log=()=>{});const generate_uuid=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}));self.db={read:(e,t)=>(t||(t={type:"text"}),new Promise(((t,r)=>{caches.open(CACHE_NAME).then((r=>{r.match(new Request(`https://LOCALCACHE/${encodeURIComponent(e)}`)).then((function(e){e||t(null),e.text().then((e=>t(e)))})).catch((()=>{t(null)}))}))}))),write:(e,t)=>new Promise(((r,n)=>{caches.open(CACHE_NAME).then((function(n){n.put(new Request(`https://LOCALCACHE/${encodeURIComponent(e)}`),new Response(t)),r()})).catch((()=>{n()}))}))};const compareVersion=(e,t)=>{let r=e.split("."),n=t.split(".");const o=Math.max(r.length,n.length);for(;r.length<o;)r.push("0");for(;n.length<o;)n.push("0");for(let a=0;a<o;a++){const o=parseInt(r[a]),s=parseInt(n[a]);if(o>s)return e;if(o<s)return t}return e},mirrors=[`https://registry.npmjs.org/${NPMPackage}/latest`,`https://registry.npmmirror.com/${NPMPackage}/latest`,`https://mirrors.cloud.tencent.com/npm/${NPMPackage}/latest`],getLocalVersion=async()=>{NPMPackageVersion=await db.read("blog_version")||NPMPackageVersion,logger.bg.info(`Local Version: ${NPMPackage}@${NPMPackageVersion}`)};let mirror_time=0;const setNewestVersion=async()=>{if(!NPMMirror)return;let e=null;return e=mirror_time%(mirrors.length+1)?fetch(mirrors[mirror_time%(mirrors.length+1)-1]):FetchEngine(mirrors),mirror_time++,e.then((e=>e.json())).then((async e=>{if(!e.version)throw"No Version Found!";NPMPackageVersion=compareVersion(e.version,await db.read("blog_version")||NPMPackageVersion),logger.bg.ready(`${NPMPackage}@${NPMPackageVersion}`),await db.write("blog_version",NPMPackageVersion)})).catch((e=>{logger.error("[Set Newest Version] "+(e.stack||e))}))};setInterval((async()=>{await setNewestVersion()}),6e4),setTimeout((async()=>{await setNewestVersion()}),5e3);const installFunction=async()=>(await getLocalVersion(),caches.open(CACHE_NAME+"-precache").then((async function(e){if(await db.read("uuid")||await db.write("uuid",generate_uuid()),PreCachlist.length){logger.group.event(`Precaching ${PreCachlist.length} files.`);let t=0;PreCachlist.forEach((function(r){e.match(new Request(r)).then((function(n){n?logger.ready(`Precaching ${r}`):(logger.wait(`Precaching ${r}`),e.add(new Request(r))),t++,t===PreCachlist.length&&(logger.ready(`Precached ${PreCachlist.length} files.`),logger.group.end())}))}))}})).catch((e=>{logger.error("[install] "+(e.stack||e))})));self.addEventListener("install",(async function(e){logger.bg.event("service worker install event listening");try{self.skipWaiting(),e.waitUntil(installFunction()),logger.bg.ready("service worker install sucess!")}catch(e){logger.error("[install] "+(e.stack||e))}})),self.addEventListener("activate",(async e=>{logger.bg.event("service worker activate event listening");try{e.waitUntil(caches.keys().then((e=>Promise.all(e.map((e=>{e.includes(cacheSuffixVersion)||(caches.delete(e),logger.bg.ready("Deleted Outdated Cache: "+e))}))))).catch((e=>{logger.error("[activate] "+(e.stack||e))}))),await self.clients.claim(),logger.bg.ready("service worker activate sucess!")}catch(e){logger.error("[activate] "+(e.stack||e))}})),self.addEventListener("fetch",(async e=>{e.respondWith(handleFetch(e).catch((t=>{logger.error("[fetch] "+e.request.url+"\n[error] "+(t.stack||t))})))}));const NetworkOnly=async e=>(logger.group.info("NetworkOnly: "+new URL(e.request.url).pathname),logger.wait("service worker fetch: "+e.request.url),logger.group.end(),fetch(e.request)),CacheFirst=async e=>caches.match(e.request).then((function(t){return logger.group.info("CacheFirst: "+new URL(e.request.url).pathname),logger.wait("service worker fetch: "+e.request.url),t?(logger.group.ready("Cache Hit"),console.log(t),logger.group.end(),logger.group.end(),e.waitUntil(CacheRuntime(e.request)),t):(logger.warn("Cache Miss"),logger.group.end(),CacheRuntime(e.request))})),CacheAlways=async e=>caches.match(e.request).then((function(t){return logger.group.info("CacheAlways: "+new URL(e.request.url).pathname),logger.wait("service worker fetch: "+e.request.url),t?(logger.group.ready("Cache Hit"),console.log(t),logger.group.end(),logger.group.end(),t):(logger.warn("Cache Miss"),logger.group.end(),CacheRuntime(e.request))})),matchCache=async e=>caches.match(e.request).then((function(t){return logger.group.info("service worker fetch: "+e.request.url),t?(logger.group.ready("Cache Hit"),console.log(t),logger.group.end(),logger.group.end(),t):(logger.warn("Cache Miss"),logger.group.end(),CacheRuntime(e.request))}));async function CacheRuntime(e){const t=new URL(e.url);let r=await matchCDN(e);if(r||(r=await fetch(e).catch((()=>null))),logger.group.event(`Cache Runtime ${t.pathname}`),logger.wait(`Caching url: ${e.url}`),console.log(r),"GET"===e.method&&"https:"==t.protocol){(await caches.open(CACHE_NAME+"-runtime")).put(e,r.clone()).catch((e=>{logger.error("[Cache Runtime] "+(e.stack||e)),"QuotaExceededError"===e.name&&(caches.delete(CACHE_NAME+"-runtime"),logger.ready("deleted cache"))})),logger.ready(`Cached url: ${e.url}`)}else logger.warn(`Not Cached url: ${e.url}`);return logger.group.end(),r}const matchCDN=async e=>{const t=navigator,{saveData:r,effectiveType:n}=t.connection||t.mozConnection||t.webkitConnection||{};if(r||/2g/.test(n))return logger.warn("Slow Network: Transparent Proxy"),fetch(e);const o=[];let a,s=new URL(e.url).pathname.split("/")[1],c="";if(NPMMirror&&new RegExp(location.origin).test(e.url)){logger.group.ready("Match NPM Mirror: "+e.url);for(const t in cdn.npm){let r=cdn.npm[t]+"/"+NPMPackage+"@"+NPMPackageVersion+e.url.replace(location.origin,"");r=fullPath(fullPath(r)),console.log(r),o.push(r)}logger.group.end()}if(!o.length){for(const t of cdn_match_list)if(new RegExp(t.key).test(e.url)){s=t.type,c=new RegExp(t.key).exec(e.url)[0];break}for(const t in cdn)if(t===s){logger.group.ready(`Match CDN ${s}: `+e.url);for(const r in cdn[t]){const n=cdn[t][r]+e.url.replace(c,"");console.log(n),o.push(n)}logger.group.end()}}if(a=o.length?FetchEngine(o):fetch(e),a&&NPMMirror&&new RegExp(location.origin).test(e.url)){const t=fullPath(fullPath(e.url)).split(".").pop(),r=getContentType(t);a=a.then((e=>e.arrayBuffer())).then((e=>new Response(e,{headers:{"Content-Type":r}}))).catch((()=>null))}return a},fullPath=e=>{if((e=e.split("?")[0].split("#")[0]).endsWith("/"))e+="index.html";else{const t=e.split("/");-1===t[t.length-1].indexOf(".")&&(e+=".html")}return e};async function progress(e){return new Response(await e.arrayBuffer(),{status:e.status,headers:e.headers})}function createPromiseAny(){Promise.any=function(e){return new Promise(((t,r)=>{let n=(e=Array.isArray(e)?e:[]).length,o=[];if(0===n)return r(new AggregateError("All promises were rejected"));e.forEach((e=>{e instanceof Promise?e.then((e=>t(e)),(e=>{n--,o.push(e),0===n&&r(new AggregateError(o))})):r(e)}))}))}}function fetchAny(e){const t=new AbortController;return e.map((e=>new Promise(((r,n)=>{fetch(e,{signal:t.signal}).then(progress).then((e=>{t.abort(),200!==e.status?n(null):r(e)})).catch((()=>n(null)))}))))}function fetchParallel(e){const t=new Event("abortOtherInstance"),r=new EventTarget;return e.map((async e=>{const n=new AbortController;let o=!1;return r.addEventListener(t.type,(()=>{o||n.abort()})),new Promise(((a,s)=>{fetch(e,{signal:n.signal}).then((e=>{o=!0,r.dispatchEvent(t),200!==e.status?s(null):a(e)})).catch((()=>s(null)))}))}))}const FetchEngine=e=>(Promise.any||createPromiseAny(),Promise.any(fetchParallel(e)).then((e=>e)).catch((t=>"AggregateError: All promises were rejected"==t?Promise.any(fetchAny(e)).then((e=>e)).catch((()=>null)):null))),getContentType=e=>{switch(e){case"js":return"text/javascript";case"html":return"text/html";case"css":return"text/css";case"json":case"map":return"application/json";case"webp":return"image/webp";case"jpg":return"image/jpg";case"jpeg":return"image/jpeg";case"png":return"image/png";case"gif":return"image/gif";case"xml":case"xsl":return"text/xml";case"webmanifest":return"text/webmanifest";case"bcmap":case"wbmp":return"image/vnd.wap.wbmp";case"bmp":return"image/bmp";case"ico":return"image/vnd.microsoft.icon";case"tiff":case"tif":return"image/tiff";case"svg":case"svgz":return"image/svg+xml";case"woff":return"application/font-woff";case"woff2":return"application/font-woff2";case"ttf":return"application/font-ttf";case"otf":return"application/font-otf";case"eot":return"application/vnd.ms-fontobject";case"zip":return"application/zip";case"tar":return"application/x-tar";case"gz":return"application/gzip";case"bz2":return"application/x-bzip2";case"rar":return"application/x-rar-compressed";case"7z":return"application/x-7z-compressed";case"doc":return"application/msword";case"docx":return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case"xls":return"application/vnd.ms-excel";case"xlsx":return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case"ppt":return"application/vnd.ms-powerpoint";case"pptx":return"application/vnd.openxmlformats-officedocument.presentationml.presentation";case"pdf":return"application/pdf";case"txt":default:return"text/plain";case"rtf":return"application/rtf";case"mp3":return"audio/mpeg";case"wav":return"audio/x-wav";case"ogg":return"audio/ogg";case"mp4":return"video/mp4";case"m4v":return"video/x-m4v";case"mov":return"video/quicktime";case"avi":return"video/x-msvideo";case"wmv":return"video/x-ms-wmv";case"flv":return"video/x-flv";case"swf":return"application/x-shockwave-flash";case"mpg":case"mpeg":case"mpe":case"mpv":case"m2v":return"video/mpeg";case"m4a":return"audio/mp4";case"aac":return"audio/aac";case"m3u":return"audio/x-mpegurl";case"m3u8":return"application/vnd.apple.mpegurl";case"pls":return"audio/x-scpls";case"cue":return"application/x-cue";case"wma":return"audio/x-ms-wma";case"flac":return"audio/flac";case"aif":case"aiff":case"aifc":return"audio/x-aiff";case"au":case"snd":return"audio/basic";case"mid":case"midi":case"kar":return"audio/midi"}};
|
2
|
+
//# sourceMappingURL=maps/sw.js.map
|