@depup/vitest__utils 4.1.0-depup.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/LICENSE +21 -0
- package/README.md +31 -0
- package/changes.json +10 -0
- package/diff.d.ts +1 -0
- package/dist/chunk-pathe.M-eThtNZ.js +156 -0
- package/dist/constants.d.ts +21 -0
- package/dist/constants.js +49 -0
- package/dist/diff.d.ts +93 -0
- package/dist/diff.js +2201 -0
- package/dist/display.d.ts +30 -0
- package/dist/display.js +775 -0
- package/dist/error.d.ts +8 -0
- package/dist/error.js +41 -0
- package/dist/helpers.d.ts +76 -0
- package/dist/helpers.js +337 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +1 -0
- package/dist/offset.d.ts +5 -0
- package/dist/offset.js +32 -0
- package/dist/resolver.d.ts +7 -0
- package/dist/resolver.js +70 -0
- package/dist/serialize.d.ts +3 -0
- package/dist/serialize.js +118 -0
- package/dist/source-map/node.d.ts +6 -0
- package/dist/source-map/node.js +23 -0
- package/dist/source-map.d.ts +55 -0
- package/dist/source-map.js +488 -0
- package/dist/timers.d.ts +33 -0
- package/dist/timers.js +49 -0
- package/dist/types.d-BCElaP-c.d.ts +53 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.js +1 -0
- package/error.d.ts +1 -0
- package/helpers.d.ts +1 -0
- package/package.json +123 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021-Present VoidZero Inc. and Vitest contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# @depup/vitest__utils
|
|
2
|
+
|
|
3
|
+
> Dependency-bumped version of [@vitest/utils](https://www.npmjs.com/package/@vitest/utils)
|
|
4
|
+
|
|
5
|
+
Generated by [DepUp](https://github.com/depup/npm) -- all production
|
|
6
|
+
dependencies bumped to latest versions.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install @depup/vitest__utils
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Field | Value |
|
|
15
|
+
|-------|-------|
|
|
16
|
+
| Original | [@vitest/utils](https://www.npmjs.com/package/@vitest/utils) @ 4.1.0 |
|
|
17
|
+
| Processed | 2026-03-17 |
|
|
18
|
+
| Smoke test | passed |
|
|
19
|
+
| Deps updated | 1 |
|
|
20
|
+
|
|
21
|
+
## Dependency Changes
|
|
22
|
+
|
|
23
|
+
| Dependency | From | To |
|
|
24
|
+
|------------|------|-----|
|
|
25
|
+
| tinyrainbow | ^3.0.3 | ^3.1.0 |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
Source: https://github.com/depup/npm | Original: https://www.npmjs.com/package/@vitest/utils
|
|
30
|
+
|
|
31
|
+
License inherited from the original package.
|
package/changes.json
ADDED
package/diff.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/diff.js'
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
|
|
2
|
+
function normalizeWindowsPath(input = "") {
|
|
3
|
+
if (!input) {
|
|
4
|
+
return input;
|
|
5
|
+
}
|
|
6
|
+
return input.replace(/\\/g, "/").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const _UNC_REGEX = /^[/\\]{2}/;
|
|
10
|
+
const _IS_ABSOLUTE_RE = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;
|
|
11
|
+
const _DRIVE_LETTER_RE = /^[A-Za-z]:$/;
|
|
12
|
+
const normalize = function(path) {
|
|
13
|
+
if (path.length === 0) {
|
|
14
|
+
return ".";
|
|
15
|
+
}
|
|
16
|
+
path = normalizeWindowsPath(path);
|
|
17
|
+
const isUNCPath = path.match(_UNC_REGEX);
|
|
18
|
+
const isPathAbsolute = isAbsolute(path);
|
|
19
|
+
const trailingSeparator = path[path.length - 1] === "/";
|
|
20
|
+
path = normalizeString(path, !isPathAbsolute);
|
|
21
|
+
if (path.length === 0) {
|
|
22
|
+
if (isPathAbsolute) {
|
|
23
|
+
return "/";
|
|
24
|
+
}
|
|
25
|
+
return trailingSeparator ? "./" : ".";
|
|
26
|
+
}
|
|
27
|
+
if (trailingSeparator) {
|
|
28
|
+
path += "/";
|
|
29
|
+
}
|
|
30
|
+
if (_DRIVE_LETTER_RE.test(path)) {
|
|
31
|
+
path += "/";
|
|
32
|
+
}
|
|
33
|
+
if (isUNCPath) {
|
|
34
|
+
if (!isPathAbsolute) {
|
|
35
|
+
return `//./${path}`;
|
|
36
|
+
}
|
|
37
|
+
return `//${path}`;
|
|
38
|
+
}
|
|
39
|
+
return isPathAbsolute && !isAbsolute(path) ? `/${path}` : path;
|
|
40
|
+
};
|
|
41
|
+
const join = function(...segments) {
|
|
42
|
+
let path = "";
|
|
43
|
+
for (const seg of segments) {
|
|
44
|
+
if (!seg) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (path.length > 0) {
|
|
48
|
+
const pathTrailing = path[path.length - 1] === "/";
|
|
49
|
+
const segLeading = seg[0] === "/";
|
|
50
|
+
const both = pathTrailing && segLeading;
|
|
51
|
+
if (both) {
|
|
52
|
+
path += seg.slice(1);
|
|
53
|
+
} else {
|
|
54
|
+
path += pathTrailing || segLeading ? seg : `/${seg}`;
|
|
55
|
+
}
|
|
56
|
+
} else {
|
|
57
|
+
path += seg;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return normalize(path);
|
|
61
|
+
};
|
|
62
|
+
function cwd() {
|
|
63
|
+
if (typeof process !== "undefined" && typeof process.cwd === "function") {
|
|
64
|
+
return process.cwd().replace(/\\/g, "/");
|
|
65
|
+
}
|
|
66
|
+
return "/";
|
|
67
|
+
}
|
|
68
|
+
const resolve = function(...arguments_) {
|
|
69
|
+
arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));
|
|
70
|
+
let resolvedPath = "";
|
|
71
|
+
let resolvedAbsolute = false;
|
|
72
|
+
for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {
|
|
73
|
+
const path = index >= 0 ? arguments_[index] : cwd();
|
|
74
|
+
if (!path || path.length === 0) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
resolvedPath = `${path}/${resolvedPath}`;
|
|
78
|
+
resolvedAbsolute = isAbsolute(path);
|
|
79
|
+
}
|
|
80
|
+
resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);
|
|
81
|
+
if (resolvedAbsolute && !isAbsolute(resolvedPath)) {
|
|
82
|
+
return `/${resolvedPath}`;
|
|
83
|
+
}
|
|
84
|
+
return resolvedPath.length > 0 ? resolvedPath : ".";
|
|
85
|
+
};
|
|
86
|
+
function normalizeString(path, allowAboveRoot) {
|
|
87
|
+
let res = "";
|
|
88
|
+
let lastSegmentLength = 0;
|
|
89
|
+
let lastSlash = -1;
|
|
90
|
+
let dots = 0;
|
|
91
|
+
let char = null;
|
|
92
|
+
for (let index = 0; index <= path.length; ++index) {
|
|
93
|
+
if (index < path.length) {
|
|
94
|
+
char = path[index];
|
|
95
|
+
} else if (char === "/") {
|
|
96
|
+
break;
|
|
97
|
+
} else {
|
|
98
|
+
char = "/";
|
|
99
|
+
}
|
|
100
|
+
if (char === "/") {
|
|
101
|
+
if (lastSlash === index - 1 || dots === 1) ; else if (dots === 2) {
|
|
102
|
+
if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
|
|
103
|
+
if (res.length > 2) {
|
|
104
|
+
const lastSlashIndex = res.lastIndexOf("/");
|
|
105
|
+
if (lastSlashIndex === -1) {
|
|
106
|
+
res = "";
|
|
107
|
+
lastSegmentLength = 0;
|
|
108
|
+
} else {
|
|
109
|
+
res = res.slice(0, lastSlashIndex);
|
|
110
|
+
lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
|
|
111
|
+
}
|
|
112
|
+
lastSlash = index;
|
|
113
|
+
dots = 0;
|
|
114
|
+
continue;
|
|
115
|
+
} else if (res.length > 0) {
|
|
116
|
+
res = "";
|
|
117
|
+
lastSegmentLength = 0;
|
|
118
|
+
lastSlash = index;
|
|
119
|
+
dots = 0;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (allowAboveRoot) {
|
|
124
|
+
res += res.length > 0 ? "/.." : "..";
|
|
125
|
+
lastSegmentLength = 2;
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
if (res.length > 0) {
|
|
129
|
+
res += `/${path.slice(lastSlash + 1, index)}`;
|
|
130
|
+
} else {
|
|
131
|
+
res = path.slice(lastSlash + 1, index);
|
|
132
|
+
}
|
|
133
|
+
lastSegmentLength = index - lastSlash - 1;
|
|
134
|
+
}
|
|
135
|
+
lastSlash = index;
|
|
136
|
+
dots = 0;
|
|
137
|
+
} else if (char === "." && dots !== -1) {
|
|
138
|
+
++dots;
|
|
139
|
+
} else {
|
|
140
|
+
dots = -1;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return res;
|
|
144
|
+
}
|
|
145
|
+
const isAbsolute = function(p) {
|
|
146
|
+
return _IS_ABSOLUTE_RE.test(p);
|
|
147
|
+
};
|
|
148
|
+
const dirname = function(p) {
|
|
149
|
+
const segments = normalizeWindowsPath(p).replace(/\/$/, "").split("/").slice(0, -1);
|
|
150
|
+
if (segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0])) {
|
|
151
|
+
segments[0] += "/";
|
|
152
|
+
}
|
|
153
|
+
return segments.join("/") || (isAbsolute(p) ? "/" : ".");
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
export { dirname as d, join as j, resolve as r };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare const KNOWN_ASSET_TYPES: string[];
|
|
2
|
+
declare const KNOWN_ASSET_RE: RegExp;
|
|
3
|
+
declare const CSS_LANGS_RE: RegExp;
|
|
4
|
+
/**
|
|
5
|
+
* Prefix for resolved Ids that are not valid browser import specifiers
|
|
6
|
+
*/
|
|
7
|
+
declare const VALID_ID_PREFIX = "/@id/";
|
|
8
|
+
/**
|
|
9
|
+
* Plugins that use 'virtual modules' (e.g. for helper functions), prefix the
|
|
10
|
+
* module ID with `\0`, a convention from the rollup ecosystem.
|
|
11
|
+
* This prevents other plugins from trying to process the id (like node resolution),
|
|
12
|
+
* and core features like sourcemaps can use this info to differentiate between
|
|
13
|
+
* virtual modules and regular files.
|
|
14
|
+
* `\0` is not a permitted char in import URLs so we have to replace them during
|
|
15
|
+
* import analysis. The id will be decoded back before entering the plugins pipeline.
|
|
16
|
+
* These encoded virtual ids are also prefixed by the VALID_ID_PREFIX, so virtual
|
|
17
|
+
* modules in the browser end up encoded as `/@id/__x00__{id}`
|
|
18
|
+
*/
|
|
19
|
+
declare const NULL_BYTE_PLACEHOLDER = "__x00__";
|
|
20
|
+
|
|
21
|
+
export { CSS_LANGS_RE, KNOWN_ASSET_RE, KNOWN_ASSET_TYPES, NULL_BYTE_PLACEHOLDER, VALID_ID_PREFIX };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// TODO: this is all copy pasted from Vite - can they expose a module that exports only constants?
|
|
2
|
+
const KNOWN_ASSET_TYPES = [
|
|
3
|
+
"apng",
|
|
4
|
+
"bmp",
|
|
5
|
+
"png",
|
|
6
|
+
"jpe?g",
|
|
7
|
+
"jfif",
|
|
8
|
+
"pjpeg",
|
|
9
|
+
"pjp",
|
|
10
|
+
"gif",
|
|
11
|
+
"svg",
|
|
12
|
+
"ico",
|
|
13
|
+
"webp",
|
|
14
|
+
"avif",
|
|
15
|
+
"mp4",
|
|
16
|
+
"webm",
|
|
17
|
+
"ogg",
|
|
18
|
+
"mp3",
|
|
19
|
+
"wav",
|
|
20
|
+
"flac",
|
|
21
|
+
"aac",
|
|
22
|
+
"woff2?",
|
|
23
|
+
"eot",
|
|
24
|
+
"ttf",
|
|
25
|
+
"otf",
|
|
26
|
+
"webmanifest",
|
|
27
|
+
"pdf",
|
|
28
|
+
"txt"
|
|
29
|
+
];
|
|
30
|
+
const KNOWN_ASSET_RE = new RegExp(`\\.(${KNOWN_ASSET_TYPES.join("|")})$`);
|
|
31
|
+
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
|
|
32
|
+
/**
|
|
33
|
+
* Prefix for resolved Ids that are not valid browser import specifiers
|
|
34
|
+
*/
|
|
35
|
+
const VALID_ID_PREFIX = `/@id/`;
|
|
36
|
+
/**
|
|
37
|
+
* Plugins that use 'virtual modules' (e.g. for helper functions), prefix the
|
|
38
|
+
* module ID with `\0`, a convention from the rollup ecosystem.
|
|
39
|
+
* This prevents other plugins from trying to process the id (like node resolution),
|
|
40
|
+
* and core features like sourcemaps can use this info to differentiate between
|
|
41
|
+
* virtual modules and regular files.
|
|
42
|
+
* `\0` is not a permitted char in import URLs so we have to replace them during
|
|
43
|
+
* import analysis. The id will be decoded back before entering the plugins pipeline.
|
|
44
|
+
* These encoded virtual ids are also prefixed by the VALID_ID_PREFIX, so virtual
|
|
45
|
+
* modules in the browser end up encoded as `/@id/__x00__{id}`
|
|
46
|
+
*/
|
|
47
|
+
const NULL_BYTE_PLACEHOLDER = `__x00__`;
|
|
48
|
+
|
|
49
|
+
export { CSS_LANGS_RE, KNOWN_ASSET_RE, KNOWN_ASSET_TYPES, NULL_BYTE_PLACEHOLDER, VALID_ID_PREFIX };
|
package/dist/diff.d.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { D as DiffOptions } from './types.d-BCElaP-c.js';
|
|
2
|
+
export { a as DiffOptionsColor, S as SerializedDiffOptions } from './types.d-BCElaP-c.js';
|
|
3
|
+
import '@vitest/pretty-format';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Diff Match and Patch
|
|
7
|
+
* Copyright 2018 The diff-match-patch Authors.
|
|
8
|
+
* https://github.com/google/diff-match-patch
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* @fileoverview Computes the difference between two texts to create a patch.
|
|
24
|
+
* Applies the patch onto another text, allowing for errors.
|
|
25
|
+
* @author fraser@google.com (Neil Fraser)
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* CHANGES by pedrottimark to diff_match_patch_uncompressed.ts file:
|
|
29
|
+
*
|
|
30
|
+
* 1. Delete anything not needed to use diff_cleanupSemantic method
|
|
31
|
+
* 2. Convert from prototype properties to var declarations
|
|
32
|
+
* 3. Convert Diff to class from constructor and prototype
|
|
33
|
+
* 4. Add type annotations for arguments and return values
|
|
34
|
+
* 5. Add exports
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* The data structure representing a diff is an array of tuples:
|
|
38
|
+
* [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]
|
|
39
|
+
* which means: delete 'Hello', add 'Goodbye' and keep ' world.'
|
|
40
|
+
*/
|
|
41
|
+
declare const DIFF_DELETE = -1;
|
|
42
|
+
declare const DIFF_INSERT = 1;
|
|
43
|
+
declare const DIFF_EQUAL = 0;
|
|
44
|
+
/**
|
|
45
|
+
* Class representing one diff tuple.
|
|
46
|
+
* Attempts to look like a two-element array (which is what this used to be).
|
|
47
|
+
* @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.
|
|
48
|
+
* @param {string} text Text to be deleted, inserted, or retained.
|
|
49
|
+
* @constructor
|
|
50
|
+
*/
|
|
51
|
+
declare class Diff {
|
|
52
|
+
0: number;
|
|
53
|
+
1: string;
|
|
54
|
+
constructor(op: number, text: string);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
59
|
+
*
|
|
60
|
+
* This source code is licensed under the MIT license found in the
|
|
61
|
+
* LICENSE file in the root directory of this source tree.
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
declare function diffLinesUnified(aLines: Array<string>, bLines: Array<string>, options?: DiffOptions): string;
|
|
65
|
+
declare function diffLinesUnified2(aLinesDisplay: Array<string>, bLinesDisplay: Array<string>, aLinesCompare: Array<string>, bLinesCompare: Array<string>, options?: DiffOptions): string;
|
|
66
|
+
declare function diffLinesRaw(aLines: Array<string>, bLines: Array<string>, options?: DiffOptions): [Array<Diff>, boolean];
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
70
|
+
*
|
|
71
|
+
* This source code is licensed under the MIT license found in the
|
|
72
|
+
* LICENSE file in the root directory of this source tree.
|
|
73
|
+
*/
|
|
74
|
+
|
|
75
|
+
declare function diffStringsUnified(a: string, b: string, options?: DiffOptions): string;
|
|
76
|
+
declare function diffStringsRaw(a: string, b: string, cleanup: boolean, options?: DiffOptions): [Array<Diff>, boolean];
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @param a Expected value
|
|
80
|
+
* @param b Received value
|
|
81
|
+
* @param options Diff options
|
|
82
|
+
* @returns {string | null} a string diff
|
|
83
|
+
*/
|
|
84
|
+
declare function diff(a: any, b: any, options?: DiffOptions): string | undefined;
|
|
85
|
+
declare function printDiffOrStringify(received: unknown, expected: unknown, options?: DiffOptions): string | undefined;
|
|
86
|
+
declare function replaceAsymmetricMatcher(actual: any, expected: any, actualReplaced?: WeakSet<WeakKey>, expectedReplaced?: WeakSet<WeakKey>): {
|
|
87
|
+
replacedActual: any;
|
|
88
|
+
replacedExpected: any;
|
|
89
|
+
};
|
|
90
|
+
type PrintLabel = (string: string) => string;
|
|
91
|
+
declare function getLabelPrinter(...strings: Array<string>): PrintLabel;
|
|
92
|
+
|
|
93
|
+
export { DIFF_DELETE, DIFF_EQUAL, DIFF_INSERT, Diff, DiffOptions, diff, diffLinesRaw, diffLinesUnified, diffLinesUnified2, diffStringsRaw, diffStringsUnified, getLabelPrinter, printDiffOrStringify, replaceAsymmetricMatcher };
|