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 });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rwsdk",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime",
5
5
  "type": "module",
6
6
  "bin": {