@neumatter/record
v1.0.9
Published
Module for scanning file directories. Can configure automatic routes with middleware.
Downloads
8
Maintainers
Readme
Record
Module for scanning file directories. Can configure automatic routes with middleware.
Table of Contents
Install
npm i @neumatter/record
Usage
Build Record:
import Record from '@neumatter/record'
import nodePath from 'path'
const record = await Record.build({
path: nodePath.resolve('./')
})
// Returns
const NeuRecord = {
path: '/Users/dev/example',
basepath: '/',
name: '',
previous: null,
files: [
{
path: '/Users/dev/example/session.js',
basepath: '/',
container: 'routes',
isDot: false,
name: 'session',
ext: '.js',
subext: null,
customName: null
},
{
path: '/Users/dev/example/nextdir/index.js',
basepath: '/nextdir',
container: 'nextdir',
isDot: false,
name: 'index',
ext: '.js',
subext: null,
customName: ''
}
],
middleware: [],
subrecords: [],
map: {
profile: {
path: '/Users/dev/example/nextdir',
name: 'profile',
files: ['Array'],
subrecords: {}
}
},
cwd: '/Users/dev/example'
}
Read Directory:
import Record from '@neumatter/record'
const record = await Record.readdir({
path: process.cwd(),
allow: ['.json']
})
// Returns
const NeuRecord = {
path: '/Users/dev/neujs/tests/basic',
basepath: '/',
name: '',
previous: null,
files: NeuPack {
keys: [ '/basic/json', '/basic/neu', '/basic/record' ],
data: {
'/basic/json': [Spec],
'/basic/neu': [Spec],
'/basic/record': [Spec]
},
id: 'pathName'
},
subrecords: NeuPack {
keys: [ '/public', '/schemas', '/server' ],
data: {
'/public': [NeuRecord],
'/schemas': [NeuRecord],
'/server': [NeuRecord]
},
id: 'pathName'
},
map: NeuPack { keys: [], data: {}, id: 'path' },
cwd: '/Users/dev/neujs/tests/basic'
}
Methods of Build:
import Record from '@neumatter/record'
import nodePath from 'path'
const record = await Record.build({
path: nodePath.resolve('./')
})
// returns Array<modules>
const modules = await record.importModules('default')
// NeuRecord.files.all: loop through files Async
await record.files.all(async spec => {
const specModule = await spec.import('default')
// do something with <specModule>
})
// NeuRecord.files.each: loop through files Sync
record.files.each(spec => {
const specModule = spec.import('default')
spec.import('default')
.then(specModule => {
// do something with <specModule>
})
.catch(err => {
// error
})
})
// imports Array<module.default> and calls the callback on each module
await record.autoRoutes((router) => {
const { path, module, middleware } = router
if (middleware) {
app.use(path, middleware, module)
} else {
app.use(path, module)
}
})
Options:
import Record from '@neumatter/record'
// default options
const record = await Record.build({
path: process.cwd(),
basepath: '/',
name: '',
middleware: false,
ignore: [
'.git',
'node_modules'
],
allow: [
'.js',
'.mjs',
'.cjs'
],
ignoreDots: true,
mergeFiles: true,
replacer: [
{
key: 'index',
value: ''
}
]
})