
Security News
Feross on the 10 Minutes or Less Podcast: Nobody Reads the Code
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.
file-path-maker
Advanced tools
file-path-maker is an npm module for organizing a steady flow of incoming files in a predictably growing tree of directories.
Suppose an information system have to store about N files per day (hour, second etc.) in arbitrary directories under a common root. Once written, files are never modified, but their retention time is limited to T years (months etc.) after which all expired content must be deleted or compressed, moved to other media and so on.
The obvious solution for this is to have one directory per year, subdivided by month etc. Leaf directories correspond to the smallest time unit in use. They should contain the greatest number of files comfortable to work with at once. The exact choice depends on the flow rate, the retention time and the file system capabilities.
To implement such logic, file-path-maker provides the FilePathMaker class with the single API method called make that calculates paths like ${root}/${prefix}/${yyyy}/${mm}/${dd}/.../${file}.${ext} while creating necessary directories on the fly.
npm install file-path-maker
const {FilePathMaker} = require ('file-path-maker')
const fpm = new FilePathMaker ({
root : '/var/filestore',
// mode : 0o777,
// format : {year: 'numeric', month: '2-digit', day: '2-digit'},
})
const {
rel, // `daily/${yyyy}/${mm}/${dd}/docs/file.ext`
dir, // `/var/filestore/daily/${yyyy}/${mm}/${dd}/docs`
abs, // `/var/filestore/daily/${yyyy}/${mm}/${dd}/docs/file.ext`
} = fpm.make ('docs/file.ext', 'daily')
| Name | Description |
|---|---|
root | The absolute path of a directory containing all make results |
mode | The newly created directories mode, see fs.mkdir |
format | Intl.DateTimeFormat constructor options |
make method| Name | Description | Note |
|---|---|---|
path | The path to append last | Mandatory |
prefix | The string to place between the root and the date based part | Optional |
| Name | Description | Note |
|---|---|---|
abs | The absolute generated path | path.sep as delimiter |
rel | The generated path relative to root | '/' as delimiter |
dir | The absolute directory name of the generated path | guaranteed to exist |
file-path-maker never checks for existing files nor path uniqueness. Subsequent make ('1.txt') calls may very well give identical results, so writing different content by those path will lead to data loss. It's up to the application to implement necessary checks, locking, using globally unique names and so on.
The make () method is synchronous and uses fs.mkdirSync internally. Potentially, this may lead to some performance issues.
FAQs
organize incoming files in a predictably growing hierarchy
We found that file-path-maker demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.

Research
/Security News
Campaign of 108 extensions harvests identities, steals sessions, and adds backdoors to browsers, all tied to the same C2 infrastructure.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.