@memberjunction/global 2.63.1 → 2.65.0
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/util/PatternUtils.d.ts +65 -0
- package/dist/util/PatternUtils.d.ts.map +1 -0
- package/dist/util/PatternUtils.js +118 -0
- package/dist/util/PatternUtils.js.map +1 -0
- package/package.json +1 -1
- package/readme.md +87 -1
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * from './ObjectCache';
|
|
|
5
5
|
export * from './BaseSingleton';
|
|
6
6
|
export * from './DeepDiff';
|
|
7
7
|
export * from './ClassUtils';
|
|
8
|
+
export * from './util/PatternUtils';
|
|
8
9
|
export * from './Global';
|
|
9
10
|
export * from './RegisterClass';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,7 @@ __exportStar(require("./ObjectCache"), exports);
|
|
|
25
25
|
__exportStar(require("./BaseSingleton"), exports);
|
|
26
26
|
__exportStar(require("./DeepDiff"), exports);
|
|
27
27
|
__exportStar(require("./ClassUtils"), exports);
|
|
28
|
+
__exportStar(require("./util/PatternUtils"), exports);
|
|
28
29
|
// Export the main classes
|
|
29
30
|
__exportStar(require("./Global"), exports);
|
|
30
31
|
__exportStar(require("./RegisterClass"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,+CAAgE;AAAvD,4GAAA,YAAY,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AACxC,8CAA2B;AAC3B,yCAAsB;AACtB,gDAA6B;AAC7B,kDAA+B;AAC/B,6CAA0B;AAC1B,+CAA4B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,+CAAgE;AAAvD,4GAAA,YAAY,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AACxC,8CAA2B;AAC3B,yCAAsB;AACtB,gDAA6B;AAC7B,kDAA+B;AAC/B,6CAA0B;AAC1B,+CAA4B;AAC5B,sDAAoC;AAEpC,0BAA0B;AAC1B,2CAAwB;AACxB,kDAA+B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Pattern matching utility functions for MemberJunction
|
|
3
|
+
*
|
|
4
|
+
* This module provides functions for converting string patterns to RegExp objects,
|
|
5
|
+
* supporting both simple wildcard patterns and full regex syntax.
|
|
6
|
+
* Works in both Node.js and browser environments.
|
|
7
|
+
*
|
|
8
|
+
* @module @memberjunction/global/PatternUtils
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Converts a string pattern to a RegExp object.
|
|
12
|
+
* Supports both regex strings and simple wildcard patterns.
|
|
13
|
+
*
|
|
14
|
+
* @param pattern - The pattern string to convert
|
|
15
|
+
* @returns A RegExp object
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* // Regex pattern (starts with /)
|
|
19
|
+
* parsePattern("/spCreate.*Run/i") // Returns: /spCreate.*Run/i
|
|
20
|
+
*
|
|
21
|
+
* // Simple wildcard patterns
|
|
22
|
+
* parsePattern("*AIPrompt*") // Returns: /AIPrompt/i
|
|
23
|
+
* parsePattern("spCreate*") // Returns: /^spCreate/i
|
|
24
|
+
* parsePattern("*Run") // Returns: /Run$/i
|
|
25
|
+
* parsePattern("exact") // Returns: /^exact$/i
|
|
26
|
+
*/
|
|
27
|
+
export declare function parsePattern(pattern: string): RegExp;
|
|
28
|
+
/**
|
|
29
|
+
* Converts an array of string patterns to RegExp objects
|
|
30
|
+
*
|
|
31
|
+
* @param patterns - Array of pattern strings
|
|
32
|
+
* @returns Array of RegExp objects
|
|
33
|
+
*/
|
|
34
|
+
export declare function parsePatterns(patterns: string[]): RegExp[];
|
|
35
|
+
/**
|
|
36
|
+
* Converts a pattern (string or RegExp) to a RegExp object
|
|
37
|
+
*
|
|
38
|
+
* @param pattern - String pattern or RegExp object
|
|
39
|
+
* @returns RegExp object
|
|
40
|
+
*/
|
|
41
|
+
export declare function ensureRegExp(pattern: string | RegExp): RegExp;
|
|
42
|
+
/**
|
|
43
|
+
* Converts an array of patterns (strings or RegExps) to RegExp objects
|
|
44
|
+
*
|
|
45
|
+
* @param patterns - Array of string patterns or RegExp objects
|
|
46
|
+
* @returns Array of RegExp objects
|
|
47
|
+
*/
|
|
48
|
+
export declare function ensureRegExps(patterns: (string | RegExp)[]): RegExp[];
|
|
49
|
+
/**
|
|
50
|
+
* Tests if a string matches any of the provided patterns
|
|
51
|
+
*
|
|
52
|
+
* @param text - The text to test
|
|
53
|
+
* @param patterns - Array of patterns (strings or RegExps)
|
|
54
|
+
* @returns true if any pattern matches
|
|
55
|
+
*/
|
|
56
|
+
export declare function matchesAnyPattern(text: string, patterns: (string | RegExp)[]): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Tests if a string matches all of the provided patterns
|
|
59
|
+
*
|
|
60
|
+
* @param text - The text to test
|
|
61
|
+
* @param patterns - Array of patterns (strings or RegExps)
|
|
62
|
+
* @returns true if all patterns match
|
|
63
|
+
*/
|
|
64
|
+
export declare function matchesAllPatterns(text: string, patterns: (string | RegExp)[]): boolean;
|
|
65
|
+
//# sourceMappingURL=PatternUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternUtils.d.ts","sourceRoot":"","sources":["../../src/util/PatternUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsCpD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAGtF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAGvF"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Pattern matching utility functions for MemberJunction
|
|
4
|
+
*
|
|
5
|
+
* This module provides functions for converting string patterns to RegExp objects,
|
|
6
|
+
* supporting both simple wildcard patterns and full regex syntax.
|
|
7
|
+
* Works in both Node.js and browser environments.
|
|
8
|
+
*
|
|
9
|
+
* @module @memberjunction/global/PatternUtils
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.matchesAllPatterns = exports.matchesAnyPattern = exports.ensureRegExps = exports.ensureRegExp = exports.parsePatterns = exports.parsePattern = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* Converts a string pattern to a RegExp object.
|
|
15
|
+
* Supports both regex strings and simple wildcard patterns.
|
|
16
|
+
*
|
|
17
|
+
* @param pattern - The pattern string to convert
|
|
18
|
+
* @returns A RegExp object
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* // Regex pattern (starts with /)
|
|
22
|
+
* parsePattern("/spCreate.*Run/i") // Returns: /spCreate.*Run/i
|
|
23
|
+
*
|
|
24
|
+
* // Simple wildcard patterns
|
|
25
|
+
* parsePattern("*AIPrompt*") // Returns: /AIPrompt/i
|
|
26
|
+
* parsePattern("spCreate*") // Returns: /^spCreate/i
|
|
27
|
+
* parsePattern("*Run") // Returns: /Run$/i
|
|
28
|
+
* parsePattern("exact") // Returns: /^exact$/i
|
|
29
|
+
*/
|
|
30
|
+
function parsePattern(pattern) {
|
|
31
|
+
// Check if it's already a regex pattern (starts with /)
|
|
32
|
+
if (pattern.startsWith('/')) {
|
|
33
|
+
// Extract pattern and flags from regex string like "/pattern/flags"
|
|
34
|
+
const lastSlash = pattern.lastIndexOf('/');
|
|
35
|
+
if (lastSlash > 0) {
|
|
36
|
+
const regexPattern = pattern.slice(1, lastSlash);
|
|
37
|
+
const flags = pattern.slice(lastSlash + 1);
|
|
38
|
+
return new RegExp(regexPattern, flags);
|
|
39
|
+
}
|
|
40
|
+
// If no closing slash, treat as literal pattern
|
|
41
|
+
return new RegExp(pattern.slice(1), 'i');
|
|
42
|
+
}
|
|
43
|
+
// Convert simple wildcard pattern to regex
|
|
44
|
+
// Escape special regex characters except for *
|
|
45
|
+
let regexPattern = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
|
|
46
|
+
// Handle wildcards
|
|
47
|
+
const hasLeadingWildcard = pattern.startsWith('*');
|
|
48
|
+
const hasTrailingWildcard = pattern.endsWith('*');
|
|
49
|
+
// Remove wildcards for processing
|
|
50
|
+
regexPattern = regexPattern.replace(/^\*/, '').replace(/\*$/, '');
|
|
51
|
+
// Replace internal wildcards with .*
|
|
52
|
+
regexPattern = regexPattern.replace(/\*/g, '.*');
|
|
53
|
+
// Add anchors based on wildcards
|
|
54
|
+
if (!hasLeadingWildcard) {
|
|
55
|
+
regexPattern = '^' + regexPattern;
|
|
56
|
+
}
|
|
57
|
+
if (!hasTrailingWildcard) {
|
|
58
|
+
regexPattern = regexPattern + '$';
|
|
59
|
+
}
|
|
60
|
+
// Simple patterns are case-insensitive by default
|
|
61
|
+
return new RegExp(regexPattern, 'i');
|
|
62
|
+
}
|
|
63
|
+
exports.parsePattern = parsePattern;
|
|
64
|
+
/**
|
|
65
|
+
* Converts an array of string patterns to RegExp objects
|
|
66
|
+
*
|
|
67
|
+
* @param patterns - Array of pattern strings
|
|
68
|
+
* @returns Array of RegExp objects
|
|
69
|
+
*/
|
|
70
|
+
function parsePatterns(patterns) {
|
|
71
|
+
return patterns.map(parsePattern);
|
|
72
|
+
}
|
|
73
|
+
exports.parsePatterns = parsePatterns;
|
|
74
|
+
/**
|
|
75
|
+
* Converts a pattern (string or RegExp) to a RegExp object
|
|
76
|
+
*
|
|
77
|
+
* @param pattern - String pattern or RegExp object
|
|
78
|
+
* @returns RegExp object
|
|
79
|
+
*/
|
|
80
|
+
function ensureRegExp(pattern) {
|
|
81
|
+
return pattern instanceof RegExp ? pattern : parsePattern(pattern);
|
|
82
|
+
}
|
|
83
|
+
exports.ensureRegExp = ensureRegExp;
|
|
84
|
+
/**
|
|
85
|
+
* Converts an array of patterns (strings or RegExps) to RegExp objects
|
|
86
|
+
*
|
|
87
|
+
* @param patterns - Array of string patterns or RegExp objects
|
|
88
|
+
* @returns Array of RegExp objects
|
|
89
|
+
*/
|
|
90
|
+
function ensureRegExps(patterns) {
|
|
91
|
+
return patterns.map(ensureRegExp);
|
|
92
|
+
}
|
|
93
|
+
exports.ensureRegExps = ensureRegExps;
|
|
94
|
+
/**
|
|
95
|
+
* Tests if a string matches any of the provided patterns
|
|
96
|
+
*
|
|
97
|
+
* @param text - The text to test
|
|
98
|
+
* @param patterns - Array of patterns (strings or RegExps)
|
|
99
|
+
* @returns true if any pattern matches
|
|
100
|
+
*/
|
|
101
|
+
function matchesAnyPattern(text, patterns) {
|
|
102
|
+
const regexps = ensureRegExps(patterns);
|
|
103
|
+
return regexps.some(pattern => pattern.test(text));
|
|
104
|
+
}
|
|
105
|
+
exports.matchesAnyPattern = matchesAnyPattern;
|
|
106
|
+
/**
|
|
107
|
+
* Tests if a string matches all of the provided patterns
|
|
108
|
+
*
|
|
109
|
+
* @param text - The text to test
|
|
110
|
+
* @param patterns - Array of patterns (strings or RegExps)
|
|
111
|
+
* @returns true if all patterns match
|
|
112
|
+
*/
|
|
113
|
+
function matchesAllPatterns(text, patterns) {
|
|
114
|
+
const regexps = ensureRegExps(patterns);
|
|
115
|
+
return regexps.every(pattern => pattern.test(text));
|
|
116
|
+
}
|
|
117
|
+
exports.matchesAllPatterns = matchesAllPatterns;
|
|
118
|
+
//# sourceMappingURL=PatternUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternUtils.js","sourceRoot":"","sources":["../../src/util/PatternUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,YAAY,CAAC,OAAe;IAC1C,wDAAwD;IACxD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,oEAAoE;QACpE,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAC3C,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,gDAAgD;QAChD,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,2CAA2C;IAC3C,+CAA+C;IAC/C,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAEjE,mBAAmB;IACnB,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAElD,kCAAkC;IAClC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAElE,qCAAqC;IACrC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEjD,iCAAiC;IACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,YAAY,GAAG,GAAG,GAAG,YAAY,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,YAAY,GAAG,YAAY,GAAG,GAAG,CAAC;IACpC,CAAC;IAED,kDAAkD;IAClD,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC;AAtCD,oCAsCC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,QAAkB;IAC9C,OAAO,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAFD,sCAEC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,OAAwB;IACnD,OAAO,OAAO,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC;AAFD,oCAEC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,QAA6B;IACzD,OAAO,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAFD,sCAEC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,IAAY,EAAE,QAA6B;IAC3E,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,CAAC;AAHD,8CAGC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,IAAY,EAAE,QAA6B;IAC5E,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAHD,gDAGC"}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -18,7 +18,7 @@ The `@memberjunction/global` library serves as the foundation for cross-componen
|
|
|
18
18
|
- **Object Caching** - In-memory object cache for application lifetime
|
|
19
19
|
- **Class Reflection Utilities** - Runtime class hierarchy inspection and analysis
|
|
20
20
|
- **Deep Diff Engine** - Comprehensive object comparison and change tracking
|
|
21
|
-
- **Utility Functions** - Common string manipulation, JSON parsing (including recursive nested JSON parsing), and formatting utilities
|
|
21
|
+
- **Utility Functions** - Common string manipulation, JSON parsing (including recursive nested JSON parsing), pattern matching, and formatting utilities
|
|
22
22
|
|
|
23
23
|
## Core Components
|
|
24
24
|
|
|
@@ -359,6 +359,92 @@ const html = ConvertMarkdownStringToHtmlList('Unordered', '- Item 1\n- Item 2\n-
|
|
|
359
359
|
// Returns: <ul><li>Item 1</li><li>Item 2</li><li>Item 3</li></ul>
|
|
360
360
|
```
|
|
361
361
|
|
|
362
|
+
### Pattern Matching Utilities
|
|
363
|
+
|
|
364
|
+
Convert string patterns to RegExp objects with support for simple wildcards and full regex syntax:
|
|
365
|
+
|
|
366
|
+
```typescript
|
|
367
|
+
import {
|
|
368
|
+
parsePattern,
|
|
369
|
+
parsePatterns,
|
|
370
|
+
ensureRegExp,
|
|
371
|
+
ensureRegExps,
|
|
372
|
+
matchesAnyPattern,
|
|
373
|
+
matchesAllPatterns
|
|
374
|
+
} from '@memberjunction/global';
|
|
375
|
+
|
|
376
|
+
// Parse simple wildcard patterns
|
|
377
|
+
parsePattern('*AIPrompt*'); // Returns: /AIPrompt/i (case-insensitive)
|
|
378
|
+
parsePattern('spCreate*'); // Returns: /^spCreate/i
|
|
379
|
+
parsePattern('*Run'); // Returns: /Run$/i
|
|
380
|
+
parsePattern('exact'); // Returns: /^exact$/i
|
|
381
|
+
|
|
382
|
+
// Parse regex string patterns
|
|
383
|
+
parsePattern('/spCreate.*Run/i'); // Returns: /spCreate.*Run/i
|
|
384
|
+
parsePattern('/^SELECT.*FROM.*vw/'); // Returns: /^SELECT.*FROM.*vw/
|
|
385
|
+
parsePattern('/INSERT INTO (Users|Roles)/i'); // Returns: /INSERT INTO (Users|Roles)/i
|
|
386
|
+
|
|
387
|
+
// Parse multiple patterns at once
|
|
388
|
+
const patterns = parsePatterns([
|
|
389
|
+
'*User*', // Simple wildcard
|
|
390
|
+
'/^EXEC sp_/i', // Regex string
|
|
391
|
+
'*EntityFieldValue*' // Simple wildcard
|
|
392
|
+
]);
|
|
393
|
+
|
|
394
|
+
// Convert mixed string/RegExp arrays
|
|
395
|
+
const mixed = ['*User*', /^Admin/i, '/DELETE.*WHERE/i'];
|
|
396
|
+
const regexps = ensureRegExps(mixed); // All converted to RegExp objects
|
|
397
|
+
|
|
398
|
+
// Test if text matches any pattern
|
|
399
|
+
const sql = 'SELECT * FROM Users WHERE Active = 1';
|
|
400
|
+
matchesAnyPattern(sql, ['*User*', '*Role*', '/^UPDATE/i']); // true
|
|
401
|
+
|
|
402
|
+
// Test if text matches all patterns
|
|
403
|
+
const filename = 'UserRoleManager.ts';
|
|
404
|
+
matchesAllPatterns(filename, ['*User*', '*Role*', '*.ts']); // true
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
#### Pattern Syntax
|
|
408
|
+
|
|
409
|
+
**Simple Wildcard Patterns** (Recommended for most users):
|
|
410
|
+
- `*` acts as a wildcard matching any characters
|
|
411
|
+
- Case-insensitive by default
|
|
412
|
+
- Examples:
|
|
413
|
+
- `*pattern*` - Contains "pattern" anywhere
|
|
414
|
+
- `pattern*` - Starts with "pattern"
|
|
415
|
+
- `*pattern` - Ends with "pattern"
|
|
416
|
+
- `pattern` - Exact match only
|
|
417
|
+
|
|
418
|
+
**Regex String Patterns** (For advanced users):
|
|
419
|
+
- Must start with `/` to be recognized as regex
|
|
420
|
+
- Optionally end with flags like `/pattern/i`
|
|
421
|
+
- Full JavaScript regex syntax supported
|
|
422
|
+
- Examples:
|
|
423
|
+
- `/^start/i` - Case-insensitive start match
|
|
424
|
+
- `/end$/` - Case-sensitive end match
|
|
425
|
+
- `/(option1|option2)/` - Match alternatives
|
|
426
|
+
|
|
427
|
+
#### Common Use Cases
|
|
428
|
+
|
|
429
|
+
```typescript
|
|
430
|
+
// SQL statement filtering
|
|
431
|
+
const sqlFilters = [
|
|
432
|
+
'*AIPrompt*', // Exclude AI prompt operations
|
|
433
|
+
'/^EXEC sp_/i', // Exclude system stored procedures
|
|
434
|
+
'*EntityFieldValue*' // Exclude field value operations
|
|
435
|
+
];
|
|
436
|
+
|
|
437
|
+
const shouldLog = !matchesAnyPattern(sqlStatement, sqlFilters);
|
|
438
|
+
|
|
439
|
+
// File pattern matching
|
|
440
|
+
const includePatterns = ['*.ts', '*.js', '/^(?!test)/']; // TS/JS files not starting with "test"
|
|
441
|
+
const shouldProcess = matchesAnyPattern(filename, includePatterns);
|
|
442
|
+
|
|
443
|
+
// User input validation
|
|
444
|
+
const allowedFormats = ['*@*.com', '*@*.org', '*@company.net'];
|
|
445
|
+
const isValidEmail = matchesAnyPattern(email, allowedFormats);
|
|
446
|
+
```
|
|
447
|
+
|
|
362
448
|
### Global Object Store
|
|
363
449
|
|
|
364
450
|
Access the global object store for cross-module state sharing:
|