From e96216170127983e8a64dc48cec39639566f4265 Mon Sep 17 00:00:00 2001 From: mrmlnc Date: Mon, 11 Sep 2023 10:48:09 +0300 Subject: [PATCH] fix: keep escaping after brace expansion --- src/utils/pattern.spec.ts | 8 ++++++++ src/utils/pattern.ts | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/utils/pattern.spec.ts b/src/utils/pattern.spec.ts index 02cde456..97c2d802 100644 --- a/src/utils/pattern.spec.ts +++ b/src/utils/pattern.spec.ts @@ -431,6 +431,14 @@ describe('Utils → Pattern', () => { assert.deepStrictEqual(actual, expected); }); + + it('should keep escaping after expansion', () => { + const expected = ['foo@(\\\\)/**/*.a', 'foo@(\\\\)/**/*.b']; + + const actual = util.expandBraceExpansion('foo@(\\\\)/**/{*.a,*.b}'); + + assert.deepStrictEqual(actual, expected); + }); }); describe('.getPatternParts', () => { diff --git a/src/utils/pattern.ts b/src/utils/pattern.ts index ffa6df43..9d789e79 100644 --- a/src/utils/pattern.ts +++ b/src/utils/pattern.ts @@ -156,7 +156,7 @@ export function expandPatternsWithBraceExpansion(patterns: Pattern[]): Pattern[] } export function expandBraceExpansion(pattern: Pattern): Pattern[] { - const patterns = micromatch.braces(pattern, { expand: true, nodupes: true }); + const patterns = micromatch.braces(pattern, { expand: true, nodupes: true, keepEscaping: true }); /** * Sort the patterns by length so that the same depth patterns are processed side by side.