@neumatter/record
TypeScript icon, indicating that this package has built-in type declarations

1.0.9 • Public • Published

Record

Module for scanning file directories. Can configure automatic routes with middleware.


Table of Contents

  1. Install
  2. Usage

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: ''
    }
  ]
})

Package Sidebar

Install

npm i @neumatter/record

Weekly Downloads

3

Version

1.0.9

License

none

Unpacked Size

19.6 kB

Total Files

8

Last publish

Collaborators

  • clyng57