rwsdk 0.3.1 → 0.3.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.
|
@@ -50,15 +50,64 @@ class VitePluginResolverPlugin {
|
|
|
50
50
|
if (!resolveIdHandler)
|
|
51
51
|
continue;
|
|
52
52
|
let handlerFn;
|
|
53
|
+
let shouldApplyFilter = false;
|
|
54
|
+
let filter = null;
|
|
53
55
|
if (typeof resolveIdHandler === "function") {
|
|
54
56
|
handlerFn = resolveIdHandler;
|
|
55
57
|
}
|
|
56
58
|
else if (typeof resolveIdHandler === "object" &&
|
|
57
59
|
typeof resolveIdHandler.handler === "function") {
|
|
58
60
|
handlerFn = resolveIdHandler.handler;
|
|
61
|
+
shouldApplyFilter = true;
|
|
62
|
+
filter = resolveIdHandler.filter;
|
|
59
63
|
}
|
|
60
64
|
if (!handlerFn)
|
|
61
65
|
continue;
|
|
66
|
+
if (shouldApplyFilter && filter?.id) {
|
|
67
|
+
const idFilter = filter.id;
|
|
68
|
+
let shouldSkip = false;
|
|
69
|
+
if (idFilter instanceof RegExp) {
|
|
70
|
+
shouldSkip = !idFilter.test(currentRequest.request);
|
|
71
|
+
}
|
|
72
|
+
else if (Array.isArray(idFilter)) {
|
|
73
|
+
// Handle array of filters - matches if ANY filter matches
|
|
74
|
+
shouldSkip = !idFilter.some((f) => f instanceof RegExp
|
|
75
|
+
? f.test(currentRequest.request)
|
|
76
|
+
: f === currentRequest.request);
|
|
77
|
+
}
|
|
78
|
+
else if (typeof idFilter === "string") {
|
|
79
|
+
shouldSkip = idFilter !== currentRequest.request;
|
|
80
|
+
}
|
|
81
|
+
else if (typeof idFilter === "object" && idFilter !== null) {
|
|
82
|
+
// Handle include/exclude object pattern
|
|
83
|
+
const { include, exclude } = idFilter;
|
|
84
|
+
let matches = true;
|
|
85
|
+
// Check include patterns (if any)
|
|
86
|
+
if (include) {
|
|
87
|
+
const includePatterns = Array.isArray(include)
|
|
88
|
+
? include
|
|
89
|
+
: [include];
|
|
90
|
+
matches = includePatterns.some((pattern) => pattern instanceof RegExp
|
|
91
|
+
? pattern.test(currentRequest.request)
|
|
92
|
+
: pattern === currentRequest.request);
|
|
93
|
+
}
|
|
94
|
+
// Check exclude patterns (if any) - exclude overrides include
|
|
95
|
+
if (matches && exclude) {
|
|
96
|
+
const excludePatterns = Array.isArray(exclude)
|
|
97
|
+
? exclude
|
|
98
|
+
: [exclude];
|
|
99
|
+
const isExcluded = excludePatterns.some((pattern) => pattern instanceof RegExp
|
|
100
|
+
? pattern.test(currentRequest.request)
|
|
101
|
+
: pattern === currentRequest.request);
|
|
102
|
+
matches = !isExcluded;
|
|
103
|
+
}
|
|
104
|
+
shouldSkip = !matches;
|
|
105
|
+
}
|
|
106
|
+
if (shouldSkip) {
|
|
107
|
+
debug("Skipping plugin '%s' due to filter mismatch for '%s'", plugin.name, currentRequest.request);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
62
111
|
try {
|
|
63
112
|
debug("Calling plugin '%s' for '%s'", plugin.name, currentRequest.request);
|
|
64
113
|
const result = await handlerFn.call(pluginContext, currentRequest.request, currentRequest.path, { scan: true });
|