xypriss 9.3.70 → 9.3.71

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.
@@ -41,7 +41,7 @@ function createResponseManipulationMiddleware(config) {
41
41
  return data;
42
42
  }
43
43
  for (const rule of config.rules) {
44
- applyRule(result, rule.field, rule.replacement, rule.preserve, 0, maxDepth);
44
+ applyRule(result, rule.field, rule.replacement, rule.preserve, rule.valuePattern, 0, maxDepth);
45
45
  }
46
46
  return result;
47
47
  };
@@ -76,24 +76,38 @@ function createResponseManipulationMiddleware(config) {
76
76
  /**
77
77
  * Recursively applies a manipulation rule to an object.
78
78
  */
79
- function applyRule(obj, field, replacement, preserve, depth = 0, maxDepth = 10) {
79
+ function applyRule(obj, field, replacement, preserve, valuePattern, depth = 0, maxDepth = 10) {
80
80
  if (!obj || typeof obj !== "object" || depth > maxDepth)
81
81
  return;
82
+ // 1. Global value matching if field is omitted
83
+ if (!field && valuePattern) {
84
+ for (const key in obj) {
85
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
86
+ maskValue(obj, key, replacement, preserve, valuePattern);
87
+ // Recurse deeper
88
+ if (obj[key] && typeof obj[key] === "object") {
89
+ applyRule(obj[key], undefined, replacement, preserve, valuePattern, depth + 1, maxDepth);
90
+ }
91
+ }
92
+ }
93
+ return;
94
+ }
95
+ // 2. RegExp matching on keys
82
96
  if (field instanceof RegExp) {
83
97
  for (const key in obj) {
84
98
  if (Object.prototype.hasOwnProperty.call(obj, key)) {
85
99
  if (field.test(key)) {
86
- maskValue(obj, key, replacement, preserve);
100
+ maskValue(obj, key, replacement, preserve, valuePattern);
87
101
  }
88
102
  // Recurse for nested objects even if key didn't match (to find matches deeper)
89
103
  if (obj[key] && typeof obj[key] === "object") {
90
- applyRule(obj[key], field, replacement, preserve, depth + 1, maxDepth);
104
+ applyRule(obj[key], field, replacement, preserve, valuePattern, depth + 1, maxDepth);
91
105
  }
92
106
  }
93
107
  }
94
108
  return;
95
109
  }
96
- // Standard dot notation path
110
+ // 3. Dot notation matching
97
111
  const keys = field.split(".");
98
112
  let current = obj;
99
113
  for (let i = 0; i < keys.length - 1; i++) {
@@ -107,14 +121,25 @@ function applyRule(obj, field, replacement, preserve, depth = 0, maxDepth = 10)
107
121
  }
108
122
  const lastKey = keys[keys.length - 1];
109
123
  if (current[lastKey] !== undefined) {
110
- maskValue(current, lastKey, replacement, preserve);
124
+ maskValue(current, lastKey, replacement, preserve, valuePattern);
111
125
  }
112
126
  }
113
127
  /**
114
128
  * Masks or replaces a value at a specific key in an object.
115
129
  */
116
- function maskValue(obj, key, replacement, preserve) {
130
+ function maskValue(obj, key, replacement, preserve, valuePattern) {
117
131
  const value = obj[key];
132
+ // If valuePattern is specified, only mask if the value matches the pattern
133
+ if (valuePattern && typeof value === "string") {
134
+ if (!valuePattern.test(value)) {
135
+ return;
136
+ }
137
+ }
138
+ else if (valuePattern) {
139
+ // Skip non-string values if we're looking for a pattern match
140
+ // (Patterns typically only make sense for string/error messages)
141
+ return;
142
+ }
118
143
  if (replacement !== undefined) {
119
144
  obj[key] = replacement;
120
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseManipulationMiddleware.js","sources":["../../../../../src/middleware/built-in/ResponseManipulationMiddleware.ts"],"sourcesContent":[null],"names":["XStringify"],"mappings":"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"}
1
+ {"version":3,"file":"ResponseManipulationMiddleware.js","sources":["../../../../../src/middleware/built-in/ResponseManipulationMiddleware.ts"],"sourcesContent":[null],"names":["XStringify"],"mappings":"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"}
@@ -39,7 +39,7 @@ function createResponseManipulationMiddleware(config) {
39
39
  return data;
40
40
  }
41
41
  for (const rule of config.rules) {
42
- applyRule(result, rule.field, rule.replacement, rule.preserve, 0, maxDepth);
42
+ applyRule(result, rule.field, rule.replacement, rule.preserve, rule.valuePattern, 0, maxDepth);
43
43
  }
44
44
  return result;
45
45
  };
@@ -74,24 +74,38 @@ function createResponseManipulationMiddleware(config) {
74
74
  /**
75
75
  * Recursively applies a manipulation rule to an object.
76
76
  */
77
- function applyRule(obj, field, replacement, preserve, depth = 0, maxDepth = 10) {
77
+ function applyRule(obj, field, replacement, preserve, valuePattern, depth = 0, maxDepth = 10) {
78
78
  if (!obj || typeof obj !== "object" || depth > maxDepth)
79
79
  return;
80
+ // 1. Global value matching if field is omitted
81
+ if (!field && valuePattern) {
82
+ for (const key in obj) {
83
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
84
+ maskValue(obj, key, replacement, preserve, valuePattern);
85
+ // Recurse deeper
86
+ if (obj[key] && typeof obj[key] === "object") {
87
+ applyRule(obj[key], undefined, replacement, preserve, valuePattern, depth + 1, maxDepth);
88
+ }
89
+ }
90
+ }
91
+ return;
92
+ }
93
+ // 2. RegExp matching on keys
80
94
  if (field instanceof RegExp) {
81
95
  for (const key in obj) {
82
96
  if (Object.prototype.hasOwnProperty.call(obj, key)) {
83
97
  if (field.test(key)) {
84
- maskValue(obj, key, replacement, preserve);
98
+ maskValue(obj, key, replacement, preserve, valuePattern);
85
99
  }
86
100
  // Recurse for nested objects even if key didn't match (to find matches deeper)
87
101
  if (obj[key] && typeof obj[key] === "object") {
88
- applyRule(obj[key], field, replacement, preserve, depth + 1, maxDepth);
102
+ applyRule(obj[key], field, replacement, preserve, valuePattern, depth + 1, maxDepth);
89
103
  }
90
104
  }
91
105
  }
92
106
  return;
93
107
  }
94
- // Standard dot notation path
108
+ // 3. Dot notation matching
95
109
  const keys = field.split(".");
96
110
  let current = obj;
97
111
  for (let i = 0; i < keys.length - 1; i++) {
@@ -105,14 +119,25 @@ function applyRule(obj, field, replacement, preserve, depth = 0, maxDepth = 10)
105
119
  }
106
120
  const lastKey = keys[keys.length - 1];
107
121
  if (current[lastKey] !== undefined) {
108
- maskValue(current, lastKey, replacement, preserve);
122
+ maskValue(current, lastKey, replacement, preserve, valuePattern);
109
123
  }
110
124
  }
111
125
  /**
112
126
  * Masks or replaces a value at a specific key in an object.
113
127
  */
114
- function maskValue(obj, key, replacement, preserve) {
128
+ function maskValue(obj, key, replacement, preserve, valuePattern) {
115
129
  const value = obj[key];
130
+ // If valuePattern is specified, only mask if the value matches the pattern
131
+ if (valuePattern && typeof value === "string") {
132
+ if (!valuePattern.test(value)) {
133
+ return;
134
+ }
135
+ }
136
+ else if (valuePattern) {
137
+ // Skip non-string values if we're looking for a pattern match
138
+ // (Patterns typically only make sense for string/error messages)
139
+ return;
140
+ }
116
141
  if (replacement !== undefined) {
117
142
  obj[key] = replacement;
118
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseManipulationMiddleware.js","sources":["../../../../../src/middleware/built-in/ResponseManipulationMiddleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResponseManipulationMiddleware.js","sources":["../../../../../src/middleware/built-in/ResponseManipulationMiddleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -345,7 +345,9 @@ interface PaginationInfo {
345
345
  */
346
346
  interface ResponseManipulationRule {
347
347
  /** Field name (dot notation) or RegExp pattern for matching keys */
348
- field: string | RegExp;
348
+ field?: string | RegExp;
349
+ /** RegExp pattern for matching field values */
350
+ valuePattern?: RegExp;
349
351
  /** Mask string (e.g., "****") or replacement value */
350
352
  replacement?: any;
351
353
  /** Number of characters to preserve (at the beginning) for string masking */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xypriss",
3
- "version": "9.3.70",
3
+ "version": "9.3.71",
4
4
  "description": "XyPriss is a lightweight, TypeScript-first, open-source Node.js web framework crafted for developers seeking a familiar Express-like API without Express dependencies.",
5
5
  "author": {
6
6
  "name": "Nehonix",