swpp-backends 0.0.5-alpha → 0.0.7-alpha
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/dist/UpdateJsonBuilder.js +7 -2
- package/dist/fileAnalyzer.js +27 -13
- package/dist/serviceWorkerBuilder.js +2 -2
- package/dist/swppRules.js +7 -2
- package/dist/utils.js +6 -2
- package/package.json +1 -1
- package/types/utils.d.ts +1 -1
|
@@ -34,8 +34,10 @@ exports.loadUpdateJson = loadUpdateJson;
|
|
|
34
34
|
* + **调用该函数前必须调用过 [loadUpdateJson]**
|
|
35
35
|
*/
|
|
36
36
|
function readUpdateJson() {
|
|
37
|
-
if (_oldJson === undefined)
|
|
37
|
+
if (_oldJson === undefined) {
|
|
38
|
+
(0, Utils_1.error)('UpdateJsonReader', 'UpdateJson 尚未初始化');
|
|
38
39
|
throw 'UpdateJson 未初始化';
|
|
40
|
+
}
|
|
39
41
|
return _oldJson;
|
|
40
42
|
}
|
|
41
43
|
exports.readUpdateJson = readUpdateJson;
|
|
@@ -52,8 +54,10 @@ exports.readUpdateJson = readUpdateJson;
|
|
|
52
54
|
*/
|
|
53
55
|
function buildNewInfo(root, dif) {
|
|
54
56
|
const config = (0, SwppRules_1.readRules)().config.json;
|
|
55
|
-
if (!config)
|
|
57
|
+
if (!config) {
|
|
58
|
+
(0, Utils_1.error)('NewInfoBuilder', '功能未开启');
|
|
56
59
|
throw '功能未开启';
|
|
60
|
+
}
|
|
57
61
|
const old = readUpdateJson();
|
|
58
62
|
let global = old?.global ?? 0;
|
|
59
63
|
if (dif.force)
|
|
@@ -274,6 +278,7 @@ function getShorthand(url, offset = 0) {
|
|
|
274
278
|
removeSet.forEach(it => collide.delete(it));
|
|
275
279
|
break;
|
|
276
280
|
default:
|
|
281
|
+
(0, Utils_1.error)('Shorthand', '意料之外的错误:' + count);
|
|
277
282
|
throw '意料之外的错误:' + count;
|
|
278
283
|
}
|
|
279
284
|
}
|
package/dist/fileAnalyzer.js
CHANGED
|
@@ -61,7 +61,7 @@ function eachAllFile(root, cb) {
|
|
|
61
61
|
function isExclude(domain, url) {
|
|
62
62
|
const exclude = (0, SwppRules_1.readRules)().config?.json?.exclude;
|
|
63
63
|
if (!exclude)
|
|
64
|
-
|
|
64
|
+
return false;
|
|
65
65
|
const list = isExternalLink(domain, url) ? exclude.other : exclude.localhost;
|
|
66
66
|
for (let reg of list) {
|
|
67
67
|
if (url.match(reg))
|
|
@@ -78,7 +78,7 @@ exports.isExclude = isExclude;
|
|
|
78
78
|
function isStable(url) {
|
|
79
79
|
const stable = (0, SwppRules_1.readRules)().config?.external?.stable;
|
|
80
80
|
if (!stable)
|
|
81
|
-
|
|
81
|
+
return false;
|
|
82
82
|
for (let reg of stable) {
|
|
83
83
|
if (url.match(reg))
|
|
84
84
|
return true;
|
|
@@ -112,8 +112,10 @@ exports.submitCacheInfo = submitCacheInfo;
|
|
|
112
112
|
* + **调用该函数前必须调用过 [loadCacheJson]**
|
|
113
113
|
*/
|
|
114
114
|
function readOldVersionJson() {
|
|
115
|
-
if (!_oldVersionJson)
|
|
116
|
-
|
|
115
|
+
if (!_oldVersionJson) {
|
|
116
|
+
(0, Utils_1.error)('OldVersionReader', 'version json 尚未初始化');
|
|
117
|
+
throw 'version json 尚未初始化';
|
|
118
|
+
}
|
|
117
119
|
return _oldVersionJson;
|
|
118
120
|
}
|
|
119
121
|
exports.readOldVersionJson = readOldVersionJson;
|
|
@@ -126,8 +128,10 @@ exports.readOldVersionJson = readOldVersionJson;
|
|
|
126
128
|
* + **执行该函数前必须调用过 [calcEjectValues]**
|
|
127
129
|
*/
|
|
128
130
|
function readNewVersionJson() {
|
|
129
|
-
if (!_newVersionJson)
|
|
130
|
-
|
|
131
|
+
if (!_newVersionJson) {
|
|
132
|
+
(0, Utils_1.error)('NewVersionReader', 'version json 尚未初始化');
|
|
133
|
+
throw 'version json 尚未初始化';
|
|
134
|
+
}
|
|
131
135
|
return _newVersionJson;
|
|
132
136
|
}
|
|
133
137
|
exports.readNewVersionJson = readNewVersionJson;
|
|
@@ -210,7 +214,7 @@ exports.buildVersionJson = buildVersionJson;
|
|
|
210
214
|
*/
|
|
211
215
|
async function eachAllLinkInUrl(domain, url, result, event) {
|
|
212
216
|
if (url.startsWith('//'))
|
|
213
|
-
url = 'http' + url;
|
|
217
|
+
url = 'http:' + url;
|
|
214
218
|
if (url in result)
|
|
215
219
|
return event?.(url);
|
|
216
220
|
if (!url.startsWith('http') || isExclude(domain, url))
|
|
@@ -241,9 +245,15 @@ async function eachAllLinkInUrl(domain, url, result, event) {
|
|
|
241
245
|
return;
|
|
242
246
|
}
|
|
243
247
|
}
|
|
244
|
-
const response = await (0, Utils_1.fetchFile)(url)
|
|
245
|
-
|
|
248
|
+
const response = await (0, Utils_1.fetchFile)(url).catch(err => {
|
|
249
|
+
(0, Utils_1.error)('LinkItorInUrl', `拉取文件 [${url}] 时发生异常:${err}`);
|
|
250
|
+
});
|
|
251
|
+
if (!response)
|
|
252
|
+
throw '拉取时异常';
|
|
253
|
+
if (![200, 301, 302, 307, 308].includes(response.status)) {
|
|
254
|
+
(0, Utils_1.error)('LinkItorInUrl', `拉取文件 [${url}] 时出现错误:${response.status}`);
|
|
246
255
|
throw response;
|
|
256
|
+
}
|
|
247
257
|
const pathname = new URL(url).pathname;
|
|
248
258
|
let content;
|
|
249
259
|
const relay = [];
|
|
@@ -303,7 +313,9 @@ async function eachAllLinkInHtml(domain, content, result, event) {
|
|
|
303
313
|
let url = undefined;
|
|
304
314
|
switch (node.tagName) {
|
|
305
315
|
case 'link':
|
|
306
|
-
|
|
316
|
+
// noinspection SpellCheckingInspection
|
|
317
|
+
if (node.attributes.rel !== 'preconnect')
|
|
318
|
+
url = node.attributes.href;
|
|
307
319
|
break;
|
|
308
320
|
case 'script':
|
|
309
321
|
case 'img':
|
|
@@ -389,8 +401,10 @@ exports.eachAllLinkInCss = eachAllLinkInCss;
|
|
|
389
401
|
*/
|
|
390
402
|
async function eachAllLinkInJavaScript(domain, content, result, event) {
|
|
391
403
|
const ruleList = (0, SwppRules_1.readRules)().config?.external?.js;
|
|
392
|
-
if (!ruleList)
|
|
404
|
+
if (!ruleList) {
|
|
405
|
+
(0, Utils_1.error)('LinkItorInJS', '不应发生的异常');
|
|
393
406
|
throw 'ruleList 为空';
|
|
407
|
+
}
|
|
394
408
|
for (let value of ruleList) {
|
|
395
409
|
if (typeof value === 'function') {
|
|
396
410
|
const urls = value(content);
|
|
@@ -431,7 +445,7 @@ function findCache(url) {
|
|
|
431
445
|
url = new URL(replaceRequest(url.href));
|
|
432
446
|
for (let key in cacheRules) {
|
|
433
447
|
const value = cacheRules[key];
|
|
434
|
-
if (value.match(url, eject
|
|
448
|
+
if (value.match(url, eject?.nodeEject))
|
|
435
449
|
return value;
|
|
436
450
|
}
|
|
437
451
|
return null;
|
|
@@ -449,6 +463,6 @@ function replaceRequest(url) {
|
|
|
449
463
|
return url;
|
|
450
464
|
const { modifyRequest } = rules;
|
|
451
465
|
const request = new node_fetch_1.Request(url);
|
|
452
|
-
return modifyRequest?.(request, (0, Utils_1.readEjectData)()
|
|
466
|
+
return modifyRequest?.(request, (0, Utils_1.readEjectData)()?.nodeEject)?.url ?? url;
|
|
453
467
|
}
|
|
454
468
|
exports.replaceRequest = replaceRequest;
|
|
@@ -19,7 +19,7 @@ function buildServiceWorker() {
|
|
|
19
19
|
const eject = (0, Utils_1.readEjectData)();
|
|
20
20
|
const { modifyRequest, fetchFile, getRaceUrls, getSpareUrls, blockRequest, config } = rules;
|
|
21
21
|
const serviceWorkerConfig = config.serviceWorker;
|
|
22
|
-
const templatePath = path_1.default.resolve('./', module.path, 'sw-template.js');
|
|
22
|
+
const templatePath = path_1.default.resolve('./', module.path, 'resources/sw-template.js');
|
|
23
23
|
// 获取拓展文件
|
|
24
24
|
let cache = (0, Utils_1.getSource)(rules, undefined, [
|
|
25
25
|
'cacheList', 'modifyRequest', 'getCdnList', 'getSpareUrls', 'blockRequest', 'fetchFile',
|
|
@@ -42,7 +42,7 @@ function buildServiceWorker() {
|
|
|
42
42
|
const keyword = "const { cacheList, fetchFile, getSpareUrls } = require('../sw-rules')";
|
|
43
43
|
// noinspection JSUnresolvedVariable
|
|
44
44
|
let content = fs_1.default.readFileSync(templatePath, 'utf8')
|
|
45
|
-
.replaceAll("// [insertion site] values", eject
|
|
45
|
+
.replaceAll("// [insertion site] values", eject?.strValue ?? '')
|
|
46
46
|
.replaceAll(keyword, cache)
|
|
47
47
|
.replaceAll("'@$$[escape]'", (serviceWorkerConfig.escape).toString())
|
|
48
48
|
.replaceAll("'@$$[cacheName]'", `'${serviceWorkerConfig.cacheName}'`);
|
package/dist/swppRules.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.loadRules = exports.addRulesMapEvent = exports.readRules = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const Utils_1 = require("./Utils");
|
|
9
10
|
const defConfig = {
|
|
10
11
|
serviceWorker: {
|
|
11
12
|
escape: 0,
|
|
@@ -54,8 +55,10 @@ let _rules;
|
|
|
54
55
|
* **执行该函数前必须调用过 [loadRules]**
|
|
55
56
|
*/
|
|
56
57
|
function readRules() {
|
|
57
|
-
if (!_rules)
|
|
58
|
+
if (!_rules) {
|
|
59
|
+
(0, Utils_1.error)('RulesReader', 'rules 尚未初始化');
|
|
58
60
|
throw 'rules 尚未初始化';
|
|
61
|
+
}
|
|
59
62
|
return _rules;
|
|
60
63
|
}
|
|
61
64
|
exports.readRules = readRules;
|
|
@@ -82,8 +85,10 @@ function loadRules(root, fileName, selects) {
|
|
|
82
85
|
.find(it => fs_1.default.existsSync(it));
|
|
83
86
|
// 其它可选目录下的 rules 文件
|
|
84
87
|
const selectPath = selects.flatMap(value => extensions.map(it => path_1.default.resolve(value, `${fileName}.${it}`))).find(it => fs_1.default.existsSync(it));
|
|
85
|
-
if (!(rootPath || selectPath))
|
|
88
|
+
if (!(rootPath || selectPath)) {
|
|
89
|
+
(0, Utils_1.error)('RulesLoader', '未查询到 rules 文件');
|
|
86
90
|
throw '未查询到 rules 文件';
|
|
91
|
+
}
|
|
87
92
|
const rootRules = rootPath ? { ...require(rootPath) } : {};
|
|
88
93
|
const selectRules = selectPath ? require(selectPath) : {};
|
|
89
94
|
const config = rootRules.config ?? {};
|
package/dist/utils.js
CHANGED
|
@@ -28,8 +28,10 @@ let ejectData = undefined;
|
|
|
28
28
|
*/
|
|
29
29
|
function calcEjectValues(framework) {
|
|
30
30
|
const rules = (0, SwppRules_1.readRules)();
|
|
31
|
-
if (!('ejectValues' in rules))
|
|
31
|
+
if (!('ejectValues' in rules)) {
|
|
32
|
+
ejectData = null;
|
|
32
33
|
return;
|
|
34
|
+
}
|
|
33
35
|
// noinspection JSUnresolvedReference
|
|
34
36
|
const eject = rules.ejectValues?.(framework, rules);
|
|
35
37
|
const nodeEject = {};
|
|
@@ -62,8 +64,10 @@ exports.calcEjectValues = calcEjectValues;
|
|
|
62
64
|
* + **执行该函数前必须调用过 [calcEjectValues]**
|
|
63
65
|
*/
|
|
64
66
|
function readEjectData() {
|
|
65
|
-
if (
|
|
67
|
+
if (ejectData === undefined) {
|
|
68
|
+
error('EjectReader', 'eject data 尚未初始化');
|
|
66
69
|
throw 'eject data 尚未初始化';
|
|
70
|
+
}
|
|
67
71
|
return ejectData;
|
|
68
72
|
}
|
|
69
73
|
exports.readEjectData = readEjectData;
|
package/package.json
CHANGED
package/types/utils.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare function calcEjectValues(framework: any): void;
|
|
|
18
18
|
* + **执行该函数前必须调用过 [loadRules]**
|
|
19
19
|
* + **执行该函数前必须调用过 [calcEjectValues]**
|
|
20
20
|
*/
|
|
21
|
-
export declare function readEjectData(): EjectCache;
|
|
21
|
+
export declare function readEjectData(): EjectCache | null;
|
|
22
22
|
/**
|
|
23
23
|
* 获取指定值的 js 源码表达形式
|
|
24
24
|
* @param obj 要转换的对象
|