npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

fidoconfig

v1.0.0

Published

A reader of fidoconfig (Fidonet configuration) files.

Downloads

108

Readme

(a histogram of downloads)

This module (fidoconfig) is a reader of fidoconfig (Fidonet configuration) files. These files are mostly used by Husky Portable Fidonet project.

This module is written in JavaScript and requires Node.js to run.

  • Starting from v1.0.0, fidoconfig requires Node.js version 4.0.0 or newer because it is rewritten in ECMAScript 2015 (ES6).
  • You may run older versions of fidoconfig (that precede v1.0.0) on older Node.js versions (0.10.x or 0.12.x). However, those older versions of Node.js are themselves not maintained by their developers after 2016-12-31.

It is tested against Node.js v4.x, Node.js v5.x, Node.js v6.x, Node.js v7.x and the latest stable version of Node.js.

This module is currently in an early phase of its development and thus does not have the desired level of feature completeness.

Installing the fidoconfig module

(npm package version)

  • Latest packaged version: npm install fidoconfig

  • Latest githubbed version: npm install https://github.com/Mithgol/node-fidoconfig/tarball/master

The npm package does not contain the tests, they're published on GitHub only.

You may visit https://github.com/Mithgol/node-fidoconfig#readme occasionally to read the latest README because the package's version is not planned to grow after changes when they happen in README only. (And npm publish --force is forbidden nowadays.)

Using the fidoconfig module

When you require() the installed module, you get an object with the following method:

areas(areaFilePath, options)

This method reads echomail area configuration file (fidoconfig-compatible) and returns an object that describes echomail areas.

The encoding of the configuration file is not autodetected; the optional options.encoding value (by default, 'utf8') is used. You may use any encoding provided by the iconv-lite module.

Examples of such area configuration files are available in its own CVS repository on SourceForge in English and in Russian. Text lines of these examples are commented out (by # characters in the lines' beginnings) but your real configuration lines must be uncommented.

The configuration lines for echomail are expected to start with EchoArea (literally), then a whitespace-separated echotag (such as Ru.FTN.Develop for example), then a whitespace-separated full path (without the extensions) to the echomail files of the area, in that order. (A sequence of several whitespaces is also a supported separator.) The rest of the configuration line is also whitespace-separated from the path.

If the -d "some description" is found on the same line, it is used as the echomail area's description.

Properties of the returned object have names equal to lowercase echotags of the echomail areas (as returned by String.prototype.toLowerCase method). Values of these properties are also objects that describe individual echomail areas; these objects have the following properties:

  • configName — area name (echotag) as given in the configuration file (might be not lowercase);

  • passthroughtrue if the echomail area works in the passthrough mode, false otherwise;

  • path — the path to the message base of the echomail area (or the word 'passthrough' if the area works in the passthrough mode and thus there is no message base);

  • description — the echomail area's description (or null if the description was not given).

This method currently has the following limitations:

  • Echomail area defaults, even if given in the configuration file, are not taken into account.

  • An area configuration file is treated as if it were isolated (though it actually is a part of fidoconfig and may be affected by settings in some global configuration files where it is included).

  • Variables that were set in fidoconfig files or in the environment are not substituted.

  • Settings are read only for echomail areas; other types of areas (badmail areas, dupemail areas, local areas, netmail areas) are ignored.

  • Message base types are not detected.

In addition to properties (that represent areas) the returned object also has the following methods:

  • .area(areaName, callback) — checks if the given areaName (not case-sensitive) exists among the object's properties and then does one of the following:

    • If the area does not exist, callback({notFound: true}) is called.
    • If the area exists in the passthrough mode, callback({passthrough: true}) is called.
    • If the area exists and its mode isn't passthrough, callback(null, areaData) is called. The areaData object (received by that callback) describes the designated echomail area (it has the properties such as path or description as explained above); however, it is a clone of the original object's property and thus the changes of these properties' values won't affect the original object.
  • .getAreaNames() — returns an array containing all of the area names (lowercase).

Testing the fidoconfig module

(build testing status)

It is necessary to install Mocha and JSHint for testing.

  • You may install Mocha globally (npm install mocha -g) or locally (npm install mocha in the directory of the fidoconfig module).

  • You may install JSHint globally (npm install jshint -g) or locally (npm install jshint in the directory of the fidoconfig module).

After that you may run npm test (in the directory of the fidoconfig module).

License

MIT license (see the LICENSE file).