Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement →
Sign In

@nasriya/overwatch

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nasriya/overwatch - npm Package Compare versions

Comparing version
1.0.5
to
1.0.6
+70
-38
dist/cjs/utils/utils.js

@@ -21,47 +21,79 @@ "use strict";

let inGroup = false;
let escaping = false;
for (let i = 0; i < glob.length; i++) {
const char = glob[i];
if ('^$+?.()=!|'.includes(char)) {
// Handle escaped characters (e.g., \*, \?, \{, etc.)
if (escaping) {
re += '\\' + char;
escaping = false;
continue;
}
else if (char === '*') {
const prev = glob[i - 1];
let starCount = 1;
while (glob[i + 1] === '*') {
i++;
starCount++;
if (char === '\\') {
escaping = true;
continue;
}
switch (char) {
case '/':
re += '\\/';
break;
case '.':
case '+':
case '^':
case '$':
case '!':
case '=':
case '|':
case '(':
case ')':
re += '\\' + char;
break;
case '*': {
const prev = glob[i - 1];
let starCount = 1;
while (glob[i + 1] === '*') {
i++;
starCount++;
}
const next = glob[i + 1];
const isGlobstar = globstar &&
starCount > 1 &&
(prev === '/' || prev === undefined) &&
(next === '/' || next === undefined);
if (isGlobstar) {
re += '((?:[^\\/]*(?:\\/|$))*)';
if (next === '/')
i++; // skip slash after globstar
}
else {
re += '[^\\/]*';
}
break;
}
const next = glob[i + 1];
const isGlobstar = globstar && starCount > 1 && (prev === '/' || prev === undefined) && (next === '/' || next === undefined);
if (isGlobstar) {
re += '((?:[^\\/]*(?:\\/|$))*)';
if (next === '/')
i++; // skip slash after globstar
}
else {
re += '[^\\/]*';
}
case '?':
re += '.';
break;
case '{':
inGroup = true;
re += '(';
break;
case '}':
inGroup = false;
re += ')';
break;
case ',':
re += inGroup ? '|' : ',';
break;
// allow valid character classes (e.g., [jt])
case '[':
case ']':
re += char;
break;
default:
re += char;
break;
}
else if (char === '?') {
re += '.';
}
else if (char === '{') {
inGroup = true;
re += '(';
}
else if (char === '}') {
inGroup = false;
re += ')';
}
else if (char === ',' && inGroup) {
re += '|';
}
else if ('[]\\'.includes(char)) {
re += '\\' + char;
}
else {
re += char === '/' ? '\\/' : char;
}
}
return new RegExp(flags.includes('g') ? re : `^${re}$`, flags);
// Only anchor if not global, to behave like globs
const anchored = flags.includes('g') ? re : `^${re}$`;
return new RegExp(anchored, flags);
}

@@ -68,0 +100,0 @@ /**

@@ -16,47 +16,79 @@ import path from 'path';

let inGroup = false;
let escaping = false;
for (let i = 0; i < glob.length; i++) {
const char = glob[i];
if ('^$+?.()=!|'.includes(char)) {
// Handle escaped characters (e.g., \*, \?, \{, etc.)
if (escaping) {
re += '\\' + char;
escaping = false;
continue;
}
else if (char === '*') {
const prev = glob[i - 1];
let starCount = 1;
while (glob[i + 1] === '*') {
i++;
starCount++;
if (char === '\\') {
escaping = true;
continue;
}
switch (char) {
case '/':
re += '\\/';
break;
case '.':
case '+':
case '^':
case '$':
case '!':
case '=':
case '|':
case '(':
case ')':
re += '\\' + char;
break;
case '*': {
const prev = glob[i - 1];
let starCount = 1;
while (glob[i + 1] === '*') {
i++;
starCount++;
}
const next = glob[i + 1];
const isGlobstar = globstar &&
starCount > 1 &&
(prev === '/' || prev === undefined) &&
(next === '/' || next === undefined);
if (isGlobstar) {
re += '((?:[^\\/]*(?:\\/|$))*)';
if (next === '/')
i++; // skip slash after globstar
}
else {
re += '[^\\/]*';
}
break;
}
const next = glob[i + 1];
const isGlobstar = globstar && starCount > 1 && (prev === '/' || prev === undefined) && (next === '/' || next === undefined);
if (isGlobstar) {
re += '((?:[^\\/]*(?:\\/|$))*)';
if (next === '/')
i++; // skip slash after globstar
}
else {
re += '[^\\/]*';
}
case '?':
re += '.';
break;
case '{':
inGroup = true;
re += '(';
break;
case '}':
inGroup = false;
re += ')';
break;
case ',':
re += inGroup ? '|' : ',';
break;
// allow valid character classes (e.g., [jt])
case '[':
case ']':
re += char;
break;
default:
re += char;
break;
}
else if (char === '?') {
re += '.';
}
else if (char === '{') {
inGroup = true;
re += '(';
}
else if (char === '}') {
inGroup = false;
re += ')';
}
else if (char === ',' && inGroup) {
re += '|';
}
else if ('[]\\'.includes(char)) {
re += '\\' + char;
}
else {
re += char === '/' ? '\\/' : char;
}
}
return new RegExp(flags.includes('g') ? re : `^${re}$`, flags);
// Only anchor if not global, to behave like globs
const anchored = flags.includes('g') ? re : `^${re}$`;
return new RegExp(anchored, flags);
}

@@ -63,0 +95,0 @@ /**

{
"name": "@nasriya/overwatch",
"version": "1.0.5",
"version": "1.0.6",
"description": "A high-performance, dependency-free file system watcher that monitors file and directory changes efficiently across platforms.",

@@ -60,5 +60,5 @@ "keywords": [

"@types/node": "^24.0.3",
"jest": "^30.0.0",
"jest": "^30.0.1",
"ts-jest": "^29.4.0"
}
}
[![N|Solid](https://static.wixstatic.com/media/72ffe6_da8d2142d49c42b29c96ba80c8a91a6c~mv2.png)](https://nasriya.net)
# Overwatch.
[![NPM License](https://img.shields.io/npm/l/%40nasriya%2Foverwatch?color=lightgreen)](https://github.com/nasriyasoftware/Overwatch?tab=License-1-ov-file) ![Repository Size](https://img.shields.io/github/repo-size/nasriyasoftware/Overwatch.svg) ![Last Commit](https://img.shields.io/github/last-commit/nasriyasoftware/Overwatch.svg) [![Status](https://img.shields.io/badge/Status-Stable-green.svg)](link-to-your-status-page)
[![NPM License](https://img.shields.io/npm/l/%40nasriya%2Foverwatch?color=lightgreen)](https://github.com/nasriyasoftware/Overwatch?tab=License-1-ov-file) ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/nasriyasoftware/Overwatch/npm-publish.yml) ![NPM Version](https://img.shields.io/npm/v/%40nasriya%2Foverwatch) ![NPM Unpacked Size](https://img.shields.io/npm/unpacked-size/%40nasriya%2Foverwatch) ![Last Commit](https://img.shields.io/github/last-commit/nasriyasoftware/Overwatch.svg) [![Status](https://img.shields.io/badge/Status-Stable-lightgreen.svg)](link-to-your-status-page)

@@ -6,0 +6,0 @@ ##### Visit us at [www.nasriya.net](https://nasriya.net).