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

fentastic

v0.2.2

Published

Validate and parse Forsyth-Edwards Notation (FEN) used to describe a chess game board position.

Downloads

27

Readme

fentastic

Fentastic is scientifically proven to improve your mental health, enhance your relationships, increase your range of motion, foster mental well being, and validate and parse Forsyth–Edwards Notation (FEN) used to describe a particular board position of a chess game.

Installation

npm install fentastic

Pre 1.x.x versions of fentastic have been shown to cause headaches, insomnia, and breaking changes. Use --save-exact minimize side effects.

About

Fentastic provides excessively detailed error messages including the field in which the error occurred, the expected characters, the characters found to be invalid and the location in the FEN string where the error was found. Fentastic can also be used to create a JavaScript representation of a FEN, if that's what you're into.

Usage

Use the validateFen() or parseFen() functions to evaluate a FEN string. Both will validate the FEN string based on the FEN standard and return an object with a boolean valid key and errors if the FEN string is invalid. parseFen() will also return structured data describing a valid FEN string (see Valid results section below).

// CommonJS is also supported
import { validateFen, parseFen } from 'fentastic'

// Use parseFen(str) or validateFen(str)
const result = parseFen('rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq c6 0 2')

if (result.valid) {
  // The FEN is valid
  // See the Valid result section below to learn about the keys on a valid result
}
else {
  // There is a problem with FEN
  // See the Invalid result section below to learn about the keys on an invalid result 
}

Options

parseFen() takes an optional options object as it's second argument. Currently only one option is supported:

correctWhiteSpace

Prior to validation and parsing, white space will be trimmed from the FEN string, and whitespace separating fields will be collapsed to a single space.

parseFen('  rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w   KQkq - 0 1 ', {
  correctWhiteSpace: true
})

In the example above, the FEN string would be considered valid and correctly parsed. Note that the input string will be returned unchanged. You will need to rely on the parsed results.

Fentastic results

By this point you should already be seeing fentastic results, including increased confidence, lower cholesterol and better skin.

Valid

| Function | Description | | - | - | | validateFen() | A valid result will be an object consisting of the input fen and valid: true | parseFen() | A valid result will be an object consisting of the input fen, valid: true and keys with names based on the FEN fields defined in PGN_standard Section "16.1: FEN |

{
  fen: string 
  valid: true,
  // Following are for parseFen() only
  fields: string[],
  piecePlacement: [
    {
      position: string,
      color: string,
      type: string 
    },
    ...
  ],
  activeColor: string,
  castlingAvailability: undefined | {
    whiteKingside: boolean,
    whiteQueenside: boolean,
    blackKingside: boolean,
    blackQueenside: boolean
  },
  enPassantTargetSquare: string | undefined,
  halfmoveClock: number,
  fullmoveNumber: number
}

Invalid

Both validateFen() and parseFen() return the same result:

{
  fen: string,
  valid: false,
  errors: [
    {
      message: string,
      index: number
    },
    ...
  ]
}

References

  • https://ia902908.us.archive.org/26/items/pgn-standard-1994-03-12/PGN_standard_1994-03-12.txt
    • Section "16.1: FEN"
  • https://www.chess.com/terms/fen-chess