@syfei49/mini-dynamic-renderer 1.0.0 → 1.0.3
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.
Potentially problematic release.
This version of @syfei49/mini-dynamic-renderer might be problematic. Click here for more details.
- package/README.md +94 -102
- package/components/ly-ai-assistant/ly-ai-assistant.vue +523 -0
- package/index.js +16 -14
- package/package.json +27 -18
- package/src/adapters/request.js +106 -0
- package/src/chat/parser.js +55 -0
- package/src/chat/service.js +296 -0
- package/src/config.js +51 -0
- package/src/event.js +43 -0
- package/src/handler.js +43 -49
- package/src/init.js +38 -57
- package/src/interceptor.js +105 -104
package/src/interceptor.js
CHANGED
|
@@ -1,104 +1,105 @@
|
|
|
1
|
-
var handler = require('./handler');
|
|
2
|
-
|
|
3
|
-
var originalRequest = null;
|
|
4
|
-
var installed = false;
|
|
5
|
-
|
|
6
|
-
var DEFAULT_CONFIG = {
|
|
7
|
-
urlPatterns: ['*'],
|
|
8
|
-
debug: false
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
* @param {
|
|
15
|
-
* @
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
*
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
var
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
1
|
+
var handler = require('./handler');
|
|
2
|
+
|
|
3
|
+
var originalRequest = null;
|
|
4
|
+
var installed = false;
|
|
5
|
+
|
|
6
|
+
var DEFAULT_CONFIG = {
|
|
7
|
+
urlPatterns: ['*'],
|
|
8
|
+
debug: false,
|
|
9
|
+
enableInterceptor: false
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 判断 URL 是否匹配配置的模式
|
|
14
|
+
* @param {string} url
|
|
15
|
+
* @param {Array<string|RegExp>} patterns
|
|
16
|
+
* @returns {boolean}
|
|
17
|
+
*/
|
|
18
|
+
function matchUrl(url, patterns) {
|
|
19
|
+
if (!patterns || patterns.length === 0) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
for (var i = 0; i < patterns.length; i++) {
|
|
24
|
+
var pattern = patterns[i];
|
|
25
|
+
|
|
26
|
+
if (pattern === '*') {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (pattern instanceof RegExp) {
|
|
31
|
+
if (pattern.test(url)) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (typeof pattern === 'string' && url.indexOf(pattern) !== -1) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* 安装 wx.request 拦截器
|
|
47
|
+
* @param {Object} config
|
|
48
|
+
*/
|
|
49
|
+
function installInterceptor(config) {
|
|
50
|
+
if (installed) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (typeof wx === 'undefined' || typeof wx.request !== 'function') {
|
|
55
|
+
console.warn('[mini-dynamic-renderer] wx.request is not available, skip interceptor install');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
originalRequest = wx.request;
|
|
60
|
+
installed = true;
|
|
61
|
+
|
|
62
|
+
wx.request = function (options) {
|
|
63
|
+
var userSuccess = options.success;
|
|
64
|
+
var mergedConfig = config || DEFAULT_CONFIG;
|
|
65
|
+
|
|
66
|
+
options.success = function (res) {
|
|
67
|
+
if (res && res.statusCode === 200 && matchUrl(options.url || '', mergedConfig.urlPatterns)) {
|
|
68
|
+
try {
|
|
69
|
+
handler.handleResponse(res, options, mergedConfig);
|
|
70
|
+
} catch (err) {
|
|
71
|
+
console.error('[mini-dynamic-renderer] handleResponse error:', err);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (typeof userSuccess === 'function') {
|
|
76
|
+
userSuccess(res);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
return originalRequest.call(wx, options);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* 卸载拦截器,恢复原始 wx.request
|
|
86
|
+
*/
|
|
87
|
+
function uninstallInterceptor() {
|
|
88
|
+
if (!installed || !originalRequest) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
wx.request = originalRequest;
|
|
93
|
+
originalRequest = null;
|
|
94
|
+
installed = false;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
module.exports = {
|
|
98
|
+
DEFAULT_CONFIG: DEFAULT_CONFIG,
|
|
99
|
+
matchUrl: matchUrl,
|
|
100
|
+
installInterceptor: installInterceptor,
|
|
101
|
+
uninstallInterceptor: uninstallInterceptor,
|
|
102
|
+
isInstalled: function () {
|
|
103
|
+
return installed;
|
|
104
|
+
}
|
|
105
|
+
};
|