module-root-sync
Advanced tools
@@ -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 +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"} |
+1
-1
| { | ||
| "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": [ |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
17472
8.37%160
6.67%4
100%