swpp-backends 2.2.0 → 2.2.2

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.
@@ -17,7 +17,7 @@ const Variant_1 = require("./Variant");
17
17
  function buildServiceWorker() {
18
18
  const rules = (0, Variant_1.readRules)();
19
19
  const eject = (0, Utils_1.readEjectData)();
20
- const { modifyRequest, fetchFile, getRaceUrls, getSpareUrls, blockRequest, config } = rules;
20
+ const { modifyRequest, skipRequest, fetchFile, getRaceUrls, getSpareUrls, blockRequest, config } = rules;
21
21
  if (!config.serviceWorker) {
22
22
  (0, Utils_1.error)('ServiceWorkerBuilder', '插件未开启该项');
23
23
  throw '功能未开启';
@@ -44,7 +44,7 @@ function buildServiceWorker() {
44
44
  cache += `(${(0, Utils_1.getSource)(rules['afterJoin'])})()\n`;
45
45
  if ('afterTheme' in rules)
46
46
  cache += `(${(0, Utils_1.getSource)(rules['afterTheme'])})()\n`;
47
- const keyword = "const { cacheRules, fetchFile, getSpareUrls, skipRequest } = require('../sw-rules')";
47
+ const keyword = "const { cacheRules, fetchFile, getSpareUrls } = require('../sw-rules')";
48
48
  // noinspection JSUnresolvedVariable
49
49
  let content = fs_1.default.readFileSync(templatePath, 'utf8')
50
50
  .replaceAll("// [insertion site] values", eject?.strValue ?? '')
@@ -62,6 +62,9 @@ function buildServiceWorker() {
62
62
  else if (modify) handleFetch(fetchWithCors(request, false).catch(err => new Response(err, {status: 499})))
63
63
  `);
64
64
  }
65
+ if (skipRequest) {
66
+ content = content.replaceAll('// [skipRequest call]', `if (skipRequest(request)) return;`);
67
+ }
65
68
  if (blockRequest) {
66
69
  content = content.replace('// [blockRequest call]', `
67
70
  if (blockRequest(url))
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ const VersionAnalyzer_1 = require("./VersionAnalyzer");
10
10
  const DomBuilder_1 = require("./DomBuilder");
11
11
  // noinspection JSUnusedGlobalSymbols
12
12
  exports.default = {
13
- version: '2.2.0',
13
+ version: '2.2.2',
14
14
  cache: {
15
15
  readEjectData: Utils_1.readEjectData, readUpdateJson: Variant_1.readUpdateJson,
16
16
  readRules: Variant_1.readRules, readMergeVersionMap: Variant_1.readMergeVersionMap,
@@ -45,7 +45,7 @@
45
45
  self.addEventListener('activate', event => event.waitUntil(clients.claim()))
46
46
 
47
47
  // noinspection JSFileReferences
48
- const { cacheRules, fetchFile, getSpareUrls, skipRequest } = require('../sw-rules')
48
+ const { cacheRules, fetchFile, getSpareUrls } = require('../sw-rules')
49
49
 
50
50
  // 检查请求是否成功
51
51
  // noinspection JSUnusedLocalSymbols
@@ -83,7 +83,7 @@
83
83
  // [blockRequest call]
84
84
  if (request.method !== 'GET' || !request.url.startsWith('http')) return
85
85
  // [modifyRequest call]
86
- if (skipRequest?.(request)) return
86
+ // [skipRequest call]
87
87
  let cacheKey = url.hostname + url.pathname + url.search
88
88
  let cache = cacheMap.get(cacheKey)
89
89
  if (cache) {
@@ -152,14 +152,15 @@
152
152
  * @param optional {RequestInit?} 额外的配置项
153
153
  * @return {Promise<Response>}
154
154
  */
155
- const fetchWithCors = (request, banCache, optional) => fetch(
156
- request,
157
- Object.assign({
158
- cache: optional ? "no-store" : "default",
159
- mode: 'cors',
160
- credentials: 'same-origin'
161
- }, optional || {})
162
- )
155
+ const fetchWithCors = (request, banCache, optional) => {
156
+ if (!optional) optional = {}
157
+ optional.cache = banCache ? 'no-store' : 'default'
158
+ if (request.headers.get('Content-Type')?.startsWith('image/')) {
159
+ optional.mode = 'cors'
160
+ optional.credentials = 'same-origin'
161
+ }
162
+ return fetch(request, optional)
163
+ }
163
164
 
164
165
  /**
165
166
  * 判断指定 url 击中了哪一种缓存,都没有击中则返回 null
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "swpp-backends",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "main": "dist/index.js",
5
5
  "typings": "types/index.d.ts",
6
6
  "description": "Generate a powerful ServiceWorker for your website.",