????
Current Path : C:/inetpub/vhost/sdoc.nextform.vn/api/bin/.playwright/package/lib/utils/ |
Current File : C:/inetpub/vhost/sdoc.nextform.vn/api/bin/.playwright/package/lib/utils/glob.js |
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.globToRegex = globToRegex; /** * Copyright (c) Microsoft Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ const escapeGlobChars = new Set(['/', '$', '^', '+', '.', '(', ')', '=', '!', '|']); function globToRegex(glob) { const tokens = ['^']; let inGroup; for (let i = 0; i < glob.length; ++i) { const c = glob[i]; if (escapeGlobChars.has(c)) { tokens.push('\\' + c); continue; } if (c === '*') { const beforeDeep = glob[i - 1]; let starCount = 1; while (glob[i + 1] === '*') { starCount++; i++; } const afterDeep = glob[i + 1]; const isDeep = starCount > 1 && (beforeDeep === '/' || beforeDeep === undefined) && (afterDeep === '/' || afterDeep === undefined); if (isDeep) { tokens.push('((?:[^/]*(?:\/|$))*)'); i++; } else { tokens.push('([^/]*)'); } continue; } switch (c) { case '?': tokens.push('.'); break; case '{': inGroup = true; tokens.push('('); break; case '}': inGroup = false; tokens.push(')'); break; case ',': if (inGroup) { tokens.push('|'); break; } tokens.push('\\' + c); break; default: tokens.push(c); } } tokens.push('$'); return new RegExp(tokens.join('')); }