yarn-lock-0.5.0: Represent and parse yarn.lock files

MaintainerProfpatsch
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Yarn.Lock.Parse

Contents

Description

This module provides a parser for the AST of yarn.lock files.

Synopsis

Documentation

newtype PackageFields Source #

The yarn.lock format doesn’t specifically include a fixed scheme, it’s just an unnecessary custom version of a list of fields.

An field can either be a string or more fields w/ deeper indentation.

The actual conversion to semantic structures needs to be done afterwards.

type Package = Keyed (SourcePos, PackageFields) Source #

A parsed Package AST has one or more keys, a position in the original files and a collection of fields.

Parsing

Re-export

type Parser = Parsec Void Text Source #

We use a simple (pure) Megaparsec parser.

Parsers

packageList :: Parser [Package] Source #

Parse a complete yarn.lock into an abstract syntax tree, keeping the source positions of each package entry.

packageEntry :: Parser (Keyed (SourcePos, PackageFields)) Source #

A single Package.

Example:

handlebars@^4.0.4:
  version "4.0.6"
  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7"
  dependencies:
    async "^1.4.0"
    optimist "^0.6.1"
    source-map "^0.4.4"
  optionalDependencies:
    uglify-js "^2.6"
    "

Internal Parsers

field :: Parser (Text, Either Text PackageFields) Source #

Either a simple or a nested field.

nestedField :: Parser (Text, PackageFields) Source #

Similar to a simpleField, but instead of a string we get another block with deeper indentation.

simpleField :: Parser (Text, Text) Source #

A key-value pair, separated by space. Key any value may be enclosed in "". Returns key and value.

packageKeys :: Parser (NonEmpty PackageKey) Source #

The list of PackageKeys that index the same Package

align-text^0.1.1, align-text^0.1.3:\n