@aboviq/kollektor
v1.2.0
Published
Generic file collector, useful for mono repos and microservices
Readme
@aboviq/kollektor
Generic file collector, useful for mono repos and microservices
Installation
Install @aboviq/kollektor using npm:
npm install @aboviq/kollektorUsage
Module usage
const kollektor = require('@aboviq/kollektor');
// Read all package.json files in a mono-repo async:
const packages = await kollektor({
handlers: {
'package.json': packageFile => require(packageFile)
}
});
// ...or sync:
const packages = kollektor.sync({
handlers: {
'package.json': packageFile => require(packageFile)
}
});API
kollektor(options)
| Name | Type | Description |
| ------- | -------- | ------------------------------------------------- |
| options | Object | Options for specifying the behaviour of Kollektor |
Returns: Promise<Array<Object>>, all collected information depending on given handlers.
kollektor.sync(options)
| Name | Type | Description |
| ------- | -------- | ------------------------------------------------- |
| options | Object | Options for specifying the behaviour of Kollektor |
Returns: Array<Object>, all collected information depending on given handlers.
Options
options.cwd
Type: String
Default: process.cwd()
Sets the current working directory
options.handlers
Type: Object<Handler>
Example:
{
"handlers": {
"package.json": () => {},
"*.yml": () => {},
"README.md": () => {}
}
}Handler definition
Type: Function
Signature: handlerName :: String -> Object -> Object
handlerName is the name of the handler and is usually a filename, e.g. "package.json" which will call the handler for each package.json file it finds. The handlerName can also be a simple pattern matching multiple files, e.g: "*.yml".
When a file is found that matches the handlerName the handler function will be called with these arguments:
| Name | Type | Description |
| -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| fullPath | String | The full path to the found file |
| data | Object | This contains dir (the relative path of the folder), dirPath (the full path of the folder) and all data returned from previous handlers affecting the same folder |
The handler function can be async (return a promise) for the asynchronous version of Kollektor but must be synchronous for the sync version.
Any Object returned from a handler is merged with the current folder's data and will be fed to the next handler affecting files in the same folder. When all handlers have been called and completed for a specific folder the resulting data is what's being returned in the Array of collected information. See the tests for more details on how it works.
Contributing
See Contribution Guidelines and our Code Of Conduct.
License
MIT © Aboviq AB
