resolve-dat-path

2.0.0 • Public • Published

resolve-dat-path

Resolves a file within a dat archive based on how web browsers would load it.

const resolveDatPath = require('resolve-dat-path')

const archive = getAHyperdriveSomehow();

const rawPath = '/blog/about'

try {
  const {type, path, stat} = await resolveDatPath(archive, rawPath)
  if(type === 'directory') {
    console.log('Render the file list from the folder signified by `path`')
  } else if(type === 'file') {
    console.log('Render the file at `path`')
  } else {
    console.error('Something went horribly wrong')
  }
} catch (err) {
  console.log('Show your application 404 page')
}

How it works

History: This Algorithm is based on the work used by hashbase and beaker.

How the algorithm for looking up paths works:

  1. It will look for the web_root property in the /dat.json file to use as prefix, if non-existent it will use /.

  2. It will look for a file to be returned, with following order at:

    1. exactly the path
    2. with an .html suffix
    3. with an .md suffix
    4. with an /index.html suffix
    5. with an /index.md suffix
  3. It will look for a folder to be returned at the given path.

  4. It will look for the fallback_page property in the /dat.json, will return the file for the path:

    1. if it exists as is
    2. if it exists with the web_root prefix
  5. It will throw an Not Found error.

License

MIT

Package Sidebar

Install

npm i resolve-dat-path

Weekly Downloads

0

Version

2.0.0

License

MIT

Unpacked Size

10.3 kB

Total Files

6

Last publish

Collaborators

  • rangermauve