- Dev toolchain upgrade: ESLint 9 (flat config), Mocha 11, Sinon 21, Commitlint 19, Semantic-Release latest.
- Migrated all tests from deprecated
sinon.sandbox.create()tosinon.createSandbox(); removed.usingPromiseusage. - Added flat config
eslint.config.jsand removed legacyeslintConfig+.eslintignore(ignored paths migrated). - Minor test refactors for lint (unused vars) and stabilized cleanup logic.
- No runtime code changes besides prior fs async modernization; public API unchanged.
- Version bump minor (5.0.x -> 5.1.0) because internal tooling changes may affect contributors (new lint rules) though consumer API is stable.
- Removed legacy dependencies
bluebirdandmomentfrom runtime e test suite. Tutti i flussi async ora usano solo Promises native; formattazione date/tempo reimplementata con APIDate. - Rimpiazzate utility Bluebird (
Promise.try,Promise.mapSeries,.tap, timeouts/delays) con pattern nativi equivalenti (sequenza viaArray.reduce, side-effect in.then, polling manuale per i timeout delle connessioni dati passive/attive). - Rimosso l'handling specifico di
Promise.TimeoutError; i percorsi di timeout ora propagano un sempliceError('TimeoutError')(solo nei test per simulazione). - Adeguati i test: eliminato ogni uso di Bluebird; mantenuto
sinon.sandbox.create()(la versione corrente di sinon non esponecreateSandbox). - Pulite le dipendenze: rimossi
bluebirdemoment; versione bump a5.0.0-fork.1.
- Dropped support for Node <20;
engines.nodeis now>=20(Node 18 is EOL). This enables using only modern core APIs without polyfills.
- Logger migration:
bunyanremoved in favor ofpino(smaller, no deprecated transitive deps). - Planned follow-up: replace remaining
fs.rmdirSync(...,{recursive:true})in tests withfs.rmSync(already supported) and progressively remove Bluebird (will land in subsequent patch without further breaking changes).
All notable changes for the forked package @n-car/ftp-srv.
- Removed vulnerable transient dependency
ipand replaced usage with internal wrapper overipaddr.js(src/helpers/ip-wrapper.js). Currently only equality comparison is required by the codebase (active/passive connector host matching).
- Reworked
FileSystem._resolvePathto enforce POSIX-style client paths consistently across platforms while preventing directory traversal above the root. - Adjusted test expectations to reflect POSIX client path contract; added Windows-safe conditional for CHMOD integration test (POSIX mode bits unreliable on win32).
- Future parity helpers from original
ip(e.g., CIDR, private/public checks) can be added to the wrapper if needed. - Recommend pinning this version via git tag instead of branch reference for reproducible builds.