Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

module-root-sync

Package Overview
Dependencies
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

module-root-sync - npm Package Compare versions

Comparing version
1.2.7
to
1.2.8
+5
-0
dist/cjs/index.js

@@ -32,2 +32,3 @@ "use strict";

}
var isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);
var existsSync = function(test) {

@@ -60,2 +61,6 @@ try {

filepath = decodeURIComponent(filepath);
// Convert forward slashes to backslashes on Windows
if (isWindows) {
filepath = filepath.split('/').join('\\');
}
return filepath;

@@ -62,0 +67,0 @@ };

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/module-root-sync/src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nconst existsSync = (test: string): boolean => {\n try {\n (fs.accessSync || fs.statSync)(test);\n return true;\n } catch (_) {\n return false;\n }\n};\n\nimport type { PathLike } from './types.ts';\n\n/**\n * Convert file:// URL to filesystem path\n * Node 0.8 compatible (no url.fileURLToPath available)\n * Accepts string paths, string file URLs, or URL objects\n */\nconst fileURLToPath = (input: PathLike): string => {\n // Handle URL objects by extracting href\n const urlString = typeof input === 'string' ? input : input.href;\n\n // Check if it's a file URL (use indexOf for Node 0.8 compat)\n if (urlString.indexOf('file://') !== 0) {\n return urlString; // Not a file URL, return as-is\n }\n\n // Remove file:// prefix\n let filepath = urlString.slice(7);\n\n // Handle Windows: file:///C:/path -> C:/path\n if (filepath.charAt(0) === '/' && filepath.charAt(2) === ':') {\n filepath = filepath.slice(1);\n }\n\n // Decode URL-encoded characters (%20 -> space, etc.)\n filepath = decodeURIComponent(filepath);\n\n return filepath;\n};\n\nimport type { RootOptions } from './types.ts';\n\nexport * from './types.ts';\nexport default function moduleRoot(dir: PathLike, options: RootOptions = {}) {\n const name = options.name === undefined ? 'package.json' : options.name;\n\n // Convert file:// URL to path if needed\n let current = fileURLToPath(dir);\n do {\n const packagePath = path.join(current, name);\n if (existsSync(packagePath)) {\n if (!options.keyExists) return current;\n if (JSON.parse(fs.readFileSync(packagePath, 'utf8'))[options.keyExists] !== undefined) return current;\n }\n const next = path.dirname(current);\n if (next === current) break;\n current = next;\n } while (current);\n throw new Error('Root not found');\n}\n"],"names":["moduleRoot","existsSync","test","fs","accessSync","statSync","_","fileURLToPath","input","urlString","href","indexOf","filepath","slice","charAt","decodeURIComponent","dir","options","name","undefined","current","packagePath","path","join","keyExists","JSON","parse","readFileSync","next","dirname","Error"],"mappings":";;;;+BA6CA;;;eAAwBA;;;yDA7CT;2DACE;qBA2CH;;;;;;;;;;;;;;;;;;;AAzCd,IAAMC,aAAa,SAACC;IAClB,IAAI;QACDC,CAAAA,WAAE,CAACC,UAAU,IAAID,WAAE,CAACE,QAAQ,AAAD,EAAGH;QAC/B,OAAO;IACT,EAAE,OAAOI,GAAG;QACV,OAAO;IACT;AACF;AAIA;;;;CAIC,GACD,IAAMC,gBAAgB,SAACC;IACrB,wCAAwC;IACxC,IAAMC,YAAY,OAAOD,UAAU,WAAWA,QAAQA,MAAME,IAAI;IAEhE,6DAA6D;IAC7D,IAAID,UAAUE,OAAO,CAAC,eAAe,GAAG;QACtC,OAAOF,WAAW,+BAA+B;IACnD;IAEA,wBAAwB;IACxB,IAAIG,WAAWH,UAAUI,KAAK,CAAC;IAE/B,6CAA6C;IAC7C,IAAID,SAASE,MAAM,CAAC,OAAO,OAAOF,SAASE,MAAM,CAAC,OAAO,KAAK;QAC5DF,WAAWA,SAASC,KAAK,CAAC;IAC5B;IAEA,qDAAqD;IACrDD,WAAWG,mBAAmBH;IAE9B,OAAOA;AACT;AAKe,SAASZ,WAAWgB,GAAa;QAAEC,UAAAA,iEAAuB,CAAC;IACxE,IAAMC,OAAOD,QAAQC,IAAI,KAAKC,YAAY,iBAAiBF,QAAQC,IAAI;IAEvE,wCAAwC;IACxC,IAAIE,UAAUb,cAAcS;IAC5B,GAAG;QACD,IAAMK,cAAcC,aAAI,CAACC,IAAI,CAACH,SAASF;QACvC,IAAIjB,WAAWoB,cAAc;YAC3B,IAAI,CAACJ,QAAQO,SAAS,EAAE,OAAOJ;YAC/B,IAAIK,KAAKC,KAAK,CAACvB,WAAE,CAACwB,YAAY,CAACN,aAAa,QAAQ,CAACJ,QAAQO,SAAS,CAAC,KAAKL,WAAW,OAAOC;QAChG;QACA,IAAMQ,OAAON,aAAI,CAACO,OAAO,CAACT;QAC1B,IAAIQ,SAASR,SAAS;QACtBA,UAAUQ;IACZ,QAASR,SAAS;IAClB,MAAM,IAAIU,MAAM;AAClB"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/module-root-sync/src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\nconst existsSync = (test: string): boolean => {\n try {\n (fs.accessSync || fs.statSync)(test);\n return true;\n } catch (_) {\n return false;\n }\n};\n\nimport type { PathLike } from './types.ts';\n\n/**\n * Convert file:// URL to filesystem path\n * Node 0.8 compatible (no url.fileURLToPath available)\n * Accepts string paths, string file URLs, or URL objects\n */\nconst fileURLToPath = (input: PathLike): string => {\n // Handle URL objects by extracting href\n const urlString = typeof input === 'string' ? input : input.href;\n\n // Check if it's a file URL (use indexOf for Node 0.8 compat)\n if (urlString.indexOf('file://') !== 0) {\n return urlString; // Not a file URL, return as-is\n }\n\n // Remove file:// prefix\n let filepath = urlString.slice(7);\n\n // Handle Windows: file:///C:/path -> C:/path\n if (filepath.charAt(0) === '/' && filepath.charAt(2) === ':') {\n filepath = filepath.slice(1);\n }\n\n // Decode URL-encoded characters (%20 -> space, etc.)\n filepath = decodeURIComponent(filepath);\n\n // Convert forward slashes to backslashes on Windows\n if (isWindows) {\n filepath = filepath.split('/').join('\\\\');\n }\n\n return filepath;\n};\n\nimport type { RootOptions } from './types.ts';\n\nexport * from './types.ts';\nexport default function moduleRoot(dir: PathLike, options: RootOptions = {}) {\n const name = options.name === undefined ? 'package.json' : options.name;\n\n // Convert file:// URL to path if needed\n let current = fileURLToPath(dir);\n do {\n const packagePath = path.join(current, name);\n if (existsSync(packagePath)) {\n if (!options.keyExists) return current;\n if (JSON.parse(fs.readFileSync(packagePath, 'utf8'))[options.keyExists] !== undefined) return current;\n }\n const next = path.dirname(current);\n if (next === current) break;\n current = next;\n } while (current);\n throw new Error('Root not found');\n}\n"],"names":["moduleRoot","isWindows","process","platform","test","env","OSTYPE","existsSync","fs","accessSync","statSync","_","fileURLToPath","input","urlString","href","indexOf","filepath","slice","charAt","decodeURIComponent","split","join","dir","options","name","undefined","current","packagePath","path","keyExists","JSON","parse","readFileSync","next","dirname","Error"],"mappings":";;;;+BAoDA;;;eAAwBA;;;yDApDT;2DACE;qBAkDH;;;;;;;;;;;;;;;;;;;AAhDd,IAAMC,YAAYC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAE3F,IAAMC,aAAa,SAACH;IAClB,IAAI;QACDI,CAAAA,WAAE,CAACC,UAAU,IAAID,WAAE,CAACE,QAAQ,AAAD,EAAGN;QAC/B,OAAO;IACT,EAAE,OAAOO,GAAG;QACV,OAAO;IACT;AACF;AAIA;;;;CAIC,GACD,IAAMC,gBAAgB,SAACC;IACrB,wCAAwC;IACxC,IAAMC,YAAY,OAAOD,UAAU,WAAWA,QAAQA,MAAME,IAAI;IAEhE,6DAA6D;IAC7D,IAAID,UAAUE,OAAO,CAAC,eAAe,GAAG;QACtC,OAAOF,WAAW,+BAA+B;IACnD;IAEA,wBAAwB;IACxB,IAAIG,WAAWH,UAAUI,KAAK,CAAC;IAE/B,6CAA6C;IAC7C,IAAID,SAASE,MAAM,CAAC,OAAO,OAAOF,SAASE,MAAM,CAAC,OAAO,KAAK;QAC5DF,WAAWA,SAASC,KAAK,CAAC;IAC5B;IAEA,qDAAqD;IACrDD,WAAWG,mBAAmBH;IAE9B,oDAAoD;IACpD,IAAIhB,WAAW;QACbgB,WAAWA,SAASI,KAAK,CAAC,KAAKC,IAAI,CAAC;IACtC;IAEA,OAAOL;AACT;AAKe,SAASjB,WAAWuB,GAAa;QAAEC,UAAAA,iEAAuB,CAAC;IACxE,IAAMC,OAAOD,QAAQC,IAAI,KAAKC,YAAY,iBAAiBF,QAAQC,IAAI;IAEvE,wCAAwC;IACxC,IAAIE,UAAUf,cAAcW;IAC5B,GAAG;QACD,IAAMK,cAAcC,aAAI,CAACP,IAAI,CAACK,SAASF;QACvC,IAAIlB,WAAWqB,cAAc;YAC3B,IAAI,CAACJ,QAAQM,SAAS,EAAE,OAAOH;YAC/B,IAAII,KAAKC,KAAK,CAACxB,WAAE,CAACyB,YAAY,CAACL,aAAa,QAAQ,CAACJ,QAAQM,SAAS,CAAC,KAAKJ,WAAW,OAAOC;QAChG;QACA,IAAMO,OAAOL,aAAI,CAACM,OAAO,CAACR;QAC1B,IAAIO,SAASP,SAAS;QACtBA,UAAUO;IACZ,QAASP,SAAS;IAClB,MAAM,IAAIS,MAAM;AAClB"}
import fs from 'fs';
import path from 'path';
const isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);
const existsSync = (test)=>{

@@ -30,2 +31,6 @@ try {

filepath = decodeURIComponent(filepath);
// Convert forward slashes to backslashes on Windows
if (isWindows) {
filepath = filepath.split('/').join('\\');
}
return filepath;

@@ -32,0 +37,0 @@ };

@@ -1,1 +0,1 @@

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/module-root-sync/src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nconst existsSync = (test: string): boolean => {\n try {\n (fs.accessSync || fs.statSync)(test);\n return true;\n } catch (_) {\n return false;\n }\n};\n\nimport type { PathLike } from './types.ts';\n\n/**\n * Convert file:// URL to filesystem path\n * Node 0.8 compatible (no url.fileURLToPath available)\n * Accepts string paths, string file URLs, or URL objects\n */\nconst fileURLToPath = (input: PathLike): string => {\n // Handle URL objects by extracting href\n const urlString = typeof input === 'string' ? input : input.href;\n\n // Check if it's a file URL (use indexOf for Node 0.8 compat)\n if (urlString.indexOf('file://') !== 0) {\n return urlString; // Not a file URL, return as-is\n }\n\n // Remove file:// prefix\n let filepath = urlString.slice(7);\n\n // Handle Windows: file:///C:/path -> C:/path\n if (filepath.charAt(0) === '/' && filepath.charAt(2) === ':') {\n filepath = filepath.slice(1);\n }\n\n // Decode URL-encoded characters (%20 -> space, etc.)\n filepath = decodeURIComponent(filepath);\n\n return filepath;\n};\n\nimport type { RootOptions } from './types.ts';\n\nexport * from './types.ts';\nexport default function moduleRoot(dir: PathLike, options: RootOptions = {}) {\n const name = options.name === undefined ? 'package.json' : options.name;\n\n // Convert file:// URL to path if needed\n let current = fileURLToPath(dir);\n do {\n const packagePath = path.join(current, name);\n if (existsSync(packagePath)) {\n if (!options.keyExists) return current;\n if (JSON.parse(fs.readFileSync(packagePath, 'utf8'))[options.keyExists] !== undefined) return current;\n }\n const next = path.dirname(current);\n if (next === current) break;\n current = next;\n } while (current);\n throw new Error('Root not found');\n}\n"],"names":["fs","path","existsSync","test","accessSync","statSync","_","fileURLToPath","input","urlString","href","indexOf","filepath","slice","charAt","decodeURIComponent","moduleRoot","dir","options","name","undefined","current","packagePath","join","keyExists","JSON","parse","readFileSync","next","dirname","Error"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AAExB,MAAMC,aAAa,CAACC;IAClB,IAAI;QACDH,CAAAA,GAAGI,UAAU,IAAIJ,GAAGK,QAAQ,AAAD,EAAGF;QAC/B,OAAO;IACT,EAAE,OAAOG,GAAG;QACV,OAAO;IACT;AACF;AAIA;;;;CAIC,GACD,MAAMC,gBAAgB,CAACC;IACrB,wCAAwC;IACxC,MAAMC,YAAY,OAAOD,UAAU,WAAWA,QAAQA,MAAME,IAAI;IAEhE,6DAA6D;IAC7D,IAAID,UAAUE,OAAO,CAAC,eAAe,GAAG;QACtC,OAAOF,WAAW,+BAA+B;IACnD;IAEA,wBAAwB;IACxB,IAAIG,WAAWH,UAAUI,KAAK,CAAC;IAE/B,6CAA6C;IAC7C,IAAID,SAASE,MAAM,CAAC,OAAO,OAAOF,SAASE,MAAM,CAAC,OAAO,KAAK;QAC5DF,WAAWA,SAASC,KAAK,CAAC;IAC5B;IAEA,qDAAqD;IACrDD,WAAWG,mBAAmBH;IAE9B,OAAOA;AACT;AAIA,cAAc,aAAa;AAC3B,eAAe,SAASI,WAAWC,GAAa,EAAEC,UAAuB,CAAC,CAAC;IACzE,MAAMC,OAAOD,QAAQC,IAAI,KAAKC,YAAY,iBAAiBF,QAAQC,IAAI;IAEvE,wCAAwC;IACxC,IAAIE,UAAUd,cAAcU;IAC5B,GAAG;QACD,MAAMK,cAAcrB,KAAKsB,IAAI,CAACF,SAASF;QACvC,IAAIjB,WAAWoB,cAAc;YAC3B,IAAI,CAACJ,QAAQM,SAAS,EAAE,OAAOH;YAC/B,IAAII,KAAKC,KAAK,CAAC1B,GAAG2B,YAAY,CAACL,aAAa,QAAQ,CAACJ,QAAQM,SAAS,CAAC,KAAKJ,WAAW,OAAOC;QAChG;QACA,MAAMO,OAAO3B,KAAK4B,OAAO,CAACR;QAC1B,IAAIO,SAASP,SAAS;QACtBA,UAAUO;IACZ,QAASP,QAAS;IAClB,MAAM,IAAIS,MAAM;AAClB"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/module-root-sync/src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\nconst existsSync = (test: string): boolean => {\n try {\n (fs.accessSync || fs.statSync)(test);\n return true;\n } catch (_) {\n return false;\n }\n};\n\nimport type { PathLike } from './types.ts';\n\n/**\n * Convert file:// URL to filesystem path\n * Node 0.8 compatible (no url.fileURLToPath available)\n * Accepts string paths, string file URLs, or URL objects\n */\nconst fileURLToPath = (input: PathLike): string => {\n // Handle URL objects by extracting href\n const urlString = typeof input === 'string' ? input : input.href;\n\n // Check if it's a file URL (use indexOf for Node 0.8 compat)\n if (urlString.indexOf('file://') !== 0) {\n return urlString; // Not a file URL, return as-is\n }\n\n // Remove file:// prefix\n let filepath = urlString.slice(7);\n\n // Handle Windows: file:///C:/path -> C:/path\n if (filepath.charAt(0) === '/' && filepath.charAt(2) === ':') {\n filepath = filepath.slice(1);\n }\n\n // Decode URL-encoded characters (%20 -> space, etc.)\n filepath = decodeURIComponent(filepath);\n\n // Convert forward slashes to backslashes on Windows\n if (isWindows) {\n filepath = filepath.split('/').join('\\\\');\n }\n\n return filepath;\n};\n\nimport type { RootOptions } from './types.ts';\n\nexport * from './types.ts';\nexport default function moduleRoot(dir: PathLike, options: RootOptions = {}) {\n const name = options.name === undefined ? 'package.json' : options.name;\n\n // Convert file:// URL to path if needed\n let current = fileURLToPath(dir);\n do {\n const packagePath = path.join(current, name);\n if (existsSync(packagePath)) {\n if (!options.keyExists) return current;\n if (JSON.parse(fs.readFileSync(packagePath, 'utf8'))[options.keyExists] !== undefined) return current;\n }\n const next = path.dirname(current);\n if (next === current) break;\n current = next;\n } while (current);\n throw new Error('Root not found');\n}\n"],"names":["fs","path","isWindows","process","platform","test","env","OSTYPE","existsSync","accessSync","statSync","_","fileURLToPath","input","urlString","href","indexOf","filepath","slice","charAt","decodeURIComponent","split","join","moduleRoot","dir","options","name","undefined","current","packagePath","keyExists","JSON","parse","readFileSync","next","dirname","Error"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AAExB,MAAMC,YAAYC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAE3F,MAAMC,aAAa,CAACH;IAClB,IAAI;QACDL,CAAAA,GAAGS,UAAU,IAAIT,GAAGU,QAAQ,AAAD,EAAGL;QAC/B,OAAO;IACT,EAAE,OAAOM,GAAG;QACV,OAAO;IACT;AACF;AAIA;;;;CAIC,GACD,MAAMC,gBAAgB,CAACC;IACrB,wCAAwC;IACxC,MAAMC,YAAY,OAAOD,UAAU,WAAWA,QAAQA,MAAME,IAAI;IAEhE,6DAA6D;IAC7D,IAAID,UAAUE,OAAO,CAAC,eAAe,GAAG;QACtC,OAAOF,WAAW,+BAA+B;IACnD;IAEA,wBAAwB;IACxB,IAAIG,WAAWH,UAAUI,KAAK,CAAC;IAE/B,6CAA6C;IAC7C,IAAID,SAASE,MAAM,CAAC,OAAO,OAAOF,SAASE,MAAM,CAAC,OAAO,KAAK;QAC5DF,WAAWA,SAASC,KAAK,CAAC;IAC5B;IAEA,qDAAqD;IACrDD,WAAWG,mBAAmBH;IAE9B,oDAAoD;IACpD,IAAIf,WAAW;QACbe,WAAWA,SAASI,KAAK,CAAC,KAAKC,IAAI,CAAC;IACtC;IAEA,OAAOL;AACT;AAIA,cAAc,aAAa;AAC3B,eAAe,SAASM,WAAWC,GAAa,EAAEC,UAAuB,CAAC,CAAC;IACzE,MAAMC,OAAOD,QAAQC,IAAI,KAAKC,YAAY,iBAAiBF,QAAQC,IAAI;IAEvE,wCAAwC;IACxC,IAAIE,UAAUhB,cAAcY;IAC5B,GAAG;QACD,MAAMK,cAAc5B,KAAKqB,IAAI,CAACM,SAASF;QACvC,IAAIlB,WAAWqB,cAAc;YAC3B,IAAI,CAACJ,QAAQK,SAAS,EAAE,OAAOF;YAC/B,IAAIG,KAAKC,KAAK,CAAChC,GAAGiC,YAAY,CAACJ,aAAa,QAAQ,CAACJ,QAAQK,SAAS,CAAC,KAAKH,WAAW,OAAOC;QAChG;QACA,MAAMM,OAAOjC,KAAKkC,OAAO,CAACP;QAC1B,IAAIM,SAASN,SAAS;QACtBA,UAAUM;IACZ,QAASN,QAAS;IAClB,MAAM,IAAIQ,MAAM;AAClB"}
{
"name": "module-root-sync",
"version": "1.2.7",
"version": "1.2.8",
"description": "Finds the directory that the modules resides in",

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