diff --git a/.gitignore b/.gitignore index a276e0e..6d0b764 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,8 @@ coverage/ .nyc_output/ node_modules/ test-lib/ + +java/ +js/**/ElectroGrammar* +python3/**/ElectroGrammar* +db/*.json diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..b31f38f --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +tabWidth: 2 +semi: true +singleQuote: true +bracketSpacing: false +trailingComma: es5 diff --git a/.travis.yml b/.travis.yml index 045ded4..1b7f545 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,23 @@ language: node_js node_js: - - "6" - "8" - "node" matrix: include: - node_js: node env: TEST_BROWSERS=true +before_install: + - cd travis + - wget --no-check-certificate https://www.antlr.org/download/antlr-4.7.1-complete.jar + - export CLASSPATH=".:$TRAVIS_BUILD_DIR/travis/antlr-4.7.1-complete.jar:$CLASSPATH" + - export PATH=$PATH:$TRAVIS_BUILD_DIR/travis + - cd .. + - cd js && npm install && cd .. + - pip install --user pipenv + - pipenv install --dev script: - - yarn test - - yarn demo + - make + - npm test + - npm run fmt + - git diff - git diff --quiet - - if [ "${TEST_BROWSERS}" = "true" ] && [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then yarn test:sauce; fi diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..430386d --- /dev/null +++ b/Makefile @@ -0,0 +1,31 @@ +ANTLR=antlr4 -Xexact-output-dir +GRAMMAR=src/ElectroGrammar.g4 +GRAMMAR_FILES=$(wildcard src/*.g4) + +all: js python3 + +java: $(GRAMMAR) $(GRAMMAR_FILES) + $(ANTLR) $< -o java/ + javac java/*.java -d java/ + +clean-java: + rm -f java/* + + +python3: $(GRAMMAR) $(GRAMMAR_FILES) + $(ANTLR) -Dlanguage=Python3 $< -o python3/electro_grammar/ + +clean-python3: + rm -f python3/electro_grammar/ElectroGrammar* + + +js: $(GRAMMAR) $(GRAMMAR_FILES) + $(ANTLR) -Dlanguage=JavaScript $< -o js/lib/ + +clean-js: + rm -f js/lib/ElectroGrammar* + + +clean: clean-java clean-python3 clean-js + +.PHONY: all clean python3 clean-python3 java clean-java clean js clean-js diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..3a28ba7 --- /dev/null +++ b/Pipfile @@ -0,0 +1,21 @@ +[[source]] + +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + + +[packages] + +"antlr4-python3-runtime" = "*" + + +[dev-packages] + +pytest = "*" +"autopep8" = "*" + + +[requires] + +python_version = "3.6" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..2643803 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,88 @@ +{ + "_meta": { + "hash": { + "sha256": "f52c9e3c9d3cac7e5aa74c912c5471060fb6f0ef0e51a9547726eec9341231fd" + }, + "host-environment-markers": { + "implementation_name": "cpython", + "implementation_version": "3.6.4", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "4.4.0-112-generic", + "platform_system": "Linux", + "platform_version": "#135-Ubuntu SMP Fri Jan 19 11:48:36 UTC 2018", + "python_full_version": "3.6.4", + "python_version": "3.6", + "sys_platform": "linux" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.6" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.python.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "antlr4-python3-runtime": { + "hashes": [ + "sha256:1b26b72c4492cef310542da10bf6b2ab4aa1775618fc6003f75b55ae9eaa3fd3" + ], + "version": "==4.7.1" + } + }, + "develop": { + "attrs": { + "hashes": [ + "sha256:a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450", + "sha256:1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9" + ], + "version": "==17.4.0" + }, + "autopep8": { + "hashes": [ + "sha256:c7be71ab0cb2f50c9c22c82f0c9acaafc6f57492c3fbfee9790c415005c2b9a5" + ], + "version": "==1.3.4" + }, + "pluggy": { + "hashes": [ + "sha256:7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff" + ], + "version": "==0.6.0" + }, + "py": { + "hashes": [ + "sha256:8cca5c229d225f8c1e3085be4fcf306090b00850fefad892f9d96c7b6e2f310f", + "sha256:ca18943e28235417756316bfada6cd96b23ce60dd532642690dcfdaba988a76d" + ], + "version": "==1.5.2" + }, + "pycodestyle": { + "hashes": [ + "sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9", + "sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766" + ], + "version": "==2.3.1" + }, + "pytest": { + "hashes": [ + "sha256:b84878865558194630c6147f44bdaef27222a9f153bbd4a08908b16bf285e0b1", + "sha256:53548280ede7818f4dc2ad96608b9f08ae2cc2ca3874f2ceb6f97e3583f25bc4" + ], + "version": "==3.3.2" + }, + "six": { + "hashes": [ + "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb", + "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9" + ], + "version": "==1.11.0" + } + } +} diff --git a/README.md b/README.md index 4b3dc3a..fecb952 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,44 @@ +# Electro Grammar Next + +## Goals + +- Parse descriptions of common electronic components + - Primary: + - Resistors + - Capacitors + - LEDs + - Secondary + - Inductors + - Transistors + - Tertiary: + - Try and cover the [Common Parts Library][CPL] +- Be usable from multiple languages: + - Primary: + - Javascript (Browser & Node) + - Python + - Go + - Java + - Optional: + - Rust + - Haskell + +## Output Details +In as much as possible the output should match that of the existing JS implementation except for: + +- Unused i.e. ignored input should be returned. I made a [demo]( http://cloud.monostable.co.uk/egignore/) of an initial implementation but we need to change the lexing strategy to eek out th edge cases +- The grammar itself should work on "incomplete" descriptions i.e. component specs. E.g. the input `50V` should result in `{voltage_rating: 50}`. +- `size` should be renamed to `package` +- `characteristic` should be renamed to `dielectric` or `capacitor_dielectric` + + +## Open Questions + +- Is floating point a good unit for capcitance, resistance e.t.c.? I noticed some floating point errors in the Python port when using them for calculation. What's a good alternative? +- Should we use Antlr or Pest or something else? +- Should we align the types with Octopart's taxonomy? (e.g. browsing parts from https://octopart.com) + +--- + # Electro Grammar [![Build Status][BADGE]][BUILD] [![Sauce Test Status](https://saucelabs.com/browser-matrix/electro-grammar.svg)](https://saucelabs.com/u/electro-grammar) diff --git a/db/.gitkeep b/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/bundle.js b/docs/bundle.js deleted file mode 100644 index b6e625e..0000000 --- a/docs/bundle.js +++ /dev/null @@ -1,2512 +0,0 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - function _flatten(arr, res) { - var i = 0, - cur; - var len = arr.length; - for (; i < len; i++) { - cur = arr[i]; - Array.isArray(cur) ? _flatten(cur, res) : res.push(cur); - } - return res; - } - - function flatten(arr) { - return _flatten(arr, []); - } - - function filter(d) { - return d.filter(function (t) { - return t != null; - }); - } - - function nuller() { - return null; - } - - var toImperial = { - '0402': '01005', - '0603': '0201', - '1005': '0402', - '1608': '0603', - '2012': '0805', - '2520': '1008', - '3216': '1206', - '3225': '1210', - '4516': '1806', - '4532': '1812', - '5025': '2010', - '6332': '2512' - }; - - function type(t) { - return function (d) { - return [{ type: t }].concat(d); - }; - } - - function capacitance(d) { - var quantity = d[0]; - var metricPrefix = d[2]; - var farad = d[4]; - - return { capacitance: parseFloat(quantity + (metricPrefix || '')) }; - } - - function resistance(d, i, reject) { - var integral = d[0]; - var metricPrefix = d[2][0]; - var fractional = d[2][1]; - var ohm = d[2][2]; - if (fractional) { - if (/\./.test(integral.toString())) { - return reject; - } - var quantity = integral + '.' + fractional; - } else { - var quantity = integral; - } - return { resistance: parseFloat(quantity + (metricPrefix || '')) }; - } - var grammar = { - Lexer: undefined, - ParserRules: [{ "name": "unsigned_int$ebnf$1", "symbols": [/[0-9]/] }, { "name": "unsigned_int$ebnf$1", "symbols": ["unsigned_int$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "unsigned_int", "symbols": ["unsigned_int$ebnf$1"], "postprocess": function postprocess(d) { - return parseInt(d[0].join("")); - } - }, { "name": "int$ebnf$1$subexpression$1", "symbols": [{ "literal": "-" }] }, { "name": "int$ebnf$1$subexpression$1", "symbols": [{ "literal": "+" }] }, { "name": "int$ebnf$1", "symbols": ["int$ebnf$1$subexpression$1"], "postprocess": id }, { "name": "int$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "int$ebnf$2", "symbols": [/[0-9]/] }, { "name": "int$ebnf$2", "symbols": ["int$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "int", "symbols": ["int$ebnf$1", "int$ebnf$2"], "postprocess": function postprocess(d) { - if (d[0]) { - return parseInt(d[0][0] + d[1].join("")); - } else { - return parseInt(d[1].join("")); - } - } - }, { "name": "unsigned_decimal$ebnf$1", "symbols": [/[0-9]/] }, { "name": "unsigned_decimal$ebnf$1", "symbols": ["unsigned_decimal$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", "symbols": [/[0-9]/] }, { "name": "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", "symbols": ["unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "unsigned_decimal$ebnf$2$subexpression$1", "symbols": [{ "literal": "." }, "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1"] }, { "name": "unsigned_decimal$ebnf$2", "symbols": ["unsigned_decimal$ebnf$2$subexpression$1"], "postprocess": id }, { "name": "unsigned_decimal$ebnf$2", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "unsigned_decimal", "symbols": ["unsigned_decimal$ebnf$1", "unsigned_decimal$ebnf$2"], "postprocess": function postprocess(d) { - return parseFloat(d[0].join("") + (d[1] ? "." + d[1][1].join("") : "")); - } - }, { "name": "decimal$ebnf$1", "symbols": [{ "literal": "-" }], "postprocess": id }, { "name": "decimal$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "decimal$ebnf$2", "symbols": [/[0-9]/] }, { "name": "decimal$ebnf$2", "symbols": ["decimal$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "decimal$ebnf$3$subexpression$1$ebnf$1", "symbols": [/[0-9]/] }, { "name": "decimal$ebnf$3$subexpression$1$ebnf$1", "symbols": ["decimal$ebnf$3$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "decimal$ebnf$3$subexpression$1", "symbols": [{ "literal": "." }, "decimal$ebnf$3$subexpression$1$ebnf$1"] }, { "name": "decimal$ebnf$3", "symbols": ["decimal$ebnf$3$subexpression$1"], "postprocess": id }, { "name": "decimal$ebnf$3", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "decimal", "symbols": ["decimal$ebnf$1", "decimal$ebnf$2", "decimal$ebnf$3"], "postprocess": function postprocess(d) { - return parseFloat((d[0] || "") + d[1].join("") + (d[2] ? "." + d[2][1].join("") : "")); - } - }, { "name": "percentage", "symbols": ["decimal", { "literal": "%" }], "postprocess": function postprocess(d) { - return d[0] / 100; - } - }, { "name": "jsonfloat$ebnf$1", "symbols": [{ "literal": "-" }], "postprocess": id }, { "name": "jsonfloat$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "jsonfloat$ebnf$2", "symbols": [/[0-9]/] }, { "name": "jsonfloat$ebnf$2", "symbols": ["jsonfloat$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "jsonfloat$ebnf$3$subexpression$1$ebnf$1", "symbols": [/[0-9]/] }, { "name": "jsonfloat$ebnf$3$subexpression$1$ebnf$1", "symbols": ["jsonfloat$ebnf$3$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "jsonfloat$ebnf$3$subexpression$1", "symbols": [{ "literal": "." }, "jsonfloat$ebnf$3$subexpression$1$ebnf$1"] }, { "name": "jsonfloat$ebnf$3", "symbols": ["jsonfloat$ebnf$3$subexpression$1"], "postprocess": id }, { "name": "jsonfloat$ebnf$3", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "symbols": [/[+-]/], "postprocess": id }, { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$2", "symbols": [/[0-9]/] }, { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$2", "symbols": ["jsonfloat$ebnf$4$subexpression$1$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "jsonfloat$ebnf$4$subexpression$1", "symbols": [/[eE]/, "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "jsonfloat$ebnf$4$subexpression$1$ebnf$2"] }, { "name": "jsonfloat$ebnf$4", "symbols": ["jsonfloat$ebnf$4$subexpression$1"], "postprocess": id }, { "name": "jsonfloat$ebnf$4", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "jsonfloat", "symbols": ["jsonfloat$ebnf$1", "jsonfloat$ebnf$2", "jsonfloat$ebnf$3", "jsonfloat$ebnf$4"], "postprocess": function postprocess(d) { - return parseFloat((d[0] || "") + d[1].join("") + (d[2] ? "." + d[2][1].join("") : "") + (d[3] ? "e" + (d[3][1] || "+") + d[3][2].join("") : "")); - } - }, { "name": "_$ebnf$1", "symbols": [] }, { "name": "_$ebnf$1", "symbols": ["_$ebnf$1", /[\s]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "_", "symbols": ["_$ebnf$1"], "postprocess": nuller }, { "name": "__$ebnf$1", "symbols": [/[\s]/] }, { "name": "__$ebnf$1", "symbols": ["__$ebnf$1", /[\s]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "__", "symbols": ["__$ebnf$1"], "postprocess": nuller }, { "name": "A", "symbols": [{ "literal": "A" }] }, { "name": "A", "symbols": [{ "literal": "a" }] }, { "name": "B", "symbols": [{ "literal": "B" }] }, { "name": "B", "symbols": [{ "literal": "b" }] }, { "name": "C", "symbols": [{ "literal": "C" }] }, { "name": "C", "symbols": [{ "literal": "c" }] }, { "name": "D", "symbols": [{ "literal": "D" }] }, { "name": "D", "symbols": [{ "literal": "d" }] }, { "name": "E", "symbols": [{ "literal": "E" }] }, { "name": "E", "symbols": [{ "literal": "e" }] }, { "name": "F", "symbols": [{ "literal": "F" }] }, { "name": "F", "symbols": [{ "literal": "f" }] }, { "name": "G", "symbols": [{ "literal": "G" }] }, { "name": "G", "symbols": [{ "literal": "g" }] }, { "name": "H", "symbols": [{ "literal": "H" }] }, { "name": "H", "symbols": [{ "literal": "h" }] }, { "name": "I", "symbols": [{ "literal": "I" }] }, { "name": "I", "symbols": [{ "literal": "i" }] }, { "name": "J", "symbols": [{ "literal": "J" }] }, { "name": "J", "symbols": [{ "literal": "j" }] }, { "name": "K", "symbols": [{ "literal": "K" }] }, { "name": "K", "symbols": [{ "literal": "k" }] }, { "name": "L", "symbols": [{ "literal": "L" }] }, { "name": "L", "symbols": [{ "literal": "l" }] }, { "name": "M", "symbols": [{ "literal": "M" }] }, { "name": "M", "symbols": [{ "literal": "m" }] }, { "name": "N", "symbols": [{ "literal": "N" }] }, { "name": "N", "symbols": [{ "literal": "n" }] }, { "name": "O", "symbols": [{ "literal": "O" }] }, { "name": "O", "symbols": [{ "literal": "o" }] }, { "name": "P", "symbols": [{ "literal": "P" }] }, { "name": "P", "symbols": [{ "literal": "p" }] }, { "name": "Q", "symbols": [{ "literal": "Q" }] }, { "name": "Q", "symbols": [{ "literal": "q" }] }, { "name": "R", "symbols": [{ "literal": "R" }] }, { "name": "R", "symbols": [{ "literal": "r" }] }, { "name": "S", "symbols": [{ "literal": "S" }] }, { "name": "S", "symbols": [{ "literal": "s" }] }, { "name": "T", "symbols": [{ "literal": "T" }] }, { "name": "T", "symbols": [{ "literal": "t" }] }, { "name": "U", "symbols": [{ "literal": "U" }] }, { "name": "U", "symbols": [{ "literal": "u" }] }, { "name": "V", "symbols": [{ "literal": "V" }] }, { "name": "V", "symbols": [{ "literal": "v" }] }, { "name": "W", "symbols": [{ "literal": "W" }] }, { "name": "W", "symbols": [{ "literal": "w" }] }, { "name": "X", "symbols": [{ "literal": "X" }] }, { "name": "X", "symbols": [{ "literal": "x" }] }, { "name": "Y", "symbols": [{ "literal": "Y" }] }, { "name": "Y", "symbols": [{ "literal": "y" }] }, { "name": "Z", "symbols": [{ "literal": "Z" }] }, { "name": "Z", "symbols": [{ "literal": "z" }] }, { "name": "exa", "symbols": [{ "literal": "E" }] }, { "name": "exa", "symbols": ["E", "X", "A"] }, { "name": "peta", "symbols": [{ "literal": "P" }] }, { "name": "peta", "symbols": ["P", "E", "T", "A"] }, { "name": "tera", "symbols": [{ "literal": "T" }] }, { "name": "tera", "symbols": ["T", "E", "R", "A"] }, { "name": "giga", "symbols": [{ "literal": "G" }] }, { "name": "giga", "symbols": ["G", "I", "G", "A"] }, { "name": "mega", "symbols": [{ "literal": "M" }] }, { "name": "mega", "symbols": ["M", "E", "G", "A"] }, { "name": "kilo", "symbols": [{ "literal": "k" }] }, { "name": "kilo", "symbols": ["K", "I", "L", "O"] }, { "name": "hecto", "symbols": [{ "literal": "h" }] }, { "name": "hecto", "symbols": ["H", "E", "C", "T", "O"] }, { "name": "deci", "symbols": [{ "literal": "d" }] }, { "name": "deci", "symbols": ["D", "E", "C", "I"] }, { "name": "centi", "symbols": [{ "literal": "c" }] }, { "name": "centi", "symbols": ["C", "E", "N", "T", "I"] }, { "name": "milli", "symbols": [{ "literal": "m" }] }, { "name": "milli", "symbols": ["M", "I", "L", "L", "I"] }, { "name": "micro", "symbols": [{ "literal": "u" }] }, { "name": "micro", "symbols": [/[\u03BC]/] }, { "name": "micro", "symbols": [/[\u00B5]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDECD]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDF07]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDF41]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDF7B]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDFB5]/] }, { "name": "micro", "symbols": ["M", "I", "C", "R", "O"] }, { "name": "nano", "symbols": [{ "literal": "n" }] }, { "name": "nano", "symbols": ["N", "A", "N", "O"] }, { "name": "pico", "symbols": [{ "literal": "p" }] }, { "name": "pico", "symbols": ["P", "I", "C", "O"] }, { "name": "femto", "symbols": [{ "literal": "f" }] }, { "name": "femto", "symbols": ["F", "E", "M", "T", "O"] }, { "name": "atto", "symbols": [{ "literal": "a" }] }, { "name": "atto", "symbols": ["A", "T", "T", "O"] }, { "name": "packageSize", "symbols": ["_packageSize"], "postprocess": function postprocess(d) { - return { size: filter(flatten(d)).join('') }; - } - }, { "name": "_packageSize", "symbols": ["_imperialSize"] }, { "name": "_packageSize", "symbols": ["_metricSize"] }, { "name": "_imperialSize$string$1", "symbols": [{ "literal": "0" }, { "literal": "1" }, { "literal": "0" }, { "literal": "0" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$1"] }, { "name": "_imperialSize$string$2", "symbols": [{ "literal": "0" }, { "literal": "2" }, { "literal": "0" }, { "literal": "1" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$2"] }, { "name": "_imperialSize$string$3", "symbols": [{ "literal": "0" }, { "literal": "4" }, { "literal": "0" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$3"] }, { "name": "_imperialSize$string$4", "symbols": [{ "literal": "0" }, { "literal": "6" }, { "literal": "0" }, { "literal": "3" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$4"] }, { "name": "_imperialSize$string$5", "symbols": [{ "literal": "0" }, { "literal": "8" }, { "literal": "0" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$5"] }, { "name": "_imperialSize$string$6", "symbols": [{ "literal": "1" }, { "literal": "0" }, { "literal": "0" }, { "literal": "8" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$6"] }, { "name": "_imperialSize$string$7", "symbols": [{ "literal": "1" }, { "literal": "2" }, { "literal": "0" }, { "literal": "6" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$7"] }, { "name": "_imperialSize$string$8", "symbols": [{ "literal": "1" }, { "literal": "2" }, { "literal": "1" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$8"] }, { "name": "_imperialSize$string$9", "symbols": [{ "literal": "1" }, { "literal": "8" }, { "literal": "0" }, { "literal": "6" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$9"] }, { "name": "_imperialSize$string$10", "symbols": [{ "literal": "2" }, { "literal": "0" }, { "literal": "1" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$10"] }, { "name": "_imperialSize$string$11", "symbols": [{ "literal": "2" }, { "literal": "5" }, { "literal": "1" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$11"] }, { "name": "_metricSize$ebnf$1", "symbols": [] }, { "name": "_metricSize$ebnf$1", "symbols": ["_metricSize$ebnf$1", /[\s]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "_metricSize", "symbols": ["__metricSize", "_metricSize$ebnf$1", "M", "E", "T", "R", "I", "C"], "postprocess": function postprocess(d) { - return toImperial[d[0]]; - } }, { "name": "_metricSize$ebnf$2", "symbols": [] }, { "name": "_metricSize$ebnf$2", "symbols": ["_metricSize$ebnf$2", /[\s]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "_metricSize", "symbols": ["M", "E", "T", "R", "I", "C", "_metricSize$ebnf$2", "__metricSize"], "postprocess": function postprocess(d) { - return toImperial[d[7]]; - } }, { "name": "_metricSize", "symbols": ["unambigiousMetricSize"], "postprocess": function postprocess(d) { - return toImperial[d[0]]; - } }, { "name": "unambigiousMetricSize$string$1", "symbols": [{ "literal": "1" }, { "literal": "0" }, { "literal": "0" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$1"] }, { "name": "unambigiousMetricSize$string$2", "symbols": [{ "literal": "1" }, { "literal": "6" }, { "literal": "0" }, { "literal": "8" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$2"] }, { "name": "unambigiousMetricSize$string$3", "symbols": [{ "literal": "2" }, { "literal": "0" }, { "literal": "1" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$3"] }, { "name": "unambigiousMetricSize$string$4", "symbols": [{ "literal": "2" }, { "literal": "5" }, { "literal": "2" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$4"] }, { "name": "unambigiousMetricSize$string$5", "symbols": [{ "literal": "3" }, { "literal": "2" }, { "literal": "1" }, { "literal": "6" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$5"] }, { "name": "unambigiousMetricSize$string$6", "symbols": [{ "literal": "3" }, { "literal": "2" }, { "literal": "2" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$6"] }, { "name": "unambigiousMetricSize$string$7", "symbols": [{ "literal": "4" }, { "literal": "5" }, { "literal": "1" }, { "literal": "6" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$7"] }, { "name": "unambigiousMetricSize$string$8", "symbols": [{ "literal": "5" }, { "literal": "0" }, { "literal": "2" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$8"] }, { "name": "unambigiousMetricSize$string$9", "symbols": [{ "literal": "6" }, { "literal": "3" }, { "literal": "3" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$9"] }, { "name": "__metricSize", "symbols": ["unambigiousMetricSize"] }, { "name": "__metricSize$string$1", "symbols": [{ "literal": "0" }, { "literal": "4" }, { "literal": "0" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "__metricSize", "symbols": ["__metricSize$string$1"] }, { "name": "__metricSize$string$2", "symbols": [{ "literal": "0" }, { "literal": "6" }, { "literal": "0" }, { "literal": "3" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "__metricSize", "symbols": ["__metricSize$string$2"] }, { "name": "main", "symbols": ["_", "main_", "_"], "postprocess": function postprocess(d) { - return filter(flatten(d)); - } }, { "name": "main_", "symbols": ["packageSize"], "postprocess": type('unknown') }, { "name": "main_", "symbols": ["component"] }, { "name": "component", "symbols": ["capacitor"], "postprocess": type('capacitor') }, { "name": "component", "symbols": ["resistor"], "postprocess": type('resistor') }, { "name": "component", "symbols": ["led"], "postprocess": type('led') }, { "name": "capacitor", "symbols": ["cSpecs", "capacitance", "cSpecs"] }, { "name": "capacitor$subexpression$1", "symbols": ["capacitanceNoFarad"] }, { "name": "capacitor$subexpression$1", "symbols": ["capacitance"] }, { "name": "capacitor", "symbols": ["cap", "cSpecs", "capacitor$subexpression$1", "cSpecs"] }, { "name": "cap$ebnf$1", "symbols": ["A"], "postprocess": id }, { "name": "cap$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "cap$ebnf$2", "symbols": ["P"], "postprocess": id }, { "name": "cap$ebnf$2", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "cap$ebnf$3", "symbols": ["A"], "postprocess": id }, { "name": "cap$ebnf$3", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "cap$ebnf$4", "symbols": ["C"], "postprocess": id }, { "name": "cap$ebnf$4", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "cap$ebnf$5", "symbols": ["I"], "postprocess": id }, { "name": "cap$ebnf$5", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "cap$ebnf$6", "symbols": ["T"], "postprocess": id }, { "name": "cap$ebnf$6", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "cap$ebnf$7", "symbols": ["O"], "postprocess": id }, { "name": "cap$ebnf$7", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "cap$ebnf$8", "symbols": ["R"], "postprocess": id }, { "name": "cap$ebnf$8", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "cap", "symbols": ["C", "cap$ebnf$1", "cap$ebnf$2", "cap$ebnf$3", "cap$ebnf$4", "cap$ebnf$5", "cap$ebnf$6", "cap$ebnf$7", "cap$ebnf$8"], "postprocess": nuller }, { "name": "cSpecs$ebnf$1", "symbols": [] }, { "name": "cSpecs$ebnf$1$subexpression$1", "symbols": ["_", "cSpec", "_"] }, { "name": "cSpecs$ebnf$1", "symbols": ["cSpecs$ebnf$1", "cSpecs$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "cSpecs", "symbols": ["cSpecs$ebnf$1"] }, { "name": "cSpecs", "symbols": ["__"] }, { "name": "cSpec", "symbols": ["tolerance"] }, { "name": "cSpec", "symbols": ["characteristic"] }, { "name": "cSpec", "symbols": ["voltage_rating"] }, { "name": "cSpec", "symbols": ["packageSize"] }, { "name": "voltage_rating", "symbols": ["decimal", "_", "V"], "postprocess": function postprocess(d) { - return { voltage_rating: d[0] }; - } }, { "name": "characteristic", "symbols": ["characteristic_"], "postprocess": function postprocess(d) { - return { characteristic: d[0][0] }; - } }, { "name": "characteristic_", "symbols": ["class1"] }, { "name": "characteristic_", "symbols": ["class2"] }, { "name": "class1", "symbols": ["class1_ceramic_name"], "postprocess": id }, { "name": "class1", "symbols": ["class1_eia_code"], "postprocess": id }, { "name": "class1", "symbols": ["class1_ceramic_name", "_", { "literal": "/" }, "_", "class1_eia_code"], "postprocess": id }, { "name": "class1", "symbols": ["class1_eia_code", "_", { "literal": "/" }, "_", "class1_ceramic_name"], "postprocess": id }, { "name": "class1_ceramic_name", "symbols": ["C", { "literal": "0" }, "G"], "postprocess": function postprocess() { - return 'C0G'; - } }, { "name": "class1_ceramic_name$string$1", "symbols": [{ "literal": "1" }, { "literal": "0" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["P", "class1_ceramic_name$string$1"], "postprocess": function postprocess() { - return 'M7G'; - } }, { "name": "class1_ceramic_name$string$2", "symbols": [{ "literal": "3" }, { "literal": "3" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$2"], "postprocess": function postprocess() { - return 'H2G'; - } }, { "name": "class1_ceramic_name$string$3", "symbols": [{ "literal": "7" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$3"], "postprocess": function postprocess() { - return 'L2G'; - } }, { "name": "class1_ceramic_name$string$4", "symbols": [{ "literal": "1" }, { "literal": "5" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$4"], "postprocess": function postprocess() { - return 'P2H'; - } }, { "name": "class1_ceramic_name$string$5", "symbols": [{ "literal": "2" }, { "literal": "2" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$5"], "postprocess": function postprocess() { - return 'R2H'; - } }, { "name": "class1_ceramic_name$string$6", "symbols": [{ "literal": "3" }, { "literal": "3" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$6"], "postprocess": function postprocess() { - return 'S2H'; - } }, { "name": "class1_ceramic_name$string$7", "symbols": [{ "literal": "4" }, { "literal": "7" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$7"], "postprocess": function postprocess() { - return 'T2H'; - } }, { "name": "class1_ceramic_name$string$8", "symbols": [{ "literal": "7" }, { "literal": "5" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$8"], "postprocess": function postprocess() { - return 'U2J'; - } }, { "name": "class1_ceramic_name$string$9", "symbols": [{ "literal": "1" }, { "literal": "0" }, { "literal": "0" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$9"], "postprocess": function postprocess() { - return 'Q3K'; - } }, { "name": "class1_ceramic_name$string$10", "symbols": [{ "literal": "1" }, { "literal": "5" }, { "literal": "0" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$10"], "postprocess": function postprocess() { - return 'P3K'; - } }, { "name": "class1_eia_code", "symbols": ["N", "P", { "literal": "0" }], "postprocess": function postprocess() { - return 'C0G'; - } }, { "name": "class1_eia_code", "symbols": ["M", { "literal": "7" }, "G"], "postprocess": function postprocess() { - return 'M7G'; - } }, { "name": "class1_eia_code", "symbols": ["H", { "literal": "2" }, "G"], "postprocess": function postprocess() { - return 'H2G'; - } }, { "name": "class1_eia_code", "symbols": ["L", { "literal": "2" }, "G"], "postprocess": function postprocess() { - return 'L2G'; - } }, { "name": "class1_eia_code", "symbols": ["P", { "literal": "2" }, "H"], "postprocess": function postprocess() { - return 'P2H'; - } }, { "name": "class1_eia_code", "symbols": ["R", { "literal": "2" }, "H"], "postprocess": function postprocess() { - return 'R2H'; - } }, { "name": "class1_eia_code", "symbols": ["S", { "literal": "2" }, "H"], "postprocess": function postprocess() { - return 'S2H'; - } }, { "name": "class1_eia_code", "symbols": ["T", { "literal": "2" }, "H"], "postprocess": function postprocess() { - return 'T2H'; - } }, { "name": "class1_eia_code", "symbols": ["U", { "literal": "2" }, "J"], "postprocess": function postprocess() { - return 'U2J'; - } }, { "name": "class1_eia_code", "symbols": ["Q", { "literal": "3" }, "K"], "postprocess": function postprocess() { - return 'Q3K'; - } }, { "name": "class1_eia_code", "symbols": ["P", { "literal": "3" }, "K"], "postprocess": function postprocess() { - return 'P3K'; - } }, { "name": "class2", "symbols": ["class2_letter", "class2_number", "class2_code"], "postprocess": function postprocess(d) { - return d.join('').toUpperCase(); - } }, { "name": "class2_letter", "symbols": ["X"] }, { "name": "class2_letter", "symbols": ["Y"] }, { "name": "class2_letter", "symbols": ["Z"] }, { "name": "class2_number", "symbols": [{ "literal": "4" }] }, { "name": "class2_number", "symbols": [{ "literal": "5" }] }, { "name": "class2_number", "symbols": [{ "literal": "6" }] }, { "name": "class2_number", "symbols": [{ "literal": "7" }] }, { "name": "class2_number", "symbols": [{ "literal": "8" }] }, { "name": "class2_number", "symbols": [{ "literal": "9" }] }, { "name": "class2_code", "symbols": ["P"] }, { "name": "class2_code", "symbols": ["R"] }, { "name": "class2_code", "symbols": ["S"] }, { "name": "class2_code", "symbols": ["T"] }, { "name": "class2_code", "symbols": ["U"] }, { "name": "class2_code", "symbols": ["V"] }, { "name": "tolerance$ebnf$1$subexpression$1", "symbols": ["plusMinus", "_"] }, { "name": "tolerance$ebnf$1", "symbols": ["tolerance$ebnf$1$subexpression$1"], "postprocess": id }, { "name": "tolerance$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "tolerance", "symbols": ["tolerance$ebnf$1", "decimal", "_", { "literal": "%" }], "postprocess": function postprocess(d) { - return { tolerance: d[1] }; - } }, { "name": "plusMinus$string$1", "symbols": [{ "literal": "+" }, { "literal": "/" }, { "literal": "-" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "plusMinus", "symbols": ["plusMinus$string$1"] }, { "name": "plusMinus", "symbols": [{ "literal": "±" }] }, { "name": "plusMinus$string$2", "symbols": [{ "literal": "+" }, { "literal": "-" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "plusMinus", "symbols": ["plusMinus$string$2"] }, { "name": "capacitance$ebnf$1", "symbols": ["cMetricPrefix"], "postprocess": id }, { "name": "capacitance$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "capacitance", "symbols": ["decimal", "_", "capacitance$ebnf$1", "_", "farad"], "postprocess": capacitance }, { "name": "capacitanceNoFarad$ebnf$1", "symbols": ["cMetricPrefix"], "postprocess": id }, { "name": "capacitanceNoFarad$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "capacitanceNoFarad", "symbols": ["decimal", "_", "capacitanceNoFarad$ebnf$1"], "postprocess": capacitance }, { "name": "farad", "symbols": ["F"], "postprocess": nuller }, { "name": "farad", "symbols": ["F", "A", "R", "A", "D"], "postprocess": nuller }, { "name": "resistor", "symbols": ["rSpecs", "resistance", "rSpecs"] }, { "name": "rSpecs$ebnf$1", "symbols": [] }, { "name": "rSpecs$ebnf$1$subexpression$1", "symbols": ["_", "rSpec", "_"] }, { "name": "rSpecs$ebnf$1", "symbols": ["rSpecs$ebnf$1", "rSpecs$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "rSpecs", "symbols": ["rSpecs$ebnf$1"] }, { "name": "rSpecs", "symbols": ["__"] }, { "name": "rSpec", "symbols": ["tolerance"] }, { "name": "rSpec", "symbols": ["power_rating"] }, { "name": "rSpec", "symbols": ["packageSize"] }, { "name": "power_rating$ebnf$1", "symbols": ["powerMetricPrefix"], "postprocess": id }, { "name": "power_rating$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "power_rating", "symbols": ["decimal", "_", "power_rating$ebnf$1", "_", "watts"], "postprocess": function postprocess(d) { - var quantity = d[0]; - var metricPrefix = d[2]; - return { power_rating: parseFloat(quantity + (metricPrefix || '')) }; - } - }, { "name": "watts", "symbols": ["watts_"], "postprocess": nuller }, { "name": "watts_", "symbols": ["W"] }, { "name": "watts_", "symbols": ["W", "A", "T", "T", "S"] }, { "name": "resistance", "symbols": ["decimal", "_", "rest"], "postprocess": resistance }, { "name": "rest$ebnf$1", "symbols": ["int"], "postprocess": id }, { "name": "rest$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "rest$ebnf$2$subexpression$1", "symbols": ["_", "ohm"] }, { "name": "rest$ebnf$2", "symbols": ["rest$ebnf$2$subexpression$1"], "postprocess": id }, { "name": "rest$ebnf$2", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "rest", "symbols": ["rMetricPrefix", "rest$ebnf$1", "rest$ebnf$2"] }, { "name": "rest", "symbols": ["ohm"] }, { "name": "ohm", "symbols": ["ohm_"], "postprocess": nuller }, { "name": "ohm_", "symbols": ["O", "H", "M"] }, { "name": "ohm_", "symbols": [{ "literal": "Ω" }] }, { "name": "ohm_", "symbols": [{ "literal": "Ω" }] }, { "name": "led", "symbols": ["led_letters", "ledSpecs"] }, { "name": "led", "symbols": ["ledSpecs", "led_letters"] }, { "name": "led", "symbols": ["ledSpecs", "led_letters", "ledSpecs"] }, { "name": "led_letters", "symbols": ["L", "E", "D"], "postprocess": nuller }, { "name": "ledSpecs$ebnf$1$subexpression$1", "symbols": ["_", "ledSpec", "_"] }, { "name": "ledSpecs$ebnf$1", "symbols": ["ledSpecs$ebnf$1$subexpression$1"] }, { "name": "ledSpecs$ebnf$1$subexpression$2", "symbols": ["_", "ledSpec", "_"] }, { "name": "ledSpecs$ebnf$1", "symbols": ["ledSpecs$ebnf$1", "ledSpecs$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "ledSpecs", "symbols": ["ledSpecs$ebnf$1"] }, { "name": "ledSpec", "symbols": ["packageSize"] }, { "name": "ledSpec", "symbols": ["color"] }, { "name": "color", "symbols": ["color_name"], "postprocess": function postprocess(d) { - return { color: d[0] }; - } }, { "name": "color_name", "symbols": ["R", "E", "D"], "postprocess": function postprocess() { - return 'red'; - } }, { "name": "color_name", "symbols": ["G", "R", "E", "E", "N"], "postprocess": function postprocess() { - return 'green'; - } }, { "name": "color_name", "symbols": ["B", "L", "U", "E"], "postprocess": function postprocess() { - return 'blue'; - } }, { "name": "color_name", "symbols": ["Y", "E", "L", "L", "O", "W"], "postprocess": function postprocess() { - return 'yellow'; - } }, { "name": "color_name", "symbols": ["O", "R", "A", "N", "G", "E"], "postprocess": function postprocess() { - return 'orange'; - } }, { "name": "color_name", "symbols": ["W", "H", "I", "T", "E"], "postprocess": function postprocess() { - return 'white'; - } }, { "name": "color_name", "symbols": ["A", "M", "B", "E", "R"], "postprocess": function postprocess() { - return 'amber'; - } }, { "name": "color_name", "symbols": ["C", "Y", "A", "N"], "postprocess": function postprocess() { - return 'cyan'; - } }, { "name": "color_name", "symbols": ["P", "U", "R", "P", "L", "E"], "postprocess": function postprocess() { - return 'purple'; - } }, { "name": "color_name", "symbols": ["Y", "E", "L", "L", "O", "W", "_", "G", "R", "E", "E", "N"], "postprocess": function postprocess() { - return 'yellow green'; - } }, { "name": "powerMetricPrefix", "symbols": ["giga"], "postprocess": function postprocess() { - return 'e9 '; - } }, { "name": "powerMetricPrefix", "symbols": ["mega"], "postprocess": function postprocess() { - return 'e6 '; - } }, { "name": "powerMetricPrefix", "symbols": ["kilo"], "postprocess": function postprocess() { - return 'e3 '; - } }, { "name": "powerMetricPrefix", "symbols": ["milli"], "postprocess": function postprocess() { - return 'e-3 '; - } }, { "name": "powerMetricPrefix", "symbols": ["micro"], "postprocess": function postprocess() { - return 'e-6 '; - } }, { "name": "powerMetricPrefix", "symbols": ["nano"], "postprocess": function postprocess() { - return 'e-9 '; - } }, { "name": "powerMetricPrefix", "symbols": ["pico"], "postprocess": function postprocess() { - return 'e-12'; - } }, { "name": "powerMetricPrefix", "symbols": ["femto"], "postprocess": function postprocess() { - return 'e-15'; - } }, { "name": "rMetricPrefix", "symbols": ["giga"], "postprocess": function postprocess() { - return 'e9 '; - } }, { "name": "rMetricPrefix", "symbols": ["mega"], "postprocess": function postprocess() { - return 'e6 '; - } }, { "name": "rMetricPrefix", "symbols": ["kilo"], "postprocess": function postprocess() { - return 'e3 '; - } }, { "name": "rMetricPrefix", "symbols": ["R"], "postprocess": function postprocess() { - return ''; - } }, { "name": "cMetricPrefix", "symbols": ["micro"], "postprocess": function postprocess() { - return 'e-6 '; - } }, { "name": "cMetricPrefix", "symbols": ["nano"], "postprocess": function postprocess() { - return 'e-9 '; - } }, { "name": "cMetricPrefix", "symbols": ["pico"], "postprocess": function postprocess() { - return 'e-12'; - } }], - ParserStart: "main" - }; - if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { - module.exports = grammar; - } else { - window.grammar = grammar; - } -})(); -},{}],7:[function(require,module,exports){ -'use strict'; - -var parse = require('./parse'); -var matchCPL = require('./match_cpl'); -module.exports = { parse: parse, matchCPL: matchCPL }; -},{"./match_cpl":8,"./parse":9}],8:[function(require,module,exports){ -'use strict'; - -var resistors = require('./cpl_resistors'); -var capacitors = require('./cpl_capacitors'); -var leds = require('./cpl_leds'); - -function matchCPL(component) { - component = component || {}; - switch (component.type) { - case 'capacitor': - return matchCapacitor(component); - case 'resistor': - return matchResistor(component); - case 'led': - return matchLED(component); - } - return []; -} - -function matchResistor(c) { - return resistors.reduce(function (prev, cpl) { - var resistance = cpl.resistance === c.resistance; - var size = c.size == null || cpl.size === c.size; - var tolerance = c.tolerance == null || cpl.tolerance <= c.tolerance; - var power_rating = c.power_rating == null || cpl.power_rating >= c.power_rating; - if (resistance && size && tolerance && power_rating) { - return prev.concat([cpl.cplid]); - } - return prev; - }, []); -} - -function matchCapacitor(c) { - return capacitors.reduce(function (prev, cpl) { - var capacitance = cpl.capacitance === c.capacitance; - var size = c.size == null || cpl.size === c.size; - var characteristic = c.characteristic == null || cpl.characteristic === c.characteristic; - var tolerance = c.tolerance == null || cpl.tolerance <= c.tolerance; - var voltage_rating = c.voltage_rating == null || cpl.voltage_rating >= c.voltage_rating; - if (capacitance && size && characteristic && tolerance && voltage_rating) { - return prev.concat([cpl.cplid]); - } - return prev; - }, []); -} - -function matchLED(c) { - return leds.reduce(function (prev, cpl) { - var color = c.color == null || cpl.color === c.color; - var size = c.size == null || cpl.size === c.size; - if (color && size) { - return prev.concat([cpl.cplid]); - } - return prev; - }, []); -} - -module.exports = matchCPL; -},{"./cpl_capacitors":2,"./cpl_leds":3,"./cpl_resistors":4}],9:[function(require,module,exports){ -'use strict'; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var moo = require('moo'); -var nearley = require('nearley'); -var equals = require('./equals'); - -var compiledGrammar = require('./grammar'); -var grammar = nearley.Grammar.fromCompiled(compiledGrammar); - -function assignAll(objs) { - return objs.reduce(function (prev, obj) { - return _extends(prev, obj); - }, {}); -} - -function parse(str) { - var parser = new nearley.Parser(grammar); - - var words = str.split(/;|,| /).filter(function (word) { - return word !== ''; - }).map(function (word) { - return word + ' '; - }); - - var info = parser.save(); - var initialInfo = parser.save(); - - var r = words.reduce(function (prev, word) { - // if it fails, roll it back - var ignored = prev.ignored; - var maybeIgnored = prev.maybeIgnored; - var failed = false; - var hasPrev = Object.keys(prev.component).length !== 0; - try { - parser.feed(word); - } catch (e) { - if (!hasPrev) { - try { - parser.restore(initialInfo); - parser.feed(word); - ignored += maybeIgnored; - } catch (e) { - failed = true; - parser.restore(info); - ignored += maybeIgnored + word; - maybeIgnored = ''; - } - } else { - failed = true; - parser.restore(info); - ignored += maybeIgnored + word; - maybeIgnored = ''; - } - } - var component = assignAll(parser.results[0] || []); - var empty = Object.keys(component).length === 0; - if (!failed) { - var eq = equals(component, prev.component); - var isNumber = !isNaN(parseFloat(word)); - if (isNumber && (eq || empty)) { - // the parser waits for further input on numbers so we can't be - // sure it has been ignored - maybeIgnored += word; - } else if (hasPrev && (eq || empty)) { - ignored += maybeIgnored + word; - maybeIgnored = ''; - } else { - maybeIgnored = ''; - info = parser.save(); - } - } - return { - component: _extends(prev.component, component), - ignored: ignored, - maybeIgnored: maybeIgnored - }; - }, { component: {}, ignored: '', maybeIgnored: '' }); - - return { - component: r.component, - ignored: (r.ignored + r.maybeIgnored).trim() - }; -} - -module.exports = parse; -},{"./equals":5,"./grammar":6,"moo":10,"nearley":11}],10:[function(require,module,exports){ -(function(root, factory) { - if (typeof define === 'function' && define.amd) { - define([], factory) /* global define */ - } else if (typeof module === 'object' && module.exports) { - module.exports = factory() - } else { - root.moo = factory() - } -}(this, function() { - 'use strict'; - - var hasOwnProperty = Object.prototype.hasOwnProperty - - // polyfill assign(), so we support IE9+ - var assign = typeof Object.assign === 'function' ? Object.assign : - // https://tc39.github.io/ecma262/#sec-object.assign - function(target, sources) { - if (target == null) { - throw new TypeError('Target cannot be null or undefined'); - } - target = Object(target) - - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] - if (source == null) continue - - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - target[key] = source[key] - } - } - } - return target - } - - var hasSticky = typeof new RegExp().sticky === 'boolean' - - /***************************************************************************/ - - function isRegExp(o) { return o && o.constructor === RegExp } - function isObject(o) { return o && typeof o === 'object' && o.constructor !== RegExp && !Array.isArray(o) } - - function reEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') - } - function reGroups(s) { - var re = new RegExp('|' + s) - return re.exec('').length - 1 - } - function reCapture(s) { - return '(' + s + ')' - } - function reUnion(regexps) { - var source = regexps.map(function(s) { - return "(?:" + s + ")" - }).join('|') - return "(?:" + source + ")" - } - - function regexpOrLiteral(obj) { - if (typeof obj === 'string') { - return '(?:' + reEscape(obj) + ')' - - } else if (isRegExp(obj)) { - // TODO: consider /u support - if (obj.ignoreCase) { throw new Error('RegExp /i flag not allowed') } - if (obj.global) { throw new Error('RegExp /g flag is implied') } - if (obj.sticky) { throw new Error('RegExp /y flag is implied') } - if (obj.multiline) { throw new Error('RegExp /m flag is implied') } - return obj.source - - } else { - throw new Error('not a pattern: ' + obj) - } - } - - function objectToRules(object) { - var keys = Object.getOwnPropertyNames(object) - var result = [] - for (var i=0; i 0) { - throw new Error("RegExp has capture groups: " + regexp + "\nUse (?: … ) instead") - } - if (!hasStates && (options.pop || options.push || options.next)) { - throw new Error("State-switching options are not allowed in stateless lexers (for token '" + options.tokenType + "')") - } - - // try and detect rules matching newlines - if (!options.lineBreaks && regexp.test('\n')) { - throw new Error('Rule should declare lineBreaks: ' + regexp) - } - - // store regex - parts.push(reCapture(pat)) - } - - var suffix = hasSticky ? '' : '|(?:)' - var flags = hasSticky ? 'ym' : 'gm' - var combined = new RegExp(reUnion(parts) + suffix, flags) - - return {regexp: combined, groups: groups, error: errorRule} - } - - function compile(rules) { - var result = compileRules(rules) - return new Lexer({start: result}, 'start') - } - - function compileStates(states, start) { - var keys = Object.getOwnPropertyNames(states) - if (!start) start = keys[0] - - var map = Object.create(null) - for (var i=0; i { + if (key in ctx && ctx[key]()) { + return key; + } + }); + return options[key]; +} + +function handle_unit(ctx, prefix) { + return Number(ctx.NUMBER().getText() + prefix); +} + +function handle_prefix(ctx) { + const prefix = { + GIGA: 'e9', + MEGA: 'e6', + KILO: 'e3', + MILI: 'e-3', + MICRO: 'e-6', + NANO: 'e-9', + PICO: 'e-12', + }; + return handle_option(ctx, prefix); +} + +function handle_package_chip(ctx) { + const chip = { + CHIP_0201: '0201', + CHIP_0402: '0402', + CHIP_0603: '0603', + CHIP_i008004: '008004', + CHIP_i009005: '009005', + CHIP_i01005: '01005', + CHIP_i0201: '0201', + CHIP_i0402: '0402', + CHIP_i0603: '0603', + CHIP_i0805: '0805', + CHIP_i1008: '1008', + CHIP_i1206: '1206', + CHIP_i1210: '1210', + CHIP_i1806: '1806', + CHIP_i1812: '1812', + CHIP_i1825: '1825', + CHIP_i2010: '2010', + CHIP_i2512: '2512', + CHIP_i2920: '2920', + }; + return handle_option(ctx, chip); +} + +function handle_package_eia(ctx) { + const eia = { + EIA_2012_12: 'EIA-2012-12', + EIA_3216_10: 'EIA-3216-10', + EIA_3216_12: 'EIA-3216-12', + EIA_3216_18: 'EIA-3216-18', + EIA_3528_12: 'EIA-3528-12', + EIA_3528_21: 'EIA-3528-21', + EIA_6032_15: 'EIA-6032-15', + EIA_6032_28: 'EIA-6032-28', + EIA_7260_38: 'EIA-7260-38', + EIA_7343_20: 'EIA-7343-20', + EIA_7343_31: 'EIA-7343-31', + EIA_7343_43: 'EIA-7343-43', + }; + return handle_option(ctx, eia); +} + +function handle_package_panasonic(ctx) { + const panasonic = { + PANASONIC_A: 'PANASONIC A', + PANASONIC_B: 'PANASONIC B', + PANASONIC_C: 'PANASONIC C', + PANASONIC_D: 'PANASONIC D', + PANASONIC_E: 'PANASONIC E', + PANASONIC_G: 'PANASONIC G', + PANASONIC_H: 'PANASONIC H', + PANASONIC_J: 'PANASONIC J', + PANASONIC_K: 'PANASONIC K', + CHEMICON_K: 'CHEMICON K', + }; + return handle_option(ctx, panasonic); +} + +function handle_package_sod(ctx) { + const sod = { + SOD_723: 'SOD723', + SOD_523: 'SOD523', + SOD_323: 'SOD323', + SOD_128: 'SOD128', + SOD_123: 'SOD123', + SOD_80C: 'SOD80C', + }; + return handle_option(ctx, sod); +} + +function handle_package_melf(ctx) { + const melf = { + MICRO_MELF: 'MICRO MELF', + MINI_MELF: 'MINI MELF', + DEF_MELF: 'MELF', + }; + return handle_option(ctx, melf); +} + +function handle_package_do214(ctx) { + const do214 = { + DO214_AA: 'DO214AA', + DO214_AB: 'DO214AB', + DO214_AC: 'DO214AC', + }; + return handle_option(ctx, do214); +} + +function handle_package_sot(ctx) { + const sot = { + SOT223: 'SOT223', + SOT89: 'SOT89', + SOT23: 'SOT23', + SOT323: 'SOT323', + SOT416: 'SOT416', + SOT663: 'SOT663', + SOT723: 'SOT723', + SOT883: 'SOT883', + }; + return handle_option(ctx, sot); +} + +function handle_package_dpak(ctx) { + const dpak = { + DPAK: 'DPAK', + D2PAK: 'D2PAK', + D3PAK: 'D3PAK', + }; + return handle_option(ctx, dpak); +} + +class ToObjectListener extends ElectroGrammarListener { + constructor() { + super(); + this.obj = {}; + this.prefix = ''; + } + exitVprefix(ctx) { + this.prefix = handle_prefix(ctx); + } + exitVoltage(ctx) { + this.obj['voltage'] = handle_unit(ctx, this.prefix); + this.prefix = ''; + } + exitAprefix(ctx) { + this.prefix = handle_prefix(ctx); + } + exitCurrent(ctx) { + this.obj['current'] = handle_unit(ctx, this.prefix); + this.prefix = ''; + } + exitPprefix(ctx) { + this.prefix = handle_prefix(ctx); + } + exitPower(ctx) { + this.obj['power'] = handle_unit(ctx, this.prefix); + this.prefix = ''; + } + exitRprefix(ctx) { + this.prefix = handle_prefix(ctx); + } + exitResistance(ctx) { + this.obj['resistance'] = handle_unit(ctx, this.prefix); + this.prefix = ''; + } + exitCprefix(ctx) { + this.prefix = handle_prefix(ctx); + } + exitCapacitance(ctx) { + this.obj['capacitance'] = handle_unit(ctx, this.prefix); + this.prefix = ''; + } + exitLprefix(ctx) { + this.prefix = handle_prefix(ctx); + } + exitInductance(ctx) { + this.obj['inductance'] = handle_unit(ctx, this.prefix); + this.prefix = ''; + } + exitFprefix(ctx) { + this.prefix = handle_prefix(ctx); + } + exitFrequency(ctx) { + this.obj['frequency'] = handle_unit(ctx, this.prefix); + this.prefix = ''; + } + exitTprefix(ctx) { + this.prefix = handle_prefix(ctx, this.prefix); + } + exitTime(ctx) { + this.obj['time'] = handle_unit(ctx, this.prefix); + this.prefix = ''; + } + exitTemperature(ctx) { + this.obj['temperature'] = handle_unit(ctx, ''); + } + exitTolerance(ctx) { + this.obj['tolerance'] = handle_unit(ctx, ''); + } + exitPackage_chip_ambiguous(ctx) { + this.obj['package'] = handle_package_chip(ctx); + console.log('warning: ambiguous_size: ' + this.obj['package']); + } + exitPackage_chip_unambiguous(ctx) { + this.obj['package'] = handle_package_chip(ctx); + } + exitPackage_eia(ctx) { + this.obj['package'] = handle_package_eia(ctx); + } + exitPackage_panasonic(ctx) { + this.obj['package'] = handle_package_panasonic(ctx); + } + exitPackage_sod(ctx) { + this.obj['package'] = handle_package_sod(ctx); + } + exitPackage_melf(ctx) { + this.obj['package'] = handle_package_melf(ctx); + } + exitPackage_do214(ctx) { + this.obj['package'] = handle_package_do214(ctx); + } + exitPackage_sot(ctx) { + this.obj['package'] = handle_package_sot(ctx); + } + exitPackage_dpak(ctx) { + this.obj['package'] = handle_package_dpak(ctx); + } + exitClass1(ctx) { + const dielectric = { + M7G: 'M7G', + C0G: 'C0G', + H2G: 'H2G', + L2G: 'L2G', + P2H: 'P2H', + R2H: 'R2H', + S2H: 'S2H', + T2H: 'T2H', + U2J: 'U2J', + Q3K: 'Q3K', + P3K: 'P3K', + }; + this.obj['dielectric'] = handle_option(ctx, dielectric); + } + exitClass2(ctx) { + this.obj['dielectric'] = ctx + .CLASS2() + .getText() + .toUpperCase(); + } + exitAlu(ctx) { + this.obj['dielectric'] = 'ALU'; + } + exitTan(ctx) { + this.obj['dielectric'] = 'TAN'; + } + exitResistor(ctx) { + this.obj['type'] = 'resistor'; + } + exitCapacitor(ctx) { + this.obj['type'] = 'capacitor'; + } + exitInductor(ctx) { + this.obj['type'] = 'inductor'; + } + exitOscillator(ctx) { + this.obj['type'] = 'oscillator'; + } + exitRtype(ctx) { + if (ctx.POT()) this.obj['rtype'] = 'pot'; + } + exitDiode(ctx) { + this.obj['type'] = 'diode'; + } + exitDcode(ctx) { + this.obj['code'] = ctx + .DCODE() + .getText() + .toUpperCase(); + } + exitSignal(ctx) { + this.obj['dtype'] = 'signal'; + } + exitRectifier(ctx) { + this.obj['dtype'] = 'rectifier'; + } + exitLed(ctx) { + this.obj['dtype'] = 'led'; + } + exitSchottky(ctx) { + this.obj['dtype'] = 'schottky'; + } + exitZener(ctx) { + this.obj['dtype'] = 'zener'; + } + exitColor(ctx) { + this.obj['color'] = ctx + .COLOR() + .getText() + .toLowerCase(); + } + exitTransistor(ctx) { + this.obj['type'] = 'transistor'; + } + exitTtype(ctx) { + this.obj['ttype'] = ctx + .TTYPE() + .getText() + .toLowerCase(); + } + exitTcode(ctx) { + this.obj['code'] = ctx + .TCODE() + .getText() + .toUpperCase(); + } +} + +exports.ToObjectListener = ToObjectListener; diff --git a/js/package-lock.json b/js/package-lock.json new file mode 100644 index 0000000..f2b5951 --- /dev/null +++ b/js/package-lock.json @@ -0,0 +1,104 @@ +{ + "name": "electro-grammar", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "antlr4": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz", + "integrity": "sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "requires": { + "exit": "0.1.2", + "glob": "7.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/js/package.json b/js/package.json new file mode 100644 index 0000000..dc89605 --- /dev/null +++ b/js/package.json @@ -0,0 +1,29 @@ +{ + "name": "electro-grammar", + "description": "Parser electronic components descriptions such as surface-mount resistors and capacitors.", + "version": "1.0.0", + "main": "lib/index.js", + "scripts": { + "demo": "cp demo/{index.html,favicon.ico} ../ && browserify demo/index.js > ../bundle.js", + "test": "nyc -- mocha --check-leaks", + "coverage": "nyc report", + "coverage:html": "nyc report --reporter=html", + "test:browser": "zuul --local -- test/*.js", + "pretest:sauce": "babel test/ -d test-lib/", + "test:sauce": "zuul -- test-lib/*.js", + "fmt": "prettier --write test/**/*.js lib/**/*.js", + "dbg": "node --inspect-brk bin/electro-grammar.js" + }, + "dependencies": { + "antlr4": "^4.7.1", + "cli": "^1.0.1" + }, + "babel": { + "presets": [ + "es2015" + ], + "plugins": [ + "transform-object-assign" + ] + } +} diff --git a/test/test_equals.js b/js/test/test_equals.js similarity index 97% rename from test/test_equals.js rename to js/test/test_equals.js index 6fc5473..2f52e51 100644 --- a/test/test_equals.js +++ b/js/test/test_equals.js @@ -1,7 +1,8 @@ +/* const assert = require('better-assert') const equals = require('../lib/equals') -const parse = require('../lib/parse') +const parse = require('../lib/lax_parser') describe('equality check', () => { it('does not equal components of different types', () => { @@ -47,3 +48,4 @@ describe('equality check', () => { assert(equals(c1, c2)) }) }) +*/ diff --git a/test/test_grammar.js b/js/test/test_grammar.js similarity index 97% rename from test/test_grammar.js rename to js/test/test_grammar.js index 25c0171..61c8d5a 100644 --- a/test/test_grammar.js +++ b/js/test/test_grammar.js @@ -1,4 +1,4 @@ -const nearley = require('nearley') +/*const nearley = require('nearley') const assert = require('better-assert') const grammar = require('../lib/grammar') @@ -66,3 +66,4 @@ describe('grammar', () => { assert(p.results.length === 0, 'has a result') }) }) +*/ diff --git a/js/test/test_lax_parser.js b/js/test/test_lax_parser.js new file mode 100644 index 0000000..1cf8bf0 --- /dev/null +++ b/js/test/test_lax_parser.js @@ -0,0 +1,375 @@ +const assert = require('better-assert'); + +const {parse} = require('../lib/lax_parser'); + +describe('parsing', () => { + it("doesn't parse nonsense", () => { + const c = parse('this is total rubbish').component; + assert(c.type == null); + }); + it('returns empty object on empty', () => { + assert(parse('').component.type == null); + }); + it('returns unknown type when encountering package size', () => { + assert(parse('0603').component.type === 'unknown'); + }); +}); + +describe('SMD Capacitors', () => { + it('parses a capacitor', () => { + const c = parse('2uF 0603').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 2e-6, 'capacitance value is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it("doesn't parse nonsense", () => { + const c = parse('this is total rubbish'); + assert(c.type == null); + }); + // tolerance not after unit + /*it('parses tolerance', () => { + const c = parse('2uF 0603 30%').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 2e-6, 'capacitance value is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.tolerance === 30, 'tolerance is wrong'); + }); + it('parses +/- in tolerance', () => { + const c = parse('2uF 0603 +/-30%').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 2e-6, 'capacitance value is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.tolerance === 30, 'tolerance is wrong'); + }); + it('parses ± in tolerance', () => { + const c = parse('2uF 0603 ±30%').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 2e-6, 'capacitance value is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.tolerance === 30, 'tolerance is wrong'); + }); + it('parses +- in tolerance', () => { + const c = parse('2uF 0603 +-30%').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 2e-6, 'capacitance value is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.tolerance === 30, 'tolerance is wrong'); + });*/ + it('parses all the various ways of saying micro', () => { + const descriptions = [ + '10uF 0402', + '10 micro Farad 0402', + '10𝛍F 0402', + // '10𝜇F 0402', + '10𝝁 F 0402', + '10 𝝻F 0402', + '10𝞵F 0402', + ]; + descriptions.forEach(d => { + const c = parse(d).component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 10e-6, 'capacitance is wrong'); + assert(c.package_size === '0402', 'size is wrong'); + }); + }); + it('ignores extra words', () => { + const c = parse('100nF 0603 kajdlkja alkdjlkajd').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('ignores extra words 2', () => { + const c = parse('adjalkjd 100nF akjdlkjda 0603 kajdlkja alkdjlkajd').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('ignores extra words 3', () => { + const { component: c, ignored } = parse( + 'capacitor 100nF 0603, warehouse 5' + ); + assert(ignored === 'warehouse 5'); + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('ignores extra words 4', () => { + const { component: c, ignored } = parse( + 'adjalkjd 0603 akjdlkjda 100nF kajdlkja alkdjlkajd' + ); + assert(ignored === 'adjalkjd akjdlkjda kajdlkja alkdjlkajd'); + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('ignores extra words 5', () => { + const { component: c, ignored } = parse( + 'capacitor 100nF 0603, warehouse 5 %' + ); + assert(ignored === 'warehouse'); + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('ignores extra words 6', () => { + const { component: c, ignored } = parse( + 'capacitor 100nF 0603, warehouse 5%' + ); + assert(ignored === 'warehouse'); + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('ignores extra words 7', () => { + const { component: c, ignored } = parse( + 'x5527 100nF 0603, warehouse 5%' + ); + assert(ignored === 'x5527 warehouse'); + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('ignores extra words 8', () => { + const { component: c, ignored } = parse( + '5527 x 100nF 0603, warehouse 5%' + ); + assert(ignored === '5527 x warehouse'); + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('ignores extra words 9', () => { + const { component: c, ignored } = parse('5527 100nF 0603, warehouse 5%'); + assert(ignored === '5527 warehouse'); + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('ignores extra words 10', () => { + const { component: c, ignored } = parse( + 'adjalkjd 0603 50001 100nF akjdlkjda kajdlkja alkdjlkajd' + ); + assert(ignored === 'adjalkjd 50001 akjdlkjda kajdlkja alkdjlkajd'); + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('parses dielectric X7R', () => { + const c = parse('100nF 0603 X7R').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.dielectric === 'X7R', 'dielectric is wrong'); + }); + it('parses dielectric x7r', () => { + const c = parse('100nF 0603 x7r').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.dielectric === 'X7R', 'dielectric is wrong'); + }); + it('parses dielectric Z5U', () => { + const c = parse('100nF 0603 Z5U').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.dielectric === 'Z5U', 'dielectric is wrong'); + }); + it('parses dielectric Y5V', () => { + const c = parse('100nF 0603 Y5V').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.dielectric === 'Y5V', 'dielectric is wrong'); + }); + it('parses dielectric C0G', () => { + const c = parse('100nF 0603 C0G').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.dielectric === 'C0G', 'characteristic is wrong'); + }); + it('parses dielectric NPO', () => { + const c = parse('100nF 0603 NP0').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.dielectric === 'C0G', 'characteristic is wrong'); + }); + it('parses dielectric np0', () => { + const c = parse('100nF 0603 NP0').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.dielectric === 'C0G', 'dielectric is wrong'); + }); + it('parses dielectric c0g', () => { + const c = parse('100nF 0603 NP0').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.dielectric === 'C0G', 'dielectric is wrong'); + }); + it('parses dielectric C0G/NP0', () => { + const c = parse('100nF 0603 C0G/NP0').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.dielectric === 'C0G', 'dielectric is wrong'); + }); + it('parses without metric prefix', () => { + const c = parse('1uF 0603 25V').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 1e-6, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.voltage === 25, 'rating is wrong'); + }); + it('parses lower case f as farad', () => { + const c = parse('1uf 0603 25V').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 1e-6, 'capacitance is wrong'); + }); + it('parses "Farad" as farad', () => { + const c = parse('1u Farad 0603 25V').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 1e-6, 'capacitance is wrong'); + }); + it('parses voltage rating', () => { + const c = parse('100nF 0603 25V').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.voltage === 25, 'rating is wrong'); + }); + it('parses voltage rating with small v and space', () => { + const c = parse('100nF 0603 25 v').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + assert(c.voltage === 25, 'rating is wrong'); + }); + it('takes a hint', () => { + const c = parse('C 100n 0603').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('takes a hint 2', () => { + const c = parse('Capacitor 100n 0603').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); + it('takes a hint 3', () => { + const c = parse('cap 100n 0603').component; + assert(c.type === 'capacitor'); + assert(c.capacitance === 100e-9, 'capacitance is wrong'); + assert(c.package_size === '0603', 'size is wrong'); + }); +}); + +/* +describe('SMD Resistors', () => { + it('parses a resistor', () => { + const c = parse('1k 0603').component + assert(c.type === 'resistor') + assert(c.resistance === 1000, 'resistance value is wrong') + assert(c.package_size === '0603', 'size is wrong') + }) + it('parses a resistor with extra package sizes at the start', () => { + const c = parse('0603 0805 1k').component + assert(c.type === 'resistor') + assert(c.resistance === 1000, 'resistance value is wrong') + assert(c.package_size === '0805', 'size is wrong') + }) + it('parses "1k ohm"', () => { + const c = parse('1k ohm 0603').component + assert(c.type === 'resistor') + assert(c.resistance === 1000, 'resistance value is wrong') + assert(c.package_size === '0603', 'size is wrong') + }) + it('parses "1 ohm"', () => { + const c = parse('1 ohm 0402').component + assert(c.type === 'resistor') + assert(c.resistance === 1, 'resistance value is wrong') + assert(c.package_size === '0402', 'size is wrong') + }) + it('parses "1k5"', () => { + const c = parse('1k5 0402').component + assert(c.type === 'resistor') + assert(c.resistance === 1500, 'resistance value is wrong') + assert(c.package_size === '0402', 'size is wrong') + }) + it('parses "2r7"', () => { + const c = parse('2r7 0402').component + assert(c.type === 'resistor') + assert(c.resistance === 2.7, 'resistance value is wrong') + assert(c.package_size === '0402', 'size is wrong') + }) + it('parses "1.5k"', () => { + const c = parse('1.5k 0402').component + assert(c.type === 'resistor') + assert(c.resistance === 1500, 'resistance value is wrong') + assert(c.package_size === '0402', 'size is wrong') + }) + it('parses "1Ω"', () => { + const c = parse('1Ω 0805').component + assert(c.type === 'resistor') + assert(c.resistance === 1, 'resistance value is wrong') + assert(c.package_size === '0805', 'size is wrong') + }) + it('parses "1 Ω"', () => { + const c = parse('1Ω 0805').component + assert(c.type === 'resistor') + assert(c.resistance === 1, 'resistance value is wrong') + assert(c.package_size === '0805', 'size is wrong') + }) + it('parses "100R"', () => { + const c = parse('100R').component + assert(c.type === 'resistor') + assert(c.resistance === 100, 'resistance value is wrong') + }) + it('parses "100 R"', () => { + const c = parse('100 R').component + assert(c.type === 'resistor') + assert(c.resistance === 100, 'resistance value is wrong') + }) + it('parses tolerance', () => { + const c = parse('1k 0805 5%').component + assert(c.type === 'resistor') + assert(c.resistance === 1000, 'resistance value is wrong') + assert(c.tolerance === 5, 'tolerance value is wrong') + assert(c.package_size === '0805', 'size is wrong') + }) + it('parses power rating', () => { + const c = parse('1k 0805 5% 100mW').component + assert(c.type === 'resistor') + assert(c.resistance === 1000, 'resistance value is wrong') + assert(c.tolerance === 5, 'tolerance value is wrong') + assert(c.package_size === '0805', 'size is wrong') + assert(c.power_rating === 0.1, 'power rating is wrong') + }) + it('parses power rating 2', () => { + const c = parse('0 ohm 0201 0.125W').component + assert(c.type === 'resistor') + assert(c.resistance === 0, 'resistance value is wrong') + assert(c.package_size === '0201', 'size is wrong') + assert(c.power_rating === 0.125, 'power rating is wrong') + }) +}) + +describe('SMD LEDs', () => { + it('parses red LED', () => { + const c = parse('led red 0603').component + assert(c.type === 'led') + assert(c.color === 'red') + assert(c.package_size === '0603', 'size is wrong') + }) + it('parses green LED', () => { + const c = parse('SMD LED GREEN 0805').component + assert(c.type === 'led') + assert(c.color === 'green') + assert(c.package_size === '0805', 'size is wrong') + }) +}) +*/ diff --git a/test/test_lexer.js b/js/test/test_lexer.js similarity index 98% rename from test/test_lexer.js rename to js/test/test_lexer.js index 384dc7c..2393a08 100644 --- a/test/test_lexer.js +++ b/js/test/test_lexer.js @@ -1,4 +1,4 @@ -const assert = require('better-assert') +/*const assert = require('better-assert') const lexer = require('../lib/lexer') @@ -108,3 +108,4 @@ describe('lexer', () => { }) }) }) +*/ diff --git a/test/test_match_cpl.js b/js/test/test_match_cpl.js similarity index 96% rename from test/test_match_cpl.js rename to js/test/test_match_cpl.js index 17a2fa1..69e8f4f 100644 --- a/test/test_match_cpl.js +++ b/js/test/test_match_cpl.js @@ -1,4 +1,4 @@ -const assert = require('better-assert') +/*const assert = require('better-assert') const { parse, matchCPL } = require('../lib/index') @@ -32,3 +32,4 @@ describe('match CPL', () => { assert(matchCPL(['whatever', 2]).length === 0) }) }) +*/ diff --git a/js/test/test_strict_units.js b/js/test/test_strict_units.js new file mode 100644 index 0000000..5ab1076 --- /dev/null +++ b/js/test/test_strict_units.js @@ -0,0 +1,504 @@ +const assert = require('better-assert'); + +const {get_parser} = require('../lib/index'); + +function parser(start_rule, key=null) { + if (key === null) { + key = start_rule; + } + + function parse(input) { + var obj = get_parser(start_rule)(input); + if (key) { + return obj[key]; + } + return obj; + } + + return parse; +} + +function check_with_parser(parser) { + function check(cases) { + cases.forEach((test) => { + // console.log(test, parser(test[0])); + if (test.length == 2) { + assert(parser(test[0]) === test[1]); + } else { + assert(parser(test[0])[test[1]] === test[2]); + } + }); + } + return check; +} + +describe('strict units', () => { + it('parses voltage correctly', () => { + const check = check_with_parser(parser('voltage')); + + check([ + ['1kV', 1e3], + ['1V', 1], + ['1mV', 1e-3], + ]); + }); + + it('parses current correctly', () => { + const parse = parser('current'); + + const cases = [ + ['1A', 1], + ['1mA', 1e-3], + ['1uA', 1e-6], + ['1nA', 1e-9], + ['1pA', 1e-12], + ]; + + cases.forEach((test) => { + assert(parse(test[0]) === test[1]); + }); + }); + + it('parses power correctly', () => { + const parse = parser('power'); + + const cases = [ + ['1W', 1], + ['1mW', 1e-3], + ]; + + cases.forEach((test) => { + assert(parse(test[0]) === test[1]); + }); + }); + + it('parses resistance correctly', () => { + const parse = parser('resistance'); + + const cases = [ + ['1M', 1e6], + ['1K', 1e3], + ['1k', 1e3], + ['1', 1], + ['1R', 1], + ['1m', 1e-3], + ]; + + cases.forEach((test) => { + assert(parse(test[0]) === test[1]); + }); + }); + + it('parses capacitance correctly', () => { + const parse = parser('capacitance'); + + const cases = [ + ['1uF', 1e-6], + ['1nF', 1e-9], + ['1pF', 1e-12], + ]; + + cases.forEach((test) => { + assert(parse(test[0]) === test[1]); + }); + }); + + it('parses inductance correctly', () => { + const parse = parser('inductance'); + + const cases = [ + ['1H', 1], + ['1mH', 1e-3], + ['1uH', 1e-6], + ['1nH', 1e-9], + ]; + + cases.forEach((test) => { + assert(parse(test[0]) === test[1]); + }); + }); + + it('parses frequency correctly', () => { + const parse = parser('frequency'); + + const cases = [ + ['1GHz', 1e9], + ['1MHz', 1e6], + ['1KHz', 1e3], + ['1kHz', 1e3], + ['1Hz', 1], + ]; + + cases.forEach((test) => { + assert(parse(test[0]) === test[1]); + }); + }); + + it('parses time correctly', () => { + const parse = parser('time'); + + const cases = [ + ['1s', 1], + ['1ms', 1e-3], + ['1us', 1e-6], + ['1ns', 1e-9], + ['1ps', 1e-12], + ]; + + cases.forEach((test) => { + assert(parse(test[0]) === test[1]); + }); + }); + + it('parses temperature correctly', () => { + const parse = parser('temperature'); + + const cases = [ + ['1C', 1], + ['1°C', 1], + ]; + + cases.forEach((test) => { + assert(parse(test[0]) === test[1]); + }); + }); +}); + +describe('strict tolerance', () => { + it('parses tolerance correctly', () => { + const check = check_with_parser(parser('tolerance')); + + check([ + ['1%', 1], + ['+-1%', 1], + ['+/-1%', 1], + ['±1%', 1], + ]); + }); +}); + +describe('strict package size', () => { + const check = check_with_parser(parser('package_size')); + + it('parses imperial packages correctly', () => { + check([ + ['008004', '008004'], + ['009005', '009005'], + ['01005', '01005'], + ['0805', '0805'], + ['1008', '1008'], + ['1206', '1206'], + ['1210', '1210'], + ['1806', '1806'], + ['1825', '1825'], + ['2010', '2010'], + ['2512', '2512'], + ['2920', '2920'], + + ['imperial 0201', '0201'], + ['imperial 0402', '0402'], + ['imperial 0603', '0603'], + ]); + }); + + it('parses metric packages correctly', () => { + check([ + ['03015', '009005'], + ['1005', '0402'], + ['1608', '0603'], + ['2012', '0805'], + ['2520', '1008'], + ['3216', '1206'], + ['3225', '1210'], + ['4516', '1806'], + ['4532', '1812'], + ['4564', '1825'], + ['5025', '2010'], + ['6332', '2512'], + ['7451', '2920'], + + ['metric 0201', '008004'], + ['metric 0402', '01005'], + ['metric 0603', '0201'], + ]); + }); + + it('parses ambiguous packages correctly', () => { + check([ + ['0201', '0201'], + ['0402', '0402'], + ['0603', '0603'], + + ['i0402', '0402'], + ['0402i', '0402'], + ['imperial 0402', '0402'], + ['0402 imperial', '0402'], + + //['m0603', '0201'], + //['0603m', '0201'], + ['metric 0603', '0201'], + ['0603 metric', '0201'], + ]); + }); +}); + +describe('strict dielectric', () => { + check = check_with_parser(parser('dielectric')); + + it('parses class1 dielectrics correctly', () => { + check([ + ['M7G', 'M7G'], + ['TH', 'T2H'], + ['N1500', 'P3K'], + ]); + }); + + it('parses class2 dielectrics correctly', () => { + check([ + ['x4p', 'X4P'], + ['y5r', 'Y5R'], + ['z6s', 'Z6S'], + ]); + }); + + it('parses alu dielectrics correctly', () => { + check([ + ['alu', 'ALU'], + ['Aluminium', 'ALU'], + ['Elco', 'ALU'], + ['Electrolytic', 'ALU'], + ]); + }); + + it('parses tan dielectrics correctly', () => { + check([ + ['tan', 'TAN'], + ['tantalum', 'TAN'], + ]); + }); +}); + +describe('strict passive', () => { + const parse = parser('passive', key=false); + const check = check_with_parser(parse); + + it('parses resistors correctly', () => { + check([ + ['10k', 'type', 'resistor'], + ['10k', 'resistance', 10e3], + + ['10k 10%', 'type', 'resistor'], + ['10k 10%', 'tolerance', 10], + + ['10k 0805', 'type', 'resistor'], + ['10k 0805', 'package_size', '0805'], + + ['10k 125mW', 'type', 'resistor'], + ['10k 125mW', 'power', 125e-3], + + ['10k pot', 'type', 'resistor'], + ['10k pot', 'rtype', 'pot'], + + ['10k 10% 0805 125mW', 'type', 'resistor'], + ['10k 10% 0805 125mW', 'resistance', 10e3], + ['10k 10% 0805 125mW', 'tolerance', 10], + ['10k 10% 0805 125mW', 'package_size', '0805'], + ['10k 10% 0805 125mW', 'power', 125e-3], + ]); + }); + + it('parses capacitors correctly', () => { + check([ + ['10nF', 'type', 'capacitor'], + ['10nF', 'capacitance', 10e-9], + + ['10nF 10%', 'type', 'capacitor'], + ['10nF 10%', 'tolerance', 10], + + ['10nF 0805', 'type', 'capacitor'], + ['10nF 0805', 'package_size', '0805'], + + ['10nF 25V', 'type', 'capacitor'], + ['10nF 25V', 'voltage', 25], + + ['10uF alu', 'type', 'capacitor'], + ['10uF alu', 'dielectric', 'ALU'], + + ['10nF 10% 0805 25V X7R', 'type', 'capacitor'], + ['10nF 10% 0805 25V X7R', 'capacitance', 10e-9], + ['10nF 10% 0805 25V X7R', 'tolerance', 10], + ['10nF 10% 0805 25V X7R', 'package_size', '0805'], + ['10nF 10% 0805 25V X7R', 'voltage', 25], + ['10nF 10% 0805 25V X7R', 'dielectric', 'X7R'], + ]); + }); + + it('parses inductors correctly', () => { + check([ + ['10mH', 'type', 'inductor'], + ['10mH', 'inductance', 10e-3], + + ['10mH 10%', 'type', 'inductor'], + ['10mH 10%', 'tolerance', 10], + + ['10mH 0805', 'type', 'inductor'], + ['10mH 0805', 'package_size', '0805'], + + ['10mH 500mA', 'type', 'inductor'], + ['10mH 500mA', 'current', 500e-3], + + ['10mH 10% 0805 500mA', 'type', 'inductor'], + ['10mH 10% 0805 500mA', 'inductance', 10e-3], + ['10mH 10% 0805 500mA', 'tolerance', 10], + ['10mH 10% 0805 500mA', 'package_size', '0805'], + ['10mH 10% 0805 500mA', 'current', 500e-3], + ]); + }); + + it('parses oscillators correctly', () => { + check([ + ['16MHz', 'type', 'oscillator'], + ['16MHz', 'frequency', 16e6], + + // should be defined in ppm + ['16MHz 1%', 'type', 'oscillator'], + ['16MHz 1%', 'tolerance', 1], + + ['16MHz 12pF', 'type', 'oscillator'], + ['16MHz 12pF', 'capacitance', 12e-12], + + ['16MHz 1% 12pF', 'type', 'oscillator'], + ['16MHz 1% 12pF', 'frequency', 16e6], + ['16MHz 1% 12pF', 'tolerance', 1], + ['16MHz 1% 12pF', 'capacitance', 12e-12], + ]); + }); +}); + +describe('strict diode', () => { + const parse = parser('diode', key=false); + const check = check_with_parser(parse); + + it('parses codes correctly', () => { + check([ + ['1N4148', 'type', 'diode'], + ['1N4148', 'code', '1N4148'], + ]); + }); + + it('parses signal diodes correctly', () => { + check([ + ['sig', 'type', 'diode'], + ['sig', 'dtype', 'signal'], + + ['sig 1N4148', 'type', 'diode'], + ['sig 1N4148', 'dtype', 'signal'], + ['sig 1N4148', 'code', '1N4148'], + + ['1N4148 sig', 'type', 'diode'], + ['1N4148 sig', 'dtype', 'signal'], + ['1N4148 sig', 'code', '1N4148'], + ]); + }); + + it('parses rectifier diodes correctly', () => { + check([ + ['rect', 'type', 'diode'], + ['rect', 'dtype', 'rectifier'], + + ['rect 1N4007', 'type', 'diode'], + ['rect 1N4007', 'dtype', 'rectifier'], + ['rect 1N4007', 'code', '1N4007'], + + ['1N4007 rect', 'type', 'diode'], + ['1N4007 rect', 'dtype', 'rectifier'], + ['1N4007 rect', 'code', '1N4007'], + ]); + }); + + it('parses schottky diodes correctly', () => { + check([ + ['sk', 'type', 'diode'], + ['sk', 'dtype', 'schottky'], + + ['sk BAT54S', 'type', 'diode'], + ['sk BAT54S', 'dtype', 'schottky'], + ['sk BAT54S', 'code', 'BAT54S'], + + ['BAT54S sk', 'type', 'diode'], + ['BAT54S sk', 'dtype', 'schottky'], + ['BAT54S sk', 'code', 'BAT54S'], + ]); + }); + + it('parses leds correctly', () => { + check([ + ['led white', 'type', 'diode'], + ['led white', 'dtype', 'led'], + ['led white', 'color', 'white'], + ]); + }); + + it('parses zener diodes correctly', () => { + check([ + ['z 5V', 'type', 'diode'], + ['z 5V', 'dtype', 'zener'], + ['z 5V', 'voltage', 5], + ]); + }); +}); + +describe('strict transistor', () => { + const parse = parser('transistor', key=false); + const check = check_with_parser(parse); + + it('parses transistor codes correctly', () => { + check([ + ['2N2222', 'type', 'transistor'], + ['2N2222', 'code', '2N2222'], + ]); + }); + + it('parses npn transistors correctly', () => { + check([ + ['npn 2N2222', 'type', 'transistor'], + ['npn 2N2222', 'ttype', 'npn'], + ['npn 2N2222', 'code', '2N2222'], + + ['2N2222 npn', 'type', 'transistor'], + ['2N2222 npn', 'ttype', 'npn'], + ['2N2222 npn', 'code', '2N2222'], + ]); + }); + + it('parses pnp transistors correctly', () => { + check([ + ['pnp BC547', 'type', 'transistor'], + ['pnp BC547', 'ttype', 'pnp'], + ['pnp BC547', 'code', 'BC547'], + + ['BC547 pnp', 'type', 'transistor'], + ['BC547 pnp', 'ttype', 'pnp'], + ['BC547 pnp', 'code', 'BC547'], + ]); + }); + + it('parses nmos transistors correctly', () => { + check([ + ['nmos 2N7000', 'type', 'transistor'], + ['nmos 2N7000', 'ttype', 'nmos'], + ['nmos 2N7000', 'code', '2N7000'], + + ['2N7000 nmos', 'type', 'transistor'], + ['2N7000 nmos', 'ttype', 'nmos'], + ['2N7000 nmos', 'code', '2N7000'], + ]); + }); + + it('parses pmos transistors correctly', () => { + check([ + ['pmos', 'type', 'transistor'], + ['pmos', 'ttype', 'pmos'], + ]); + }); +}); diff --git a/lib/cpl_capacitors.js b/lib/cpl_capacitors.js deleted file mode 100644 index f89b73e..0000000 --- a/lib/cpl_capacitors.js +++ /dev/null @@ -1,412 +0,0 @@ -module.exports = [ - { - "type": "capacitor", - "capacitance": 1e-12, - "voltage_rating": 50, - "size": "0402", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0402-1PF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-12, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-1PF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-11, - "tolerance": 5, - "voltage_rating": 50, - "size": "0402", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0402-10PF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-11, - "tolerance": 5, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-10PF-50V" - }, - { - "type": "capacitor", - "capacitance": 1.2e-11, - "tolerance": 5, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-12PF-50V" - }, - { - "type": "capacitor", - "capacitance": 1.8e-11, - "tolerance": 5, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-18PF-50V" - }, - { - "type": "capacitor", - "capacitance": 2.2e-11, - "tolerance": 5, - "voltage_rating": 50, - "size": "0402", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0402-22PF-50V" - }, - { - "type": "capacitor", - "capacitance": 2.2e-11, - "tolerance": 5, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-22PF-50V" - }, - { - "type": "capacitor", - "capacitance": 2.7e-11, - "tolerance": 5, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-27PF-50V" - }, - { - "type": "capacitor", - "capacitance": 3.3e-11, - "tolerance": 5, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-33PF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-10, - "tolerance": 5, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-100PF-50V" - }, - { - "type": "capacitor", - "capacitance": 2.2e-10, - "tolerance": 5, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-220PF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-9, - "tolerance": 5, - "voltage_rating": 50, - "size": "0603", - "characteristic": "C0G", - "cplid": "CPL-CAP-C0G-0603-1NF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-9, - "tolerance": 10, - "voltage_rating": 50, - "size": "0402", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0402-1NF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-9, - "tolerance": 10, - "voltage_rating": 50, - "size": "0603", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0603-1NF-50V" - }, - { - "type": "capacitor", - "capacitance": 4.7e-9, - "tolerance": 10, - "voltage_rating": 50, - "size": "0603", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0603-4.7NF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-8, - "tolerance": 10, - "voltage_rating": 50, - "size": "0402", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0402-10NF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-8, - "tolerance": 10, - "voltage_rating": 50, - "size": "0603", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0603-10NF-50V" - }, - { - "type": "capacitor", - "capacitance": 2.2e-8, - "tolerance": 10, - "voltage_rating": 50, - "size": "0603", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0603-22NF-50V" - }, - { - "type": "capacitor", - "capacitance": 4.7e-8, - "tolerance": 10, - "voltage_rating": 50, - "size": "0603", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0603-47NF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-7, - "tolerance": 10, - "voltage_rating": 16, - "size": "0402", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0402-100NF-16V" - }, - { - "type": "capacitor", - "capacitance": 1e-7, - "tolerance": 10, - "voltage_rating": 50, - "size": "0603", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0603-100NF-50V" - }, - { - "type": "capacitor", - "capacitance": 1e-7, - "tolerance": 10, - "voltage_rating": 50, - "size": "0805", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0805-100NF-50V" - }, - { - "type": "capacitor", - "capacitance": 2.2e-7, - "tolerance": 10, - "voltage_rating": 16, - "size": "0603", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0603-220NF-16V" - }, - { - "type": "capacitor", - "capacitance": 0.000001, - "tolerance": 10, - "voltage_rating": 6.3, - "size": "0402", - "characteristic": "X5R", - "cplid": "CPL-CAP-X5R-0402-1UF-6.3V" - }, - { - "type": "capacitor", - "capacitance": 0.000001, - "tolerance": 10, - "voltage_rating": 25, - "size": "0603", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0603-1UF-25V" - }, - { - "type": "capacitor", - "capacitance": 0.000001, - "tolerance": 10, - "voltage_rating": 25, - "size": "0805", - "characteristic": "X7R", - "cplid": "CPL-CAP-X7R-0805-1UF-25V" - }, - { - "type": "capacitor", - "capacitance": 0.0000047, - "tolerance": 10, - "voltage_rating": 10, - "size": "0603", - "characteristic": "X5R", - "cplid": "CPL-CAP-X5R-0603-4.7UF-10V" - }, - { - "type": "capacitor", - "capacitance": 0.0000047, - "tolerance": 10, - "voltage_rating": 25, - "size": "0805", - "characteristic": "X5R", - "cplid": "CPL-CAP-X5R-0805-4.7UF-25V" - }, - { - "type": "capacitor", - "capacitance": 0.00001, - "tolerance": 10, - "voltage_rating": 16, - "size": "0805", - "characteristic": "X5R", - "cplid": "CPL-CAP-X5R-0805-10UF-16V" - }, - { - "type": "capacitor", - "capacitance": 0.000022, - "tolerance": 20, - "voltage_rating": 6.3, - "size": "0805", - "characteristic": "X5R", - "cplid": "CPL-CAP-X5R-0805-22UF-6.3V" - }, - { - "type": "capacitor", - "capacitance": 0.0001, - "tolerance": 20, - "voltage_rating": 6.3, - "size": "1206", - "characteristic": "X5R", - "cplid": "CPL-CAP-X5R-1206-100UF-6.3V" - }, - { - "type": "capacitor", - "capacitance": 0.000001, - "tolerance": 10, - "voltage_rating": 35, - "size": "1206", - "cplid": "CPL-CAP-TAN-1206-1UF-35V" - }, - { - "type": "capacitor", - "capacitance": 0.0000047, - "tolerance": 10, - "voltage_rating": 16, - "size": "1206", - "cplid": "CPL-CAP-TAN-1206-4.7UF-16V" - }, - { - "type": "capacitor", - "capacitance": 0.00001, - "tolerance": 10, - "voltage_rating": 16, - "size": "1206", - "cplid": "CPL-CAP-TAN-1206-10UF-16V" - }, - { - "type": "capacitor", - "capacitance": 0.00001, - "tolerance": 10, - "voltage_rating": 16, - "size": "1210", - "cplid": "CPL-CAP-TAN-1210-10UF-16V" - }, - { - "type": "capacitor", - "capacitance": 0.000022, - "tolerance": 10, - "voltage_rating": 16, - "size": "1210", - "cplid": "CPL-CAP-TAN-1210-22UF-16V" - }, - { - "type": "capacitor", - "capacitance": 0.000047, - "tolerance": 10, - "voltage_rating": 16, - "cplid": "CPL-CAP-TAN-2312-47UF-16V" - }, - { - "type": "capacitor", - "capacitance": 0.0001, - "tolerance": 10, - "voltage_rating": 16, - "cplid": "CPL-CAP-TAN-2312-100UF-16V" - }, - { - "type": "capacitor", - "capacitance": 0.0001, - "tolerance": 10, - "voltage_rating": 10, - "cplid": "CPL-CAP-TAN-2312-100UF-10V" - }, - { - "type": "capacitor", - "capacitance": 0.0000022, - "tolerance": 20, - "voltage_rating": 50, - "cplid": "CPL-CAP-ALU-RAD-2.2UF-50V" - }, - { - "type": "capacitor", - "capacitance": 0.0000047, - "tolerance": 20, - "voltage_rating": 50, - "cplid": "CPL-CAP-ALU-RAD-4.7UF-50V" - }, - { - "type": "capacitor", - "capacitance": 0.00001, - "tolerance": 20, - "voltage_rating": 50, - "cplid": "CPL-CAP-ALU-RAD-10UF-50V" - }, - { - "type": "capacitor", - "capacitance": 0.000022, - "tolerance": 20, - "voltage_rating": 50, - "cplid": "CPL-CAP-ALU-RAD-22UF-50V" - }, - { - "type": "capacitor", - "capacitance": 0.000047, - "tolerance": 20, - "voltage_rating": 50, - "cplid": "CPL-CAP-ALU-RAD-47UF-50V" - }, - { - "type": "capacitor", - "capacitance": 0.0001, - "tolerance": 20, - "voltage_rating": 50, - "cplid": "CPL-CAP-ALU-RAD-100UF-50V" - }, - { - "type": "capacitor", - "capacitance": 0.00022, - "tolerance": 20, - "voltage_rating": 50, - "cplid": "CPL-CAP-ALU-RAD-220UF-50V" - }, - { - "type": "capacitor", - "capacitance": 0.00047, - "tolerance": 20, - "voltage_rating": 50, - "cplid": "CPL-CAP-ALU-RAD-470UF-50V" - }, - { - "type": "capacitor", - "capacitance": 0.001, - "tolerance": 20, - "voltage_rating": 25, - "cplid": "CPL-CAP-ALU-RAD-1000UF-25V" - } -] \ No newline at end of file diff --git a/lib/cpl_leds.js b/lib/cpl_leds.js deleted file mode 100644 index 9957718..0000000 --- a/lib/cpl_leds.js +++ /dev/null @@ -1,44 +0,0 @@ -module.exports = [ - { - "type": "led", - "color": "green", - "size": "0603", - "cplid": "CPL-LED-0603-GREEN" - }, - { - "type": "led", - "color": "red", - "size": "0603", - "cplid": "CPL-LED-0603-RED" - }, - { - "type": "led", - "color": "yellow", - "size": "0603", - "cplid": "CPL-LED-0603-YELLOW" - }, - { - "type": "led", - "color": "orange", - "size": "0603", - "cplid": "CPL-LED-0603-ORANGE" - }, - { - "type": "led", - "color": "amber", - "size": "0603", - "cplid": "CPL-LED-0603-AMBER" - }, - { - "type": "led", - "color": "blue", - "size": "0603", - "cplid": "CPL-LED-0603-BLUE" - }, - { - "type": "led", - "color": "white", - "size": "0603", - "cplid": "CPL-LED-0603-WHITE" - } -] \ No newline at end of file diff --git a/lib/cpl_resistors.js b/lib/cpl_resistors.js deleted file mode 100644 index 03ccaf0..0000000 --- a/lib/cpl_resistors.js +++ /dev/null @@ -1,606 +0,0 @@ -module.exports = [ - { - "type": "resistor", - "resistance": 0, - "size": "0402", - "power_rating": 0.063, - "cplid": "CPL-RES-0402-0-0.063W" - }, - { - "type": "resistor", - "resistance": 0, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-0-0.1W" - }, - { - "type": "resistor", - "resistance": 0, - "size": "0805", - "power_rating": 0.125, - "cplid": "CPL-RES-0805-0-0.125W" - }, - { - "type": "resistor", - "resistance": 0, - "size": "1206", - "power_rating": 0.25, - "cplid": "CPL-RES-1206-0-0.25W" - }, - { - "type": "resistor", - "resistance": 10, - "tolerance": 1, - "size": "0402", - "power_rating": 0.063, - "cplid": "CPL-RES-0402-10-0.063W" - }, - { - "type": "resistor", - "resistance": 10, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-10-0.1W" - }, - { - "type": "resistor", - "resistance": 10, - "tolerance": 1, - "size": "0805", - "power_rating": 0.125, - "cplid": "CPL-RES-0805-10-0.125W" - }, - { - "type": "resistor", - "resistance": 10, - "tolerance": 1, - "size": "1206", - "power_rating": 0.25, - "cplid": "CPL-RES-1206-10-0.25W" - }, - { - "type": "resistor", - "resistance": 12, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-12-0.1W" - }, - { - "type": "resistor", - "resistance": 15, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-15-0.1W" - }, - { - "type": "resistor", - "resistance": 22, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-22-0.1W" - }, - { - "type": "resistor", - "resistance": 33.2, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-33.2-0.1W" - }, - { - "type": "resistor", - "resistance": 47, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-47-0.1W" - }, - { - "type": "resistor", - "resistance": 49.9, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-49.9-0.1W" - }, - { - "type": "resistor", - "resistance": 56.2, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-56.2-0.1W" - }, - { - "type": "resistor", - "resistance": 68.1, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-68.1-0.1W" - }, - { - "type": "resistor", - "resistance": 75, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-75-0.1W" - }, - { - "type": "resistor", - "resistance": 82.5, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-82.5-0.1W" - }, - { - "type": "resistor", - "resistance": 100, - "tolerance": 1, - "size": "0402", - "power_rating": 0.063, - "cplid": "CPL-RES-0402-100-0.063W" - }, - { - "type": "resistor", - "resistance": 100, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-100-0.1W" - }, - { - "type": "resistor", - "resistance": 100, - "tolerance": 1, - "size": "0805", - "power_rating": 0.125, - "cplid": "CPL-RES-0805-100-0.125W" - }, - { - "type": "resistor", - "resistance": 100, - "tolerance": 1, - "size": "1206", - "power_rating": 0.25, - "cplid": "CPL-RES-1206-100-0.25W" - }, - { - "type": "resistor", - "resistance": 120, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-120-0.1W" - }, - { - "type": "resistor", - "resistance": 150, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-150-0.1W" - }, - { - "type": "resistor", - "resistance": 220, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-220-0.1W" - }, - { - "type": "resistor", - "resistance": 330, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-330-0.1W" - }, - { - "type": "resistor", - "resistance": 390, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-390-0.1W" - }, - { - "type": "resistor", - "resistance": 470, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-470-0.1W" - }, - { - "type": "resistor", - "resistance": 560, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-560-0.1W" - }, - { - "type": "resistor", - "resistance": 681, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-681-0.1W" - }, - { - "type": "resistor", - "resistance": 820, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-820-0.1W" - }, - { - "type": "resistor", - "resistance": 1000, - "tolerance": 1, - "size": "0402", - "power_rating": 0.063, - "cplid": "CPL-RES-0402-1K-0.063W" - }, - { - "type": "resistor", - "resistance": 1000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-1K-0.1W" - }, - { - "type": "resistor", - "resistance": 1000, - "tolerance": 1, - "size": "0805", - "power_rating": 0.125, - "cplid": "CPL-RES-0805-1K-0.125W" - }, - { - "type": "resistor", - "resistance": 1000, - "tolerance": 1, - "size": "1206", - "power_rating": 0.25, - "cplid": "CPL-RES-1206-1K-0.25W" - }, - { - "type": "resistor", - "resistance": 1200, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-1.2K-0.1W" - }, - { - "type": "resistor", - "resistance": 1500, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-1.5K-0.1W" - }, - { - "type": "resistor", - "resistance": 2000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-2K-0.1W" - }, - { - "type": "resistor", - "resistance": 3300, - "tolerance": 1, - "size": "0402", - "power_rating": 0.063, - "cplid": "CPL-RES-0603-3.3K-0.1W" - }, - { - "type": "resistor", - "resistance": 3300, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-3.3K-0.1W" - }, - { - "type": "resistor", - "resistance": 3300, - "tolerance": 1, - "size": "0805", - "power_rating": 0.125, - "cplid": "CPL-RES-0603-3.3K-0.1W" - }, - { - "type": "resistor", - "resistance": 3300, - "tolerance": 1, - "size": "1206", - "power_rating": 0.25, - "cplid": "CPL-RES-0603-3.3K-0.1W" - }, - { - "type": "resistor", - "resistance": 3600, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-3.6K-0.1W" - }, - { - "type": "resistor", - "resistance": 4700, - "tolerance": 1, - "size": "0402", - "power_rating": 0.063, - "cplid": "CPL-RES-0402-4.7K-0.063W" - }, - { - "type": "resistor", - "resistance": 4700, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-4.7K-0.1W" - }, - { - "type": "resistor", - "resistance": 4700, - "tolerance": 1, - "size": "0805", - "power_rating": 0.125, - "cplid": "CPL-RES-0805-4.7K-0.125W" - }, - { - "type": "resistor", - "resistance": 4700, - "tolerance": 1, - "size": "1206", - "power_rating": 0.25, - "cplid": "CPL-RES-1206-4.7K-0.25W" - }, - { - "type": "resistor", - "resistance": 5600, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-5.6K-0.1W" - }, - { - "type": "resistor", - "resistance": 6800, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-6.8K-0.1W" - }, - { - "type": "resistor", - "resistance": 8200, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-8.2K-0.1W" - }, - { - "type": "resistor", - "resistance": 10000, - "tolerance": 1, - "size": "0402", - "power_rating": 0.063, - "cplid": "CPL-RES-0402-10K-0.063W" - }, - { - "type": "resistor", - "resistance": 10000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-10K-0.1W" - }, - { - "type": "resistor", - "resistance": 10000, - "tolerance": 1, - "size": "0805", - "power_rating": 0.125, - "cplid": "CPL-RES-0805-10K-0.125W" - }, - { - "type": "resistor", - "resistance": 10000, - "tolerance": 1, - "size": "1206", - "power_rating": 0.25, - "cplid": "CPL-RES-1206-10K-0.25W" - }, - { - "type": "resistor", - "resistance": 12000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-12K-0.1W" - }, - { - "type": "resistor", - "resistance": 15000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-15K-0.1W" - }, - { - "type": "resistor", - "resistance": 22000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-22K-0.1W" - }, - { - "type": "resistor", - "resistance": 33200, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-33.2K-0.1W" - }, - { - "type": "resistor", - "resistance": 47000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-47K-0.1W" - }, - { - "type": "resistor", - "resistance": 56200, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-56.2K-0.1W" - }, - { - "type": "resistor", - "resistance": 68100, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-68.1K-0.1W" - }, - { - "type": "resistor", - "resistance": 82500, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-82.5K-0.1W" - }, - { - "type": "resistor", - "resistance": 100000, - "tolerance": 1, - "size": "0402", - "power_rating": 0.063, - "cplid": "CPL-RES-0402-100K-0.063W" - }, - { - "type": "resistor", - "resistance": 100000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-100K-0.1W" - }, - { - "type": "resistor", - "resistance": 100000, - "tolerance": 1, - "size": "0805", - "power_rating": 0.125, - "cplid": "CPL-RES-0805-100K-0.125W" - }, - { - "type": "resistor", - "resistance": 100000, - "tolerance": 1, - "size": "1206", - "power_rating": 0.25, - "cplid": "CPL-RES-1206-100K-0.25W" - }, - { - "type": "resistor", - "resistance": 120000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-120K-0.1W" - }, - { - "type": "resistor", - "resistance": 150000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-150K-0.1W" - }, - { - "type": "resistor", - "resistance": 220000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-220K-0.1W" - }, - { - "type": "resistor", - "resistance": 332000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-332K-0.1W" - }, - { - "type": "resistor", - "resistance": 470000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-470K-0.1W" - }, - { - "type": "resistor", - "resistance": 562000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-562K-0.1W" - }, - { - "type": "resistor", - "resistance": 681000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-681K-0.1W" - }, - { - "type": "resistor", - "resistance": 825000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-825K-0.1W" - }, - { - "type": "resistor", - "resistance": 1000000, - "tolerance": 1, - "size": "0603", - "power_rating": 0.1, - "cplid": "CPL-RES-0603-1M-0.1W" - }, - { - "type": "resistor", - "resistance": 0.05, - "tolerance": 1, - "size": "1206", - "power_rating": 1, - "cplid": "CPL-RES-1206-0.05-1W" - } -] \ No newline at end of file diff --git a/lib/equals.js b/lib/equals.js deleted file mode 100644 index 55a8f15..0000000 --- a/lib/equals.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -function equals(c1, c2) { - c1 = c1 || {}; - c2 = c2 || {}; - if (!c1.type && !c2.type) { - return true; - } - if (c1.type !== c2.type) { - return false; - } - switch (c1.type) { - case 'resistor': - return sameResistor(c1, c2); - case 'capacitor': - return sameCapacitor(c1, c2); - case 'led': - return sameLED(c1, c2); - } -} - -function sameCapacitor(c1, c2) { - return c1.capacitance === c2.capacitance && c1.size === c2.size && c1.characteristic === c2.characteristic && c1.tolerance === c2.tolerance && c1.voltage_rating === c2.voltage_rating; -} - -function sameResistor(c1, c2) { - return c1.resistance === c2.resistance && c1.size === c2.size && c1.tolerance === c2.tolerance && c1.power_rating === c2.power_rating; -} - -function sameLED(c1, c2) { - return c1.color === c2.color && c1.size === c2.size; -} - -module.exports = equals; \ No newline at end of file diff --git a/lib/flatten.js b/lib/flatten.js deleted file mode 100644 index ee53bbc..0000000 --- a/lib/flatten.js +++ /dev/null @@ -1,23 +0,0 @@ -/*! - * arr-flatten - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict'; - -module.exports = function (arr) { - return flat(arr, []); -}; - -function flat(arr, res) { - var i = 0, - cur; - var len = arr.length; - for (; i < len; i++) { - cur = arr[i]; - Array.isArray(cur) ? flat(cur, res) : res.push(cur); - } - return res; -} \ No newline at end of file diff --git a/lib/grammar.js b/lib/grammar.js deleted file mode 100644 index 50dc778..0000000 --- a/lib/grammar.js +++ /dev/null @@ -1,380 +0,0 @@ -'use strict'; - -// Generated automatically by nearley, version 2.11.0 -// http://github.com/Hardmath123/nearley -(function () { - function id(x) { - return x[0]; - } - - /*! - * modified from arr-flatten - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - function _flatten(arr, res) { - var i = 0, - cur; - var len = arr.length; - for (; i < len; i++) { - cur = arr[i]; - Array.isArray(cur) ? _flatten(cur, res) : res.push(cur); - } - return res; - } - - function flatten(arr) { - return _flatten(arr, []); - } - - function filter(d) { - return d.filter(function (t) { - return t != null; - }); - } - - function nuller() { - return null; - } - - var toImperial = { - '0402': '01005', - '0603': '0201', - '1005': '0402', - '1608': '0603', - '2012': '0805', - '2520': '1008', - '3216': '1206', - '3225': '1210', - '4516': '1806', - '4532': '1812', - '5025': '2010', - '6332': '2512' - }; - - function type(t) { - return function (d) { - return [{ type: t }].concat(d); - }; - } - - function capacitance(d) { - var quantity = d[0]; - var metricPrefix = d[2]; - var farad = d[4]; - - return { capacitance: parseFloat(quantity + (metricPrefix || '')) }; - } - - function resistance(d, i, reject) { - var integral = d[0]; - var metricPrefix = d[2][0]; - var fractional = d[2][1]; - var ohm = d[2][2]; - if (fractional) { - if (/\./.test(integral.toString())) { - return reject; - } - var quantity = integral + '.' + fractional; - } else { - var quantity = integral; - } - return { resistance: parseFloat(quantity + (metricPrefix || '')) }; - } - var grammar = { - Lexer: undefined, - ParserRules: [{ "name": "unsigned_int$ebnf$1", "symbols": [/[0-9]/] }, { "name": "unsigned_int$ebnf$1", "symbols": ["unsigned_int$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "unsigned_int", "symbols": ["unsigned_int$ebnf$1"], "postprocess": function postprocess(d) { - return parseInt(d[0].join("")); - } - }, { "name": "int$ebnf$1$subexpression$1", "symbols": [{ "literal": "-" }] }, { "name": "int$ebnf$1$subexpression$1", "symbols": [{ "literal": "+" }] }, { "name": "int$ebnf$1", "symbols": ["int$ebnf$1$subexpression$1"], "postprocess": id }, { "name": "int$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "int$ebnf$2", "symbols": [/[0-9]/] }, { "name": "int$ebnf$2", "symbols": ["int$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "int", "symbols": ["int$ebnf$1", "int$ebnf$2"], "postprocess": function postprocess(d) { - if (d[0]) { - return parseInt(d[0][0] + d[1].join("")); - } else { - return parseInt(d[1].join("")); - } - } - }, { "name": "unsigned_decimal$ebnf$1", "symbols": [/[0-9]/] }, { "name": "unsigned_decimal$ebnf$1", "symbols": ["unsigned_decimal$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", "symbols": [/[0-9]/] }, { "name": "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", "symbols": ["unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "unsigned_decimal$ebnf$2$subexpression$1", "symbols": [{ "literal": "." }, "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1"] }, { "name": "unsigned_decimal$ebnf$2", "symbols": ["unsigned_decimal$ebnf$2$subexpression$1"], "postprocess": id }, { "name": "unsigned_decimal$ebnf$2", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "unsigned_decimal", "symbols": ["unsigned_decimal$ebnf$1", "unsigned_decimal$ebnf$2"], "postprocess": function postprocess(d) { - return parseFloat(d[0].join("") + (d[1] ? "." + d[1][1].join("") : "")); - } - }, { "name": "decimal$ebnf$1", "symbols": [{ "literal": "-" }], "postprocess": id }, { "name": "decimal$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "decimal$ebnf$2", "symbols": [/[0-9]/] }, { "name": "decimal$ebnf$2", "symbols": ["decimal$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "decimal$ebnf$3$subexpression$1$ebnf$1", "symbols": [/[0-9]/] }, { "name": "decimal$ebnf$3$subexpression$1$ebnf$1", "symbols": ["decimal$ebnf$3$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "decimal$ebnf$3$subexpression$1", "symbols": [{ "literal": "." }, "decimal$ebnf$3$subexpression$1$ebnf$1"] }, { "name": "decimal$ebnf$3", "symbols": ["decimal$ebnf$3$subexpression$1"], "postprocess": id }, { "name": "decimal$ebnf$3", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "decimal", "symbols": ["decimal$ebnf$1", "decimal$ebnf$2", "decimal$ebnf$3"], "postprocess": function postprocess(d) { - return parseFloat((d[0] || "") + d[1].join("") + (d[2] ? "." + d[2][1].join("") : "")); - } - }, { "name": "percentage", "symbols": ["decimal", { "literal": "%" }], "postprocess": function postprocess(d) { - return d[0] / 100; - } - }, { "name": "jsonfloat$ebnf$1", "symbols": [{ "literal": "-" }], "postprocess": id }, { "name": "jsonfloat$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "jsonfloat$ebnf$2", "symbols": [/[0-9]/] }, { "name": "jsonfloat$ebnf$2", "symbols": ["jsonfloat$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "jsonfloat$ebnf$3$subexpression$1$ebnf$1", "symbols": [/[0-9]/] }, { "name": "jsonfloat$ebnf$3$subexpression$1$ebnf$1", "symbols": ["jsonfloat$ebnf$3$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "jsonfloat$ebnf$3$subexpression$1", "symbols": [{ "literal": "." }, "jsonfloat$ebnf$3$subexpression$1$ebnf$1"] }, { "name": "jsonfloat$ebnf$3", "symbols": ["jsonfloat$ebnf$3$subexpression$1"], "postprocess": id }, { "name": "jsonfloat$ebnf$3", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "symbols": [/[+-]/], "postprocess": id }, { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$2", "symbols": [/[0-9]/] }, { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$2", "symbols": ["jsonfloat$ebnf$4$subexpression$1$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "jsonfloat$ebnf$4$subexpression$1", "symbols": [/[eE]/, "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "jsonfloat$ebnf$4$subexpression$1$ebnf$2"] }, { "name": "jsonfloat$ebnf$4", "symbols": ["jsonfloat$ebnf$4$subexpression$1"], "postprocess": id }, { "name": "jsonfloat$ebnf$4", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "jsonfloat", "symbols": ["jsonfloat$ebnf$1", "jsonfloat$ebnf$2", "jsonfloat$ebnf$3", "jsonfloat$ebnf$4"], "postprocess": function postprocess(d) { - return parseFloat((d[0] || "") + d[1].join("") + (d[2] ? "." + d[2][1].join("") : "") + (d[3] ? "e" + (d[3][1] || "+") + d[3][2].join("") : "")); - } - }, { "name": "_$ebnf$1", "symbols": [] }, { "name": "_$ebnf$1", "symbols": ["_$ebnf$1", /[\s]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "_", "symbols": ["_$ebnf$1"], "postprocess": nuller }, { "name": "__$ebnf$1", "symbols": [/[\s]/] }, { "name": "__$ebnf$1", "symbols": ["__$ebnf$1", /[\s]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "__", "symbols": ["__$ebnf$1"], "postprocess": nuller }, { "name": "A", "symbols": [{ "literal": "A" }] }, { "name": "A", "symbols": [{ "literal": "a" }] }, { "name": "B", "symbols": [{ "literal": "B" }] }, { "name": "B", "symbols": [{ "literal": "b" }] }, { "name": "C", "symbols": [{ "literal": "C" }] }, { "name": "C", "symbols": [{ "literal": "c" }] }, { "name": "D", "symbols": [{ "literal": "D" }] }, { "name": "D", "symbols": [{ "literal": "d" }] }, { "name": "E", "symbols": [{ "literal": "E" }] }, { "name": "E", "symbols": [{ "literal": "e" }] }, { "name": "F", "symbols": [{ "literal": "F" }] }, { "name": "F", "symbols": [{ "literal": "f" }] }, { "name": "G", "symbols": [{ "literal": "G" }] }, { "name": "G", "symbols": [{ "literal": "g" }] }, { "name": "H", "symbols": [{ "literal": "H" }] }, { "name": "H", "symbols": [{ "literal": "h" }] }, { "name": "I", "symbols": [{ "literal": "I" }] }, { "name": "I", "symbols": [{ "literal": "i" }] }, { "name": "J", "symbols": [{ "literal": "J" }] }, { "name": "J", "symbols": [{ "literal": "j" }] }, { "name": "K", "symbols": [{ "literal": "K" }] }, { "name": "K", "symbols": [{ "literal": "k" }] }, { "name": "L", "symbols": [{ "literal": "L" }] }, { "name": "L", "symbols": [{ "literal": "l" }] }, { "name": "M", "symbols": [{ "literal": "M" }] }, { "name": "M", "symbols": [{ "literal": "m" }] }, { "name": "N", "symbols": [{ "literal": "N" }] }, { "name": "N", "symbols": [{ "literal": "n" }] }, { "name": "O", "symbols": [{ "literal": "O" }] }, { "name": "O", "symbols": [{ "literal": "o" }] }, { "name": "P", "symbols": [{ "literal": "P" }] }, { "name": "P", "symbols": [{ "literal": "p" }] }, { "name": "Q", "symbols": [{ "literal": "Q" }] }, { "name": "Q", "symbols": [{ "literal": "q" }] }, { "name": "R", "symbols": [{ "literal": "R" }] }, { "name": "R", "symbols": [{ "literal": "r" }] }, { "name": "S", "symbols": [{ "literal": "S" }] }, { "name": "S", "symbols": [{ "literal": "s" }] }, { "name": "T", "symbols": [{ "literal": "T" }] }, { "name": "T", "symbols": [{ "literal": "t" }] }, { "name": "U", "symbols": [{ "literal": "U" }] }, { "name": "U", "symbols": [{ "literal": "u" }] }, { "name": "V", "symbols": [{ "literal": "V" }] }, { "name": "V", "symbols": [{ "literal": "v" }] }, { "name": "W", "symbols": [{ "literal": "W" }] }, { "name": "W", "symbols": [{ "literal": "w" }] }, { "name": "X", "symbols": [{ "literal": "X" }] }, { "name": "X", "symbols": [{ "literal": "x" }] }, { "name": "Y", "symbols": [{ "literal": "Y" }] }, { "name": "Y", "symbols": [{ "literal": "y" }] }, { "name": "Z", "symbols": [{ "literal": "Z" }] }, { "name": "Z", "symbols": [{ "literal": "z" }] }, { "name": "exa", "symbols": [{ "literal": "E" }] }, { "name": "exa", "symbols": ["E", "X", "A"] }, { "name": "peta", "symbols": [{ "literal": "P" }] }, { "name": "peta", "symbols": ["P", "E", "T", "A"] }, { "name": "tera", "symbols": [{ "literal": "T" }] }, { "name": "tera", "symbols": ["T", "E", "R", "A"] }, { "name": "giga", "symbols": [{ "literal": "G" }] }, { "name": "giga", "symbols": ["G", "I", "G", "A"] }, { "name": "mega", "symbols": [{ "literal": "M" }] }, { "name": "mega", "symbols": ["M", "E", "G", "A"] }, { "name": "kilo", "symbols": [{ "literal": "k" }] }, { "name": "kilo", "symbols": ["K", "I", "L", "O"] }, { "name": "hecto", "symbols": [{ "literal": "h" }] }, { "name": "hecto", "symbols": ["H", "E", "C", "T", "O"] }, { "name": "deci", "symbols": [{ "literal": "d" }] }, { "name": "deci", "symbols": ["D", "E", "C", "I"] }, { "name": "centi", "symbols": [{ "literal": "c" }] }, { "name": "centi", "symbols": ["C", "E", "N", "T", "I"] }, { "name": "milli", "symbols": [{ "literal": "m" }] }, { "name": "milli", "symbols": ["M", "I", "L", "L", "I"] }, { "name": "micro", "symbols": [{ "literal": "u" }] }, { "name": "micro", "symbols": [/[\u03BC]/] }, { "name": "micro", "symbols": [/[\u00B5]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDECD]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDF07]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDF41]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDF7B]/] }, { "name": "micro", "symbols": [/[\uD835]/, /[\uDFB5]/] }, { "name": "micro", "symbols": ["M", "I", "C", "R", "O"] }, { "name": "nano", "symbols": [{ "literal": "n" }] }, { "name": "nano", "symbols": ["N", "A", "N", "O"] }, { "name": "pico", "symbols": [{ "literal": "p" }] }, { "name": "pico", "symbols": ["P", "I", "C", "O"] }, { "name": "femto", "symbols": [{ "literal": "f" }] }, { "name": "femto", "symbols": ["F", "E", "M", "T", "O"] }, { "name": "atto", "symbols": [{ "literal": "a" }] }, { "name": "atto", "symbols": ["A", "T", "T", "O"] }, { "name": "packageSize", "symbols": ["_packageSize"], "postprocess": function postprocess(d) { - return { size: filter(flatten(d)).join('') }; - } - }, { "name": "_packageSize", "symbols": ["_imperialSize"] }, { "name": "_packageSize", "symbols": ["_metricSize"] }, { "name": "_imperialSize$string$1", "symbols": [{ "literal": "0" }, { "literal": "1" }, { "literal": "0" }, { "literal": "0" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$1"] }, { "name": "_imperialSize$string$2", "symbols": [{ "literal": "0" }, { "literal": "2" }, { "literal": "0" }, { "literal": "1" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$2"] }, { "name": "_imperialSize$string$3", "symbols": [{ "literal": "0" }, { "literal": "4" }, { "literal": "0" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$3"] }, { "name": "_imperialSize$string$4", "symbols": [{ "literal": "0" }, { "literal": "6" }, { "literal": "0" }, { "literal": "3" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$4"] }, { "name": "_imperialSize$string$5", "symbols": [{ "literal": "0" }, { "literal": "8" }, { "literal": "0" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$5"] }, { "name": "_imperialSize$string$6", "symbols": [{ "literal": "1" }, { "literal": "0" }, { "literal": "0" }, { "literal": "8" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$6"] }, { "name": "_imperialSize$string$7", "symbols": [{ "literal": "1" }, { "literal": "2" }, { "literal": "0" }, { "literal": "6" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$7"] }, { "name": "_imperialSize$string$8", "symbols": [{ "literal": "1" }, { "literal": "2" }, { "literal": "1" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$8"] }, { "name": "_imperialSize$string$9", "symbols": [{ "literal": "1" }, { "literal": "8" }, { "literal": "0" }, { "literal": "6" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$9"] }, { "name": "_imperialSize$string$10", "symbols": [{ "literal": "2" }, { "literal": "0" }, { "literal": "1" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$10"] }, { "name": "_imperialSize$string$11", "symbols": [{ "literal": "2" }, { "literal": "5" }, { "literal": "1" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "_imperialSize", "symbols": ["_imperialSize$string$11"] }, { "name": "_metricSize$ebnf$1", "symbols": [] }, { "name": "_metricSize$ebnf$1", "symbols": ["_metricSize$ebnf$1", /[\s]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "_metricSize", "symbols": ["__metricSize", "_metricSize$ebnf$1", "M", "E", "T", "R", "I", "C"], "postprocess": function postprocess(d) { - return toImperial[d[0]]; - } }, { "name": "_metricSize$ebnf$2", "symbols": [] }, { "name": "_metricSize$ebnf$2", "symbols": ["_metricSize$ebnf$2", /[\s]/], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "_metricSize", "symbols": ["M", "E", "T", "R", "I", "C", "_metricSize$ebnf$2", "__metricSize"], "postprocess": function postprocess(d) { - return toImperial[d[7]]; - } }, { "name": "_metricSize", "symbols": ["unambigiousMetricSize"], "postprocess": function postprocess(d) { - return toImperial[d[0]]; - } }, { "name": "unambigiousMetricSize$string$1", "symbols": [{ "literal": "1" }, { "literal": "0" }, { "literal": "0" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$1"] }, { "name": "unambigiousMetricSize$string$2", "symbols": [{ "literal": "1" }, { "literal": "6" }, { "literal": "0" }, { "literal": "8" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$2"] }, { "name": "unambigiousMetricSize$string$3", "symbols": [{ "literal": "2" }, { "literal": "0" }, { "literal": "1" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$3"] }, { "name": "unambigiousMetricSize$string$4", "symbols": [{ "literal": "2" }, { "literal": "5" }, { "literal": "2" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$4"] }, { "name": "unambigiousMetricSize$string$5", "symbols": [{ "literal": "3" }, { "literal": "2" }, { "literal": "1" }, { "literal": "6" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$5"] }, { "name": "unambigiousMetricSize$string$6", "symbols": [{ "literal": "3" }, { "literal": "2" }, { "literal": "2" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$6"] }, { "name": "unambigiousMetricSize$string$7", "symbols": [{ "literal": "4" }, { "literal": "5" }, { "literal": "1" }, { "literal": "6" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$7"] }, { "name": "unambigiousMetricSize$string$8", "symbols": [{ "literal": "5" }, { "literal": "0" }, { "literal": "2" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$8"] }, { "name": "unambigiousMetricSize$string$9", "symbols": [{ "literal": "6" }, { "literal": "3" }, { "literal": "3" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$9"] }, { "name": "__metricSize", "symbols": ["unambigiousMetricSize"] }, { "name": "__metricSize$string$1", "symbols": [{ "literal": "0" }, { "literal": "4" }, { "literal": "0" }, { "literal": "2" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "__metricSize", "symbols": ["__metricSize$string$1"] }, { "name": "__metricSize$string$2", "symbols": [{ "literal": "0" }, { "literal": "6" }, { "literal": "0" }, { "literal": "3" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "__metricSize", "symbols": ["__metricSize$string$2"] }, { "name": "main", "symbols": ["_", "main_", "_"], "postprocess": function postprocess(d) { - return filter(flatten(d)); - } }, { "name": "main_", "symbols": ["component"] }, { "name": "component", "symbols": ["capacitor"], "postprocess": type('capacitor') }, { "name": "component", "symbols": ["resistor"], "postprocess": type('resistor') }, { "name": "component", "symbols": ["led"], "postprocess": type('led') }, { "name": "component", "symbols": ["packageSize"], "postprocess": type('unknown') }, { "name": "component", "symbols": ["tolerance"], "postprocess": type('unknown') }, { "name": "component", "symbols": ["voltage_rating"], "postprocess": type('unknown') }, { "name": "component", "symbols": ["cap_"], "postprocess": type('capacitor') }, { "name": "component", "symbols": ["res_"], "postprocess": type('resistor') }, { "name": "capacitor", "symbols": ["cSpecs", "capacitance", "cSpecs"] }, { "name": "capacitor$subexpression$1", "symbols": ["capacitanceNoFarad"] }, { "name": "capacitor$subexpression$1", "symbols": ["capacitance"] }, { "name": "capacitor", "symbols": ["cap", "cSpecs", "capacitor$subexpression$1", "cSpecs"] }, { "name": "cap", "symbols": ["cap_", "__"], "postprocess": nuller }, { "name": "cap_$subexpression$1", "symbols": [/[cC]/], "postprocess": function postprocess(d) { - return d.join(""); - } }, { "name": "cap_", "symbols": ["cap_$subexpression$1"] }, { "name": "cap_$subexpression$2", "symbols": [/[cC]/, /[aA]/, /[pP]/], "postprocess": function postprocess(d) { - return d.join(""); - } }, { "name": "cap_", "symbols": ["cap_$subexpression$2"] }, { "name": "cap_$subexpression$3", "symbols": [/[cC]/, /[aA]/, /[pP]/, /[aA]/, /[cC]/, /[iI]/, /[tT]/, /[oO]/, /[rR]/], "postprocess": function postprocess(d) { - return d.join(""); - } }, { "name": "cap_", "symbols": ["cap_$subexpression$3"] }, { "name": "cSpecs$ebnf$1", "symbols": [] }, { "name": "cSpecs$ebnf$1$subexpression$1", "symbols": ["_", "cSpec", "_"] }, { "name": "cSpecs$ebnf$1", "symbols": ["cSpecs$ebnf$1", "cSpecs$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "cSpecs", "symbols": ["cSpecs$ebnf$1"] }, { "name": "cSpecs", "symbols": ["__"] }, { "name": "cSpec", "symbols": ["tolerance"] }, { "name": "cSpec", "symbols": ["characteristic"] }, { "name": "cSpec", "symbols": ["voltage_rating"] }, { "name": "cSpec", "symbols": ["packageSize"] }, { "name": "voltage_rating", "symbols": ["decimal", "_", "V"], "postprocess": function postprocess(d) { - return { voltage_rating: d[0] }; - } }, { "name": "characteristic", "symbols": ["characteristic_"], "postprocess": function postprocess(d) { - return { characteristic: d[0][0] }; - } }, { "name": "characteristic_", "symbols": ["class1"] }, { "name": "characteristic_", "symbols": ["class2"] }, { "name": "class1", "symbols": ["class1_ceramic_name"], "postprocess": id }, { "name": "class1", "symbols": ["class1_eia_code"], "postprocess": id }, { "name": "class1", "symbols": ["class1_ceramic_name", "_", { "literal": "/" }, "_", "class1_eia_code"], "postprocess": id }, { "name": "class1", "symbols": ["class1_eia_code", "_", { "literal": "/" }, "_", "class1_ceramic_name"], "postprocess": id }, { "name": "class1_ceramic_name", "symbols": ["C", { "literal": "0" }, "G"], "postprocess": function postprocess() { - return 'C0G'; - } }, { "name": "class1_ceramic_name$string$1", "symbols": [{ "literal": "1" }, { "literal": "0" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["P", "class1_ceramic_name$string$1"], "postprocess": function postprocess() { - return 'M7G'; - } }, { "name": "class1_ceramic_name$string$2", "symbols": [{ "literal": "3" }, { "literal": "3" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$2"], "postprocess": function postprocess() { - return 'H2G'; - } }, { "name": "class1_ceramic_name$string$3", "symbols": [{ "literal": "7" }, { "literal": "5" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$3"], "postprocess": function postprocess() { - return 'L2G'; - } }, { "name": "class1_ceramic_name$string$4", "symbols": [{ "literal": "1" }, { "literal": "5" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$4"], "postprocess": function postprocess() { - return 'P2H'; - } }, { "name": "class1_ceramic_name$string$5", "symbols": [{ "literal": "2" }, { "literal": "2" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$5"], "postprocess": function postprocess() { - return 'R2H'; - } }, { "name": "class1_ceramic_name$string$6", "symbols": [{ "literal": "3" }, { "literal": "3" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$6"], "postprocess": function postprocess() { - return 'S2H'; - } }, { "name": "class1_ceramic_name$string$7", "symbols": [{ "literal": "4" }, { "literal": "7" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$7"], "postprocess": function postprocess() { - return 'T2H'; - } }, { "name": "class1_ceramic_name$string$8", "symbols": [{ "literal": "7" }, { "literal": "5" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$8"], "postprocess": function postprocess() { - return 'U2J'; - } }, { "name": "class1_ceramic_name$string$9", "symbols": [{ "literal": "1" }, { "literal": "0" }, { "literal": "0" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$9"], "postprocess": function postprocess() { - return 'Q3K'; - } }, { "name": "class1_ceramic_name$string$10", "symbols": [{ "literal": "1" }, { "literal": "5" }, { "literal": "0" }, { "literal": "0" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$10"], "postprocess": function postprocess() { - return 'P3K'; - } }, { "name": "class1_eia_code", "symbols": ["N", "P", { "literal": "0" }], "postprocess": function postprocess() { - return 'C0G'; - } }, { "name": "class1_eia_code", "symbols": ["M", { "literal": "7" }, "G"], "postprocess": function postprocess() { - return 'M7G'; - } }, { "name": "class1_eia_code", "symbols": ["H", { "literal": "2" }, "G"], "postprocess": function postprocess() { - return 'H2G'; - } }, { "name": "class1_eia_code", "symbols": ["L", { "literal": "2" }, "G"], "postprocess": function postprocess() { - return 'L2G'; - } }, { "name": "class1_eia_code", "symbols": ["P", { "literal": "2" }, "H"], "postprocess": function postprocess() { - return 'P2H'; - } }, { "name": "class1_eia_code", "symbols": ["R", { "literal": "2" }, "H"], "postprocess": function postprocess() { - return 'R2H'; - } }, { "name": "class1_eia_code", "symbols": ["S", { "literal": "2" }, "H"], "postprocess": function postprocess() { - return 'S2H'; - } }, { "name": "class1_eia_code", "symbols": ["T", { "literal": "2" }, "H"], "postprocess": function postprocess() { - return 'T2H'; - } }, { "name": "class1_eia_code", "symbols": ["U", { "literal": "2" }, "J"], "postprocess": function postprocess() { - return 'U2J'; - } }, { "name": "class1_eia_code", "symbols": ["Q", { "literal": "3" }, "K"], "postprocess": function postprocess() { - return 'Q3K'; - } }, { "name": "class1_eia_code", "symbols": ["P", { "literal": "3" }, "K"], "postprocess": function postprocess() { - return 'P3K'; - } }, { "name": "class2", "symbols": ["class2_letter", "class2_number", "class2_code"], "postprocess": function postprocess(d) { - return d.join('').toUpperCase(); - } }, { "name": "class2_letter", "symbols": ["X"] }, { "name": "class2_letter", "symbols": ["Y"] }, { "name": "class2_letter", "symbols": ["Z"] }, { "name": "class2_number", "symbols": [{ "literal": "4" }] }, { "name": "class2_number", "symbols": [{ "literal": "5" }] }, { "name": "class2_number", "symbols": [{ "literal": "6" }] }, { "name": "class2_number", "symbols": [{ "literal": "7" }] }, { "name": "class2_number", "symbols": [{ "literal": "8" }] }, { "name": "class2_number", "symbols": [{ "literal": "9" }] }, { "name": "class2_code", "symbols": ["P"] }, { "name": "class2_code", "symbols": ["R"] }, { "name": "class2_code", "symbols": ["S"] }, { "name": "class2_code", "symbols": ["T"] }, { "name": "class2_code", "symbols": ["U"] }, { "name": "class2_code", "symbols": ["V"] }, { "name": "tolerance$ebnf$1$subexpression$1", "symbols": ["plusMinus", "_"] }, { "name": "tolerance$ebnf$1", "symbols": ["tolerance$ebnf$1$subexpression$1"], "postprocess": id }, { "name": "tolerance$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "tolerance", "symbols": ["tolerance$ebnf$1", "decimal", "_", { "literal": "%" }], "postprocess": function postprocess(d) { - return { tolerance: d[1] }; - } }, { "name": "plusMinus$string$1", "symbols": [{ "literal": "+" }, { "literal": "/" }, { "literal": "-" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "plusMinus", "symbols": ["plusMinus$string$1"] }, { "name": "plusMinus", "symbols": [{ "literal": "±" }] }, { "name": "plusMinus$string$2", "symbols": [{ "literal": "+" }, { "literal": "-" }], "postprocess": function joiner(d) { - return d.join(''); - } }, { "name": "plusMinus", "symbols": ["plusMinus$string$2"] }, { "name": "capacitance$ebnf$1", "symbols": ["cMetricPrefix"], "postprocess": id }, { "name": "capacitance$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "capacitance", "symbols": ["decimal", "_", "capacitance$ebnf$1", "_", "farad"], "postprocess": capacitance }, { "name": "capacitanceNoFarad$ebnf$1", "symbols": ["cMetricPrefix"], "postprocess": id }, { "name": "capacitanceNoFarad$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "capacitanceNoFarad", "symbols": ["decimal", "_", "capacitanceNoFarad$ebnf$1"], "postprocess": capacitance }, { "name": "farad", "symbols": ["F"], "postprocess": nuller }, { "name": "farad", "symbols": ["F", "A", "R", "A", "D"], "postprocess": nuller }, { "name": "resistor$ebnf$1", "symbols": ["res"], "postprocess": id }, { "name": "resistor$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "resistor", "symbols": ["resistor$ebnf$1", "rSpecs", "resistance", "rSpecs"] }, { "name": "res", "symbols": ["res_", "__"], "postprocess": nuller }, { "name": "res_$subexpression$1", "symbols": [/[rR]/], "postprocess": function postprocess(d) { - return d.join(""); - } }, { "name": "res_", "symbols": ["res_$subexpression$1"] }, { "name": "res_$subexpression$2", "symbols": [/[rR]/, /[eE]/, /[sS]/], "postprocess": function postprocess(d) { - return d.join(""); - } }, { "name": "res_", "symbols": ["res_$subexpression$2"] }, { "name": "res_$subexpression$3", "symbols": [/[rR]/, /[eE]/, /[sS]/, /[iI]/, /[sS]/, /[tT]/, /[oO]/, /[rR]/], "postprocess": function postprocess(d) { - return d.join(""); - } }, { "name": "res_", "symbols": ["res_$subexpression$3"] }, { "name": "rSpecs$ebnf$1", "symbols": [] }, { "name": "rSpecs$ebnf$1$subexpression$1", "symbols": ["_", "rSpec", "_"] }, { "name": "rSpecs$ebnf$1", "symbols": ["rSpecs$ebnf$1", "rSpecs$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "rSpecs", "symbols": ["rSpecs$ebnf$1"] }, { "name": "rSpecs", "symbols": ["__"] }, { "name": "rSpec", "symbols": ["tolerance"] }, { "name": "rSpec", "symbols": ["power_rating"] }, { "name": "rSpec", "symbols": ["packageSize"] }, { "name": "power_rating$ebnf$1", "symbols": ["powerMetricPrefix"], "postprocess": id }, { "name": "power_rating$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "power_rating", "symbols": ["decimal", "_", "power_rating$ebnf$1", "_", "watts"], "postprocess": function postprocess(d) { - var quantity = d[0]; - var metricPrefix = d[2]; - return { power_rating: parseFloat(quantity + (metricPrefix || '')) }; - } - }, { "name": "watts", "symbols": ["watts_"], "postprocess": nuller }, { "name": "watts_", "symbols": ["W"] }, { "name": "watts_", "symbols": ["W", "A", "T", "T", "S"] }, { "name": "resistance", "symbols": ["decimal", "_", "rest"], "postprocess": resistance }, { "name": "rest$ebnf$1", "symbols": ["int"], "postprocess": id }, { "name": "rest$ebnf$1", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "rest$ebnf$2$subexpression$1", "symbols": ["_", "ohm"] }, { "name": "rest$ebnf$2", "symbols": ["rest$ebnf$2$subexpression$1"], "postprocess": id }, { "name": "rest$ebnf$2", "symbols": [], "postprocess": function postprocess(d) { - return null; - } }, { "name": "rest", "symbols": ["rMetricPrefix", "rest$ebnf$1", "rest$ebnf$2"] }, { "name": "rest", "symbols": ["ohm"] }, { "name": "ohm", "symbols": ["ohm_"], "postprocess": nuller }, { "name": "ohm_", "symbols": ["O", "H", "M"] }, { "name": "ohm_", "symbols": [{ "literal": "Ω" }] }, { "name": "ohm_", "symbols": [{ "literal": "Ω" }] }, { "name": "led", "symbols": ["led_letters", "ledSpecs"] }, { "name": "led", "symbols": ["ledSpecs", "led_letters"] }, { "name": "led", "symbols": ["ledSpecs", "led_letters", "ledSpecs"] }, { "name": "led_letters", "symbols": ["L", "E", "D"], "postprocess": nuller }, { "name": "ledSpecs$ebnf$1$subexpression$1", "symbols": ["_", "ledSpec", "_"] }, { "name": "ledSpecs$ebnf$1", "symbols": ["ledSpecs$ebnf$1$subexpression$1"] }, { "name": "ledSpecs$ebnf$1$subexpression$2", "symbols": ["_", "ledSpec", "_"] }, { "name": "ledSpecs$ebnf$1", "symbols": ["ledSpecs$ebnf$1", "ledSpecs$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) { - return d[0].concat([d[1]]); - } }, { "name": "ledSpecs", "symbols": ["ledSpecs$ebnf$1"] }, { "name": "ledSpec", "symbols": ["packageSize"] }, { "name": "ledSpec", "symbols": ["color"] }, { "name": "color", "symbols": ["color_name"], "postprocess": function postprocess(d) { - return { color: d[0] }; - } }, { "name": "color_name", "symbols": ["R", "E", "D"], "postprocess": function postprocess() { - return 'red'; - } }, { "name": "color_name", "symbols": ["G", "R", "E", "E", "N"], "postprocess": function postprocess() { - return 'green'; - } }, { "name": "color_name", "symbols": ["B", "L", "U", "E"], "postprocess": function postprocess() { - return 'blue'; - } }, { "name": "color_name", "symbols": ["Y", "E", "L", "L", "O", "W"], "postprocess": function postprocess() { - return 'yellow'; - } }, { "name": "color_name", "symbols": ["O", "R", "A", "N", "G", "E"], "postprocess": function postprocess() { - return 'orange'; - } }, { "name": "color_name", "symbols": ["W", "H", "I", "T", "E"], "postprocess": function postprocess() { - return 'white'; - } }, { "name": "color_name", "symbols": ["A", "M", "B", "E", "R"], "postprocess": function postprocess() { - return 'amber'; - } }, { "name": "color_name", "symbols": ["C", "Y", "A", "N"], "postprocess": function postprocess() { - return 'cyan'; - } }, { "name": "color_name", "symbols": ["P", "U", "R", "P", "L", "E"], "postprocess": function postprocess() { - return 'purple'; - } }, { "name": "color_name", "symbols": ["Y", "E", "L", "L", "O", "W", "_", "G", "R", "E", "E", "N"], "postprocess": function postprocess() { - return 'yellow green'; - } }, { "name": "powerMetricPrefix", "symbols": ["giga"], "postprocess": function postprocess() { - return 'e9 '; - } }, { "name": "powerMetricPrefix", "symbols": ["mega"], "postprocess": function postprocess() { - return 'e6 '; - } }, { "name": "powerMetricPrefix", "symbols": ["kilo"], "postprocess": function postprocess() { - return 'e3 '; - } }, { "name": "powerMetricPrefix", "symbols": ["milli"], "postprocess": function postprocess() { - return 'e-3 '; - } }, { "name": "powerMetricPrefix", "symbols": ["micro"], "postprocess": function postprocess() { - return 'e-6 '; - } }, { "name": "powerMetricPrefix", "symbols": ["nano"], "postprocess": function postprocess() { - return 'e-9 '; - } }, { "name": "powerMetricPrefix", "symbols": ["pico"], "postprocess": function postprocess() { - return 'e-12'; - } }, { "name": "powerMetricPrefix", "symbols": ["femto"], "postprocess": function postprocess() { - return 'e-15'; - } }, { "name": "rMetricPrefix", "symbols": ["giga"], "postprocess": function postprocess() { - return 'e9 '; - } }, { "name": "rMetricPrefix", "symbols": ["mega"], "postprocess": function postprocess() { - return 'e6 '; - } }, { "name": "rMetricPrefix", "symbols": ["kilo"], "postprocess": function postprocess() { - return 'e3 '; - } }, { "name": "rMetricPrefix", "symbols": ["R"], "postprocess": function postprocess() { - return ''; - } }, { "name": "cMetricPrefix", "symbols": ["micro"], "postprocess": function postprocess() { - return 'e-6 '; - } }, { "name": "cMetricPrefix", "symbols": ["nano"], "postprocess": function postprocess() { - return 'e-9 '; - } }, { "name": "cMetricPrefix", "symbols": ["pico"], "postprocess": function postprocess() { - return 'e-12'; - } }], - ParserStart: "main" - }; - if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { - module.exports = grammar; - } else { - window.grammar = grammar; - } -})(); \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 702a539..0000000 --- a/lib/index.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -var parse = require('./parse'); -var matchCPL = require('./match_cpl'); -module.exports = { parse: parse, matchCPL: matchCPL }; \ No newline at end of file diff --git a/lib/lexer.js b/lib/lexer.js deleted file mode 100644 index acea49f..0000000 --- a/lib/lexer.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -var moo = require('moo'); - -var lexer = moo.compile({ - percent: { - match: /(?:\+\/?-|±)?\s*\d+\.?\d*\s*%(?:\s+|$)/, - value: function value(x) { - return x.split(' ').join(''); - } - }, - number: { - match: /\d+\.?\d*\s+[^0-9+±]\S*(?:\s+|$)/, - value: function value(x) { - return x.split(' ').join(''); - } - }, - word: { - match: /\S+(?:\s+|$)/, - value: function value(x) { - return x.trim(); - } - } -}); - -module.exports = lexer; \ No newline at end of file diff --git a/lib/match_cpl.js b/lib/match_cpl.js deleted file mode 100644 index b527ce6..0000000 --- a/lib/match_cpl.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -var resistors = require('./cpl_resistors'); -var capacitors = require('./cpl_capacitors'); -var leds = require('./cpl_leds'); - -function matchCPL(component) { - component = component || {}; - switch (component.type) { - case 'capacitor': - return matchCapacitor(component); - case 'resistor': - return matchResistor(component); - case 'led': - return matchLED(component); - } - return []; -} - -function matchResistor(c) { - return resistors.reduce(function (prev, cpl) { - var resistance = cpl.resistance === c.resistance; - var size = c.size == null || cpl.size === c.size; - var tolerance = c.tolerance == null || cpl.tolerance <= c.tolerance; - var power_rating = c.power_rating == null || cpl.power_rating >= c.power_rating; - if (resistance && size && tolerance && power_rating) { - return prev.concat([cpl.cplid]); - } - return prev; - }, []); -} - -function matchCapacitor(c) { - return capacitors.reduce(function (prev, cpl) { - var capacitance = cpl.capacitance === c.capacitance; - var size = c.size == null || cpl.size === c.size; - var characteristic = c.characteristic == null || cpl.characteristic === c.characteristic; - var tolerance = c.tolerance == null || cpl.tolerance <= c.tolerance; - var voltage_rating = c.voltage_rating == null || cpl.voltage_rating >= c.voltage_rating; - if (capacitance && size && characteristic && tolerance && voltage_rating) { - return prev.concat([cpl.cplid]); - } - return prev; - }, []); -} - -function matchLED(c) { - return leds.reduce(function (prev, cpl) { - var color = c.color == null || cpl.color === c.color; - var size = c.size == null || cpl.size === c.size; - if (color && size) { - return prev.concat([cpl.cplid]); - } - return prev; - }, []); -} - -module.exports = matchCPL; \ No newline at end of file diff --git a/lib/parse.js b/lib/parse.js deleted file mode 100644 index 24c8787..0000000 --- a/lib/parse.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var moo = require('moo'); -var nearley = require('nearley'); -var equals = require('./equals'); - -var compiledGrammar = require('./grammar'); -var grammar = nearley.Grammar.fromCompiled(compiledGrammar); - -function assignAll(objs) { - return objs.reduce(function (prev, obj) { - return _extends(prev, obj); - }, {}); -} - -function parse(str) { - var parser = new nearley.Parser(grammar); - - var words = str.split(/;|,| /).filter(function (word) { - return word !== ''; - }).map(function (word) { - return word + ' '; - }); - - var info = parser.save(); - var initialInfo = parser.save(); - - var r = words.reduce(function (prev, word) { - // if it fails, roll it back - var ignored = prev.ignored; - var maybeIgnored = prev.maybeIgnored; - var failed = false; - var hasPrev = Object.keys(prev.component).length !== 0; - try { - parser.feed(word); - } catch (e) { - if (!hasPrev) { - try { - parser.restore(initialInfo); - parser.feed(word); - ignored += maybeIgnored; - } catch (e) { - failed = true; - parser.restore(info); - ignored += maybeIgnored + word; - maybeIgnored = ''; - } - } else { - failed = true; - parser.restore(info); - ignored += maybeIgnored + word; - maybeIgnored = ''; - } - } - var component = assignAll(parser.results[0] || []); - var empty = Object.keys(component).length === 0; - if (!failed) { - var eq = equals(component, prev.component); - var isNumber = !isNaN(parseFloat(word)); - if (isNumber && (eq || empty)) { - // the parser waits for further input on numbers so we can't be - // sure it has been ignored - maybeIgnored += word; - } else if (hasPrev && (eq || empty)) { - ignored += maybeIgnored + word; - maybeIgnored = ''; - } else { - maybeIgnored = ''; - info = parser.save(); - } - } - return { - component: _extends(prev.component, component), - ignored: ignored, - maybeIgnored: maybeIgnored - }; - }, { component: {}, ignored: '', maybeIgnored: '' }); - - return { - component: r.component, - ignored: (r.ignored + r.maybeIgnored).trim() - }; -} - -module.exports = parse; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1e0955d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1840 @@ +{ + "name": "_electro-grammar", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.0.tgz", + "integrity": "sha512-ukB2dF+u4aeJjc6IGtPNnJXfeby5d4ZqySlIBT0OEyva/DrMjVm5HkQxKnHDLKEfEQBsEnwTg9HHhtPHJdTd8w==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nyc": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", + "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.4", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.1.1", + "yargs": "10.0.3", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true, + "dev": true + }, + "core-js": { + "version": "2.5.3", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "bundled": true, + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "bundled": true, + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true, + "dev": true + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true, + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "semver": { + "version": "5.4.1", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "10.0.3", + "bundled": true, + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "prettier": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.10.2.tgz", + "integrity": "sha512-TcdNoQIWFoHblurqqU6d1ysopjq7UX0oRcT/hJ8qvBAELiYWn+Ugf0AXdnzISEJ7vuhNnQ98N8jR8Sh53x4IZg==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/package.json b/package.json index cf61a7d..1ca5fb5 100644 --- a/package.json +++ b/package.json @@ -1,43 +1,21 @@ { "name": "electro-grammar", - "description": "Parser electronic components descriptions such as surface-mount resistors and capacitors.", - "version": "1.0.0", - "main": "lib/index.js", - "scripts": { - "build:grammar": "nearleyc src/grammar.ne --out src/grammar.js", - "build:lib": "babel src/ -d lib/", - "build:cpl": "node prepare_cpl.js", - "demo": "browserify docs/index.js > docs/bundle.js", - "build": "npm run build:grammar && npm run build:lib", - "pretest": "npm run build", - "test": "nyc -- mocha --check-leaks", - "coverage": "nyc report", - "coverage:html": "nyc report --reporter=html", - "test:browser": "zuul --local -- test/*.js", - "pretest:sauce": "babel test/ -d test-lib/", - "test:sauce": "zuul -- test-lib/*.js" - }, - "dependencies": { - "moo": "^0.4.3", - "nearley": "https://github.com/kasbah/nearley#fix-include" - }, + "private": true, "devDependencies": { - "babel-cli": "^6.24.1", - "babel-plugin-transform-object-assign": "^6.22.0", - "babel-preset-es2015": "^6.24.1", "better-assert": "^1.0.2", - "browserify": "^14.4.0", "js-yaml": "^3.9.1", - "mocha": "^3.3.0", - "nyc": "^11.1.0", - "zuul": "^3.11.1" + "mocha": "^5.0.0", + "nyc": "^11.4.1", + "prettier": "^1.10.2" + }, + "scripts": { + "test": "pipenv run nyc -- mocha --check-leaks --recursive --timeout 6000", + "test-no-python": "DISABLE_PYTHON_TESTS=1 npm test", + "coverage": "nyc report", + "coverage:html": "nyc report --reporter=html", + "fmt:js": "prettier --write test/**/*.js js/lib/**/*.js", + "fmt:py": "pipenv run autopep8 --in-place python3/**/*.py", + "fmt": "npm run fmt:js && npm run fmt:py" }, - "babel": { - "presets": [ - "es2015" - ], - "plugins": [ - "transform-object-assign" - ] - } + "dependencies": {} } diff --git a/prepare_cpl.js b/prepare_cpl.js index 7013d7b..9bd8310 100644 --- a/prepare_cpl.js +++ b/prepare_cpl.js @@ -1,43 +1,43 @@ -const yaml = require('js-yaml') -const fs = require('fs') -const parse = require('./src/parse') +const yaml = require('js-yaml'); +const fs = require('fs'); +const {parse} = require('./js/lib/lax_parser.js'); -let resistors = fs.readFileSync('./cpl-data/CPL for Production/Resistors.yaml') -resistors = yaml.safeLoad(resistors) +let resistors = fs.readFileSync('./cpl-data/CPL for Production/Resistors.yaml'); +resistors = yaml.safeLoad(resistors); resistors = resistors.rows.map(r => { //ignore potentiometers and resistor arrays if (!/RES/.test(r.cplid)) { - return + return null; } - const v = parse(r.title) + const v = parse(r.title); if (v.type === 'resistor') { - v.cplid = r.cplid - return v + v.cplid = r.cplid; + return v; } -}).filter(v => v) -resistors = 'module.exports = ' + JSON.stringify(resistors, null, 2) -fs.writeFileSync('./lib/cpl_resistors.js', resistors) +}).filter(v => v); +resistors = JSON.stringify(resistors, null, 2); +fs.writeFileSync('./db/resistor.json', resistors); -let capacitors = fs.readFileSync('./cpl-data/CPL for Production/Capacitors.yaml') -capacitors = yaml.safeLoad(capacitors) +let capacitors = fs.readFileSync('./cpl-data/CPL for Production/Capacitors.yaml'); +capacitors = yaml.safeLoad(capacitors); capacitors = capacitors.rows.map(c => { - const v = parse(`${c.title} ${c.extravals.Characteristic}`) + const v = parse(`${c.title} ${c.extravals.Characteristic}`); if (v.type === 'capacitor') { - v.cplid = c.cplid - return v + v.cplid = c.cplid; + return v; } -}).filter(v => v) -capacitors = 'module.exports = ' + JSON.stringify(capacitors, null, 2) -fs.writeFileSync('./lib/cpl_capacitors.js', capacitors) +}).filter(v => v); +capacitors = JSON.stringify(capacitors, null, 2); +fs.writeFileSync('./db/capacitor.json', capacitors); -let leds = fs.readFileSync('./cpl-data/CPL for Production/LEDs.yaml') -leds = yaml.safeLoad(leds) +let leds = fs.readFileSync('./cpl-data/CPL for Production/LEDs.yaml'); +leds = yaml.safeLoad(leds); leds = leds.rows.map(c => { - const v = parse(c.title) + const v = parse(c.title); if (v.type === 'led') { - v.cplid = c.cplid - return v + v.cplid = c.cplid; + return v; } -}).filter(v => v) -leds = 'module.exports = ' + JSON.stringify(leds, null, 2) -fs.writeFileSync('./lib/cpl_leds.js', leds) +}).filter(v => v); +leds = JSON.stringify(leds, null, 2); +fs.writeFileSync('./db/diode.json', leds); diff --git a/python/build b/python/build deleted file mode 100755 index d87a400..0000000 --- a/python/build +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -python -m lark.tools.nearley ../src/grammar.ne main ../node_modules/nearley > grammar.py diff --git a/python/easy_skidl_demo.ipynb b/python/easy_skidl_demo.ipynb deleted file mode 100644 index 6568a68..0000000 --- a/python/easy_skidl_demo.ipynb +++ /dev/null @@ -1,205 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "%3\n", - "\n", - "\n", - "GND\n", - "\n", - "GND\n", - "\n", - "\n", - "C1\n", - "\n", - "C1\n", - "100n\n", - "\n", - "\n", - "C1->GND\n", - "\n", - "\n", - "\n", - "N$1\n", - "\n", - "\n", - "\n", - "C1->N$1\n", - "\n", - "\n", - "\n", - "D1\n", - "\n", - "D1\n", - "red\n", - "\n", - "\n", - "D1->GND\n", - "\n", - "\n", - "\n", - "N$2\n", - "\n", - "\n", - "\n", - "D1->N$2\n", - "\n", - "\n", - "\n", - "R2\n", - "\n", - "R2\n", - "1k\n", - "\n", - "\n", - "R2->N$1\n", - "\n", - "\n", - "\n", - "VIN\n", - "\n", - "VIN\n", - "\n", - "\n", - "R2->VIN\n", - "\n", - "\n", - "\n", - "R1\n", - "\n", - "R1\n", - "1k\n", - "\n", - "\n", - "R1->N$2\n", - "\n", - "\n", - "\n", - "R1->VIN\n", - "\n", - "\n", - "\n", - "R3\n", - "\n", - "R3\n", - "5k\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import skidl\n", - "from easy_skidl import *\n", - "\n", - "default_circuit.mini_reset()\n", - "\n", - "r1 = resistor('1k 0603')\n", - "r2, r3 = r1 * 2\n", - "r3.value = '5k'\n", - "\n", - "c1 = capacitor('0.1uF 0805')\n", - "\n", - "led1 = led('0805 red')\n", - "\n", - "vin = skidl.Net('VIN')\n", - "gnd = skidl.Net('GND')\n", - "\n", - "vin += r1[1], r2[1]\n", - "r2[2] += c1[1]\n", - "c1[2] += gnd\n", - "led1['a'] += r1[2]\n", - "led1['k'] += gnd\n", - "\n", - "skidl.generate_graph()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#easy_skidl.py\n", - "import skidl\n", - "import electro_grammar\n", - "from quantiphy import Quantity\n", - "\n", - "def component(description):\n", - " c = electro_grammar.parse(description)\n", - " if c['type'] == 'resistor':\n", - " p = skidl.Part('device', 'R')\n", - " p.value = Quantity(c['resistance'])\n", - " if 'size' in c:\n", - " p.footprint = 'Resistors_SMD:R_{}'.format(c['size'])\n", - " return p\n", - " elif c['type'] == 'capacitor':\n", - " p = skidl.Part('device', 'C')\n", - " p.value = Quantity(c['capacitance'])\n", - " if 'size' in c:\n", - " p.footprint = 'Capacitors_SMD:C_{}'.format(c['size'])\n", - " return p\n", - " elif c['type'] == 'led':\n", - " p = skidl.Part('device', 'LED')\n", - " p.value = c['color']\n", - " if 'size' in c:\n", - " p.footprint = 'LEDS:LED_{}'.format(c['size'])\n", - " return p\n", - " raise Exception('could not determine component type from \"{}\"'.format(description))\n", - "\n", - "def resistor(description=''):\n", - " return component(description)\n", - "\n", - "def capacitor(description=''):\n", - " return component(description)\n", - "\n", - "def led(description=''):\n", - " return component('led ' + description)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/python/electro_grammar.py b/python/electro_grammar.py deleted file mode 100644 index a5b3e39..0000000 --- a/python/electro_grammar.py +++ /dev/null @@ -1,10 +0,0 @@ -from lark import Lark -from grammar import grammar, TransformNearley - -parser = Lark(grammar, start="n_main", parser='earley', lexer=None, earley__all_derivations=False) -def parse(text): - specs = TransformNearley().transform(parser.parse(text)) - component = {} - for s in specs: - component.update(s) - return component diff --git a/python/grammar.py b/python/grammar.py deleted file mode 100644 index ac3055e..0000000 --- a/python/grammar.py +++ /dev/null @@ -1,696 +0,0 @@ -4 -from lark import Lark, Transformer - -grammar = u'!n_unsigned_int: xrule_0-> alias_0\n!n_int: xrule_3 xrule_0-> alias_1\n!n_unsigned_decimal: xrule_0 xrule_5-> alias_2\n!n_decimal: xrule_6 xrule_0 xrule_5-> alias_3\n!n_percentage: n_decimal xrule_7-> alias_4\n!n_jsonfloat: xrule_6 xrule_0 xrule_5 xrule_9-> alias_5\n!n__ws_maybe: xrule_10-> alias_6\n!n__ws: xrule_11-> alias_7\n!n_a: xrule_12\n |xrule_13\n!n_b: xrule_14\n |xrule_15\n!n_c: xrule_16\n |xrule_17\n!n_d: xrule_18\n |xrule_19\n!n_e: xrule_20\n |xrule_21\n!n_f: xrule_22\n |xrule_23\n!n_g: xrule_24\n |xrule_25\n!n_h: xrule_26\n |xrule_27\n!n_i: xrule_28\n |xrule_29\n!n_j: xrule_30\n |xrule_31\n!n_k: xrule_32\n |xrule_33\n!n_l: xrule_34\n |xrule_35\n!n_m: xrule_36\n |xrule_37\n!n_n: xrule_38\n |xrule_39\n!n_o: xrule_40\n |xrule_41\n!n_p: xrule_42\n |xrule_43\n!n_q: xrule_44\n |xrule_45\n!n_r: xrule_46\n |xrule_47\n!n_s: xrule_48\n |xrule_49\n!n_t: xrule_50\n |xrule_51\n!n_u: xrule_52\n |xrule_53\n!n_v: xrule_54\n |xrule_55\n!n_w: xrule_56\n |xrule_57\n!n_x: xrule_58\n |xrule_59\n!n_y: xrule_60\n |xrule_61\n!n_z: xrule_62\n |xrule_63\n!n_exa: xrule_20\n |n_e n_x n_a\n!n_peta: xrule_42\n |n_p n_e n_t n_a\n!n_tera: xrule_50\n |n_t n_e n_r n_a\n!n_giga: xrule_24\n |n_g n_i n_g n_a\n!n_mega: xrule_36\n |n_m n_e n_g n_a\n!n_kilo: xrule_33\n |n_k n_i n_l n_o\n!n_hecto: xrule_27\n |n_h n_e n_c n_t n_o\n!n_deci: xrule_19\n |n_d n_e n_c n_i\n!n_centi: xrule_17\n |n_c n_e n_n n_t n_i\n!n_milli: xrule_37\n |n_m n_i n_l n_l n_i\n!n_micro: xrule_53\n |/[\\u03BC]/\n |/[\\u00B5]/\n |/[\\uD835]/ /[\\uDECD]/\n |/[\\uD835]/ /[\\uDF07]/\n |/[\\uD835]/ /[\\uDF41]/\n |/[\\uD835]/ /[\\uDF7B]/\n |/[\\uD835]/ /[\\uDFB5]/\n |n_m n_i n_c n_r n_o\n!n_nano: xrule_39\n |n_n n_a n_n n_o\n!n_pico: xrule_43\n |n_p n_i n_c n_o\n!n_femto: xrule_23\n |n_f n_e n_m n_t n_o\n!n_atto: xrule_13\n |n_a n_t n_t n_o\n!n_packagesize: n__packagesize-> alias_8\n!n__packagesize: n__imperialsize\n |n__metricsize\n!n__imperialsize: xrule_64\n |xrule_65\n |xrule_66\n |xrule_67\n |xrule_68\n |xrule_69\n |xrule_70\n |xrule_71\n |xrule_72\n |xrule_73\n |xrule_74\n!n__metricsize: n___metricsize xrule_10 n_m n_e n_t n_r n_i n_c-> alias_9\n |n_m n_e n_t n_r n_i n_c xrule_10 n___metricsize-> alias_10\n |n_unambigiousmetricsize-> alias_11\n!n_unambigiousmetricsize: xrule_75\n |xrule_76\n |xrule_77\n |xrule_78\n |xrule_79\n |xrule_80\n |xrule_81\n |xrule_82\n |xrule_83\n!n___metricsize: n_unambigiousmetricsize\n |xrule_66\n |xrule_67\n!n_main: n__ws_maybe n_main_ n__ws_maybe-> alias_12\n!n_main_: n_component\n!n_component: n_capacitor-> alias_13\n |n_resistor-> alias_14\n |n_led-> alias_15\n |n_packagesize-> alias_16\n |n_tolerance-> alias_17\n |n_voltage_rating-> alias_18\n |n_cap_-> alias_19\n |n_res_-> alias_20\n!n_capacitor: n_cspecs n_capacitance n_cspecs\n |n_cap n_cspecs n_capacitancenofarad\n |n_capacitance n_cspecs\n!n_cap: n_cap_ n__ws-> alias_21\n!n_cap_: xrule_17 n_i\n |xrule_84 n_i\n |xrule_85 n_i\n!n_cspecs: xrule_86\n |n__ws\n!n_cspec: n_tolerance\n |n_characteristic\n |n_voltage_rating\n |n_packagesize\n!n_voltage_rating: n_decimal n__ws_maybe n_v-> alias_22\n!n_characteristic: n_characteristic_-> alias_23\n!n_characteristic_: n_class1\n |n_class2\n!n_class1: n_class1_ceramic_name-> alias_24\n |n_class1_eia_code-> alias_25\n |n_class1_ceramic_name n__ws_maybe xrule_87 n__ws_maybe n_class1_eia_code-> alias_26\n |n_class1_eia_code n__ws_maybe xrule_87 n__ws_maybe n_class1_ceramic_name-> alias_27\n!n_class1_ceramic_name: n_c xrule_88 n_g-> alias_28\n |n_p xrule_89-> alias_29\n |n_n xrule_90-> alias_30\n |n_n xrule_91-> alias_31\n |n_n xrule_92-> alias_32\n |n_n xrule_93-> alias_33\n |n_n xrule_94-> alias_34\n |n_n xrule_95-> alias_35\n |n_n xrule_96-> alias_36\n |n_n xrule_97-> alias_37\n |n_n xrule_98-> alias_38\n!n_class1_eia_code: n_n n_p xrule_88-> alias_39\n |n_m xrule_99 n_g-> alias_40\n |n_h xrule_100 n_g-> alias_41\n |n_l xrule_100 n_g-> alias_42\n |n_p xrule_100 n_h-> alias_43\n |n_r xrule_100 n_h-> alias_44\n |n_s xrule_100 n_h-> alias_45\n |n_t xrule_100 n_h-> alias_46\n |n_u xrule_100 n_j-> alias_47\n |n_q xrule_101 n_k-> alias_48\n |n_p xrule_101 n_k-> alias_49\n!n_class2: n_class2_letter n_class2_number n_class2_code-> alias_50\n!n_class2_letter: n_x\n |n_y\n |n_z\n!n_class2_number: xrule_102\n |xrule_103\n |xrule_104\n |xrule_99\n |xrule_105\n |xrule_106\n!n_class2_code: n_p\n |n_r\n |n_s\n |n_t\n |n_u\n |n_v\n!n_tolerance: xrule_107 n_decimal n__ws_maybe xrule_7-> alias_51\n!n_plusminus: xrule_108\n |xrule_109\n |xrule_110\n!n_capacitance: n_decimal n__ws_maybe xrule_111 n__ws_maybe n_farad-> alias_52\n!n_capacitancenofarad: n_decimal n__ws_maybe xrule_111-> alias_53\n!n_farad: n_f-> alias_54\n |n_f n_a n_r n_a n_d-> alias_55\n!n_resistor: xrule_112 n_rspecs n_resistance n_rspecs\n!n_res: n_res_ n__ws-> alias_56\n!n_res_: xrule_47 n_i\n |xrule_113 n_i\n |xrule_114 n_i\n!n_rspecs: xrule_115\n |n__ws\n!n_rspec: n_tolerance\n |n_power_rating\n |n_packagesize\n!n_power_rating: n_decimal n__ws_maybe xrule_116 n__ws_maybe n_watts-> alias_57\n!n_watts: n_watts_-> alias_58\n!n_watts_: n_w\n |n_w n_a n_t n_t n_s\n!n_resistance: n_decimal n__ws_maybe n_rest-> alias_59\n!n_rest: n_rmetricprefix xrule_117 xrule_118\n |n_ohm\n!n_ohm: n_ohm_-> alias_60\n!n_ohm_: n_o n_h n_m\n |xrule_119\n |xrule_120\n!n_led: n_led_letters n_ledspecs\n |n_ledspecs n_led_letters\n |n_ledspecs n_led_letters n_ledspecs\n!n_led_letters: n_l n_e n_d-> alias_61\n!n_ledspecs: xrule_121\n!n_ledspec: n_packagesize\n |n_color\n!n_color: n_color_name-> alias_62\n!n_color_name: n_r n_e n_d-> alias_63\n |n_g n_r n_e n_e n_n-> alias_64\n |n_b n_l n_u n_e-> alias_65\n |n_y n_e n_l n_l n_o n_w-> alias_66\n |n_o n_r n_a n_n n_g n_e-> alias_67\n |n_w n_h n_i n_t n_e-> alias_68\n |n_a n_m n_b n_e n_r-> alias_69\n |n_c n_y n_a n_n-> alias_70\n |n_p n_u n_r n_p n_l n_e-> alias_71\n |n_y n_e n_l n_l n_o n_w n__ws_maybe n_g n_r n_e n_e n_n-> alias_72\n!n_powermetricprefix: n_giga-> alias_73\n |n_mega-> alias_74\n |n_kilo-> alias_75\n |n_milli-> alias_76\n |n_micro-> alias_77\n |n_nano-> alias_78\n |n_pico-> alias_79\n |n_femto-> alias_80\n!n_rmetricprefix: n_giga-> alias_81\n |n_mega-> alias_82\n |n_kilo-> alias_83\n |n_r-> alias_84\n!n_cmetricprefix: n_micro-> alias_85\n |n_nano-> alias_86\n |n_pico-> alias_87\n!xrule_121: (n__ws_maybe n_ledspec n__ws_maybe)+\n!xrule_120: "\u2126"\n!xrule_69: "1008"\n!xrule_68: "0805"\n!xrule_67: "0603"\n!xrule_66: "0402"\n!xrule_65: "0201"\n!xrule_64: "01005"\n!xrule_63: "z"\n!xrule_62: "Z"\n!xrule_61: "y"\n!xrule_60: "Y"\n!xrule_52: "U"\n!xrule_53: "u"\n!xrule_50: "T"\n!xrule_51: "t"\n!xrule_56: "W"\n!xrule_57: "w"\n!xrule_54: "V"\n!xrule_55: "v"\n!xrule_58: "X"\n!xrule_59: "x"\n!xrule_30: "J"\n!xrule_31: "j"\n!xrule_32: "K"\n!xrule_33: "k"\n!xrule_34: "L"\n!xrule_35: "l"\n!xrule_36: "M"\n!xrule_37: "m"\n!xrule_38: "N"\n!xrule_39: "n"\n!xrule_103: "5"\n!xrule_102: "4"\n!xrule_101: "3"\n!xrule_100: "2"\n!xrule_107: (n_plusminus n__ws_maybe)?\n!xrule_106: "9"\n!xrule_105: "8"\n!xrule_104: "6"\n!xrule_109: "\xb1"\n!xrule_108: "+/-"\n!xrule_45: "q"\n!xrule_44: "Q"\n!xrule_47: "r"\n!xrule_46: "R"\n!xrule_41: "o"\n!xrule_40: "O"\n!xrule_43: "p"\n!xrule_42: "P"\n!xrule_49: "s"\n!xrule_48: "S"\n!xrule_23: "f"\n!xrule_22: "F"\n!xrule_21: "e"\n!xrule_20: "E"\n!xrule_27: "h"\n!xrule_26: "H"\n!xrule_25: "g"\n!xrule_24: "G"\n!xrule_29: "i"\n!xrule_28: "I"\n!xrule_114: "resistor"\n!xrule_115: (n__ws_maybe n_rspec n__ws_maybe)*\n!xrule_116: (n_powermetricprefix)?\n!xrule_117: (n_int)?\n!xrule_110: "+-"\n!xrule_111: (n_cmetricprefix)?\n!xrule_112: (n_res)?\n!xrule_113: "res"\n!xrule_118: (n__ws_maybe n_ohm)?\n!xrule_119: "\u03a9"\n!xrule_8: (/[+-]/)?\n!xrule_9: (/[eE]/ xrule_8 xrule_0)?\n!xrule_4: "."\n!xrule_5: (xrule_4 xrule_0)?\n!xrule_6: (xrule_1)?\n!xrule_7: "%"\n!xrule_0: (/[0-9]/)+\n!xrule_1: "-"\n!xrule_2: "+"\n!xrule_3: (xrule_1\n |xrule_2)?\n!xrule_16: "C"\n!xrule_17: "c"\n!xrule_14: "B"\n!xrule_15: "b"\n!xrule_12: "A"\n!xrule_13: "a"\n!xrule_10: (/[\\s]/)*\n!xrule_11: (/[\\s]/)+\n!xrule_18: "D"\n!xrule_19: "d"\n!xrule_98: "1500"\n!xrule_99: "7"\n!xrule_96: "750"\n!xrule_97: "1000"\n!xrule_94: "330"\n!xrule_95: "470"\n!xrule_92: "150"\n!xrule_93: "220"\n!xrule_90: "33"\n!xrule_91: "75"\n!xrule_81: "4516"\n!xrule_80: "3225"\n!xrule_83: "6332"\n!xrule_82: "5025"\n!xrule_85: "capacitor"\n!xrule_84: "cap"\n!xrule_87: "/"\n!xrule_86: (n__ws_maybe n_cspec n__ws_maybe)*\n!xrule_89: "100"\n!xrule_88: "0"\n!xrule_78: "2520"\n!xrule_79: "3216"\n!xrule_74: "2512"\n!xrule_75: "1005"\n!xrule_76: "1608"\n!xrule_77: "2012"\n!xrule_70: "1206"\n!xrule_71: "1210"\n!xrule_72: "1806"\n!xrule_73: "2010"' - -from js2py.pyjs import * -# setting scope -var = Scope( JS_BUILTINS ) -set_global_object(var) - -# Code follows: -var.registers([u'toImperial', u'type', u'resistance', u'filter', u'capacitance', u'_flatten', u'flatten', u'nuller', u'id']) -@Js -def PyJsHoisted_nuller_(this, arguments, var=var): - var = Scope({u'this':this, u'arguments':arguments}, var) - var.registers([]) - return var.get(u"null") -PyJsHoisted_nuller_.func_name = u'nuller' -var.put(u'nuller', PyJsHoisted_nuller_) -@Js -def PyJsHoisted_resistance_(d, i, reject, this, arguments, var=var): - var = Scope({u'i':i, u'this':this, u'd':d, u'arguments':arguments, u'reject':reject}, var) - var.registers([u'ohm', u'd', u'i', u'integral', u'reject', u'metricPrefix', u'fractional', u'quantity']) - var.put(u'integral', var.get(u'd').get(u'0')) - var.put(u'metricPrefix', var.get(u'd').get(u'2').get(u'0')) - var.put(u'fractional', var.get(u'd').get(u'2').get(u'1')) - var.put(u'ohm', var.get(u'd').get(u'2').get(u'2')) - if var.get(u'fractional'): - if JsRegExp(u'/\\./').callprop(u'test', var.get(u'integral').callprop(u'toString')): - return var.get(u'reject') - var.put(u'quantity', ((var.get(u'integral')+Js(u'.'))+var.get(u'fractional'))) - else: - var.put(u'quantity', var.get(u'integral')) - PyJs_Object_5_ = Js({u'resistance':var.get(u'parseFloat')((var.get(u'quantity')+(var.get(u'metricPrefix') or Js(u''))))}) - return PyJs_Object_5_ -PyJsHoisted_resistance_.func_name = u'resistance' -var.put(u'resistance', PyJsHoisted_resistance_) -@Js -def PyJsHoisted_filter_(d, this, arguments, var=var): - var = Scope({u'this':this, u'd':d, u'arguments':arguments}, var) - var.registers([u'd']) - @Js - def PyJs_anonymous_0_(t, this, arguments, var=var): - var = Scope({u'this':this, u't':t, u'arguments':arguments}, var) - var.registers([u't']) - return (var.get(u't')!=var.get(u"null")) - PyJs_anonymous_0_._set_name(u'anonymous') - return var.get(u'd').callprop(u'filter', PyJs_anonymous_0_) -PyJsHoisted_filter_.func_name = u'filter' -var.put(u'filter', PyJsHoisted_filter_) -@Js -def PyJsHoisted_capacitance_(d, this, arguments, var=var): - var = Scope({u'this':this, u'd':d, u'arguments':arguments}, var) - var.registers([u'farad', u'metricPrefix', u'd', u'quantity']) - var.put(u'quantity', var.get(u'd').get(u'0')) - var.put(u'metricPrefix', var.get(u'd').get(u'2')) - var.put(u'farad', var.get(u'd').get(u'4')) - PyJs_Object_4_ = Js({u'capacitance':var.get(u'parseFloat')((var.get(u'quantity')+(var.get(u'metricPrefix') or Js(u''))))}) - return PyJs_Object_4_ -PyJsHoisted_capacitance_.func_name = u'capacitance' -var.put(u'capacitance', PyJsHoisted_capacitance_) -@Js -def PyJsHoisted__flatten_(arr, res, this, arguments, var=var): - var = Scope({u'this':this, u'res':res, u'arr':arr, u'arguments':arguments}, var) - var.registers([u'i', u'res', u'arr', u'cur', u'len']) - var.put(u'i', Js(0.0)) - var.put(u'len', var.get(u'arr').get(u'length')) - #for JS loop - - while (var.get(u'i') skip; diff --git a/src/Package.g4 b/src/Package.g4 new file mode 100644 index 0000000..229cce0 --- /dev/null +++ b/src/Package.g4 @@ -0,0 +1,236 @@ +grammar PackageSize; +import Alphabet, Units; + +/* Rule for testing package parsing */ +all_packages: + package_chip +| package_eia +| package_panasonic +| package_sod +| package_melf +| package_do214 +| package_sot +| package_dpak; + + +/* Lexer rules for recognizing package names */ +// https://en.wikipedia.org/wiki/Surface-mount_technology + +/* Chip packages */ +package_chip: package_chip_unambiguous | package_chip_ambiguous; + +package_chip_ambiguous: + CHIP_0201 +| CHIP_0402 +| CHIP_0603; + +package_chip_unambiguous: + CHIP_i008004 +| CHIP_i009005 +| CHIP_i01005 +| CHIP_i0201 +| CHIP_i0402 +| CHIP_i0603 +| CHIP_i0805 +| CHIP_i1008 +| CHIP_i1206 +| CHIP_i1210 +| CHIP_i1806 +| CHIP_i1812 +| CHIP_i1825 +| CHIP_i2010 +| CHIP_i2512 +| CHIP_i2920; + +CHIP_i008004: '008004' | IMPERIAL '008004' | '008004' IMPERIAL | CHIP_m0201; +CHIP_i009005: '009005' | IMPERIAL '009005' | '009005' IMPERIAL | CHIP_m03015; +CHIP_i01005: '01005' | IMPERIAL '01005' | '01005' IMPERIAL | CHIP_m0402; +CHIP_i0201: IMPERIAL CHIP_0201 | CHIP_0201 IMPERIAL | CHIP_m0603; +CHIP_i0402: IMPERIAL CHIP_0402 | CHIP_0402 IMPERIAL | CHIP_m1005; +CHIP_i0603: IMPERIAL CHIP_0603 | CHIP_0603 IMPERIAL | CHIP_m1608; +CHIP_i0805: '0805' | IMPERIAL '0805' | '0805' IMPERIAL | CHIP_m2012; +CHIP_i1008: '1008' | IMPERIAL '1008' | '1008' IMPERIAL | CHIP_m2520; +CHIP_i1206: '1206' | IMPERIAL '1206' | '1206' IMPERIAL | CHIP_m3216; +CHIP_i1210: '1210' | IMPERIAL '1210' | '1210' IMPERIAL | CHIP_m3225; +CHIP_i1806: '1806' | IMPERIAL '1806' | '1806' IMPERIAL | CHIP_m4516; +CHIP_i1812: '1812' | IMPERIAL '1812' | '1812' IMPERIAL | CHIP_m4532; +CHIP_i1825: '1825' | IMPERIAL '1825' | '1825' IMPERIAL | CHIP_m4564; +CHIP_i2010: '2010' | IMPERIAL '2010' | '2010' IMPERIAL | CHIP_m5025; +CHIP_i2512: '2512' | IMPERIAL '2512' | '2512' IMPERIAL | CHIP_m6332; +CHIP_i2920: '2920' | IMPERIAL '2920' | '2920' IMPERIAL | CHIP_m7451; + +CHIP_m0201: METRIC CHIP_0201 | CHIP_0201 METRIC; +CHIP_m03015: '03015' | METRIC '03015' | '03015' METRIC; +CHIP_m0402: METRIC CHIP_0402 | CHIP_0402 METRIC; +CHIP_m0603: METRIC CHIP_0603 | CHIP_0603 METRIC; +CHIP_m1005: '1005' | METRIC '1005' | '1005' METRIC; +CHIP_m1608: '1608' | METRIC '1608' | '1608' METRIC; +CHIP_m2012: '2012' | METRIC '2012' | '2012' METRIC; +CHIP_m2520: '2520' | METRIC '2520' | '2520' METRIC; +CHIP_m3216: '3216' | METRIC '3216' | '3216' METRIC; +CHIP_m3225: '3225' | METRIC '3225' | '3225' METRIC; +CHIP_m4516: '4516' | METRIC '4516' | '4516' METRIC; +CHIP_m4532: '4532' | METRIC '4532' | '4532' METRIC; +CHIP_m4564: '4564' | METRIC '4564' | '4564' METRIC; +CHIP_m5025: '5025' | METRIC '5025' | '5025' METRIC; +CHIP_m6332: '6332' | METRIC '6332' | '6332' METRIC; +CHIP_m7451: '7451' | METRIC '7451' | '7451' METRIC; + +CHIP_0201: '0201'; +CHIP_0402: '0402'; +CHIP_0603: '0603'; + +METRIC: ' '* M E T R I C ' '*; +IMPERIAL: I | ' '* I M P E R I A L ' '*; +/* Chip packages */ + + +/* EIA packages */ +package_eia: + EIA_2012_12 +| EIA_3216_10 +| EIA_3216_12 +| EIA_3216_18 +| EIA_3528_12 +| EIA_3528_21 +| EIA_6032_15 +| EIA_6032_28 +| EIA_7260_38 +| EIA_7343_20 +| EIA_7343_31 +| EIA_7343_43; + +EIA_2012_12: EIA '-2012-12' | KEMET R | AVX R; +EIA_3216_10: EIA '-3216-10' | KEMET I | AVX K; +EIA_3216_12: EIA '-3216-12' | KEMET S | AVX S; +EIA_3216_18: EIA '-3216-18' | KEMET A | AVX A; +EIA_3528_12: EIA '-3528-12' | KEMET T | AVX T; +EIA_3528_21: EIA '-3528-21' | KEMET B | AVX B; +EIA_6032_15: EIA '-6032-15' | KEMET U | AVX W; +EIA_6032_28: EIA '-6032-28' | KEMET C | AVX C; +EIA_7260_38: EIA '-7260-38' | KEMET E | AVX V; +EIA_7343_20: EIA '-7343-20' | KEMET V | AVX Y; +EIA_7343_31: EIA '-7343-31' | KEMET D | AVX D; +EIA_7343_43: EIA '-7343-43' | KEMET X | AVX E; + +fragment EIA: E I A; +fragment KEMET: K E M E T ' '*; +fragment AVX: A V X ' '*; +/* EIA packages */ + + +/* Panasonic packages */ +package_panasonic: + PANASONIC_A +| PANASONIC_B +| PANASONIC_C +| PANASONIC_D +| PANASONIC_E +| PANASONIC_G +| PANASONIC_H +| PANASONIC_J +| PANASONIC_K +| CHEMICON_K; + +PANASONIC_A: PANASONIC A | CHEMICON B; +PANASONIC_B: PANASONIC B | CHEMICON D; +PANASONIC_C: PANASONIC C | CHEMICON E; +PANASONIC_D: PANASONIC D | CHEMICON F; +PANASONIC_E: PANASONIC (E | F) | CHEMICON H; +PANASONIC_G: PANASONIC G | CHEMICON J; +CHEMICON_K: CHEMICON K; +PANASONIC_H: PANASONIC H; +PANASONIC_J: PANASONIC J | CHEMICON L; +PANASONIC_K: PANASONIC K | CHEMICON M; + +fragment PANASONIC: P A N A S O N I C ' '*; +fragment CHEMICON: C H E M I C O N ' '*; +/* Panasonic packages */ + + +/* SOD packages */ +package_sod: + SOD_723 +| SOD_523 +| SOD_323 +| SOD_128 +| SOD_123 +| SOD_80C; + +SOD_723: SOD '723'; +SOD_523: SOD '523' | SC '79'; +SOD_323: SOD '323' | SC '90'; +SOD_128: SOD '128'; +SOD_123: SOD '123'; +SOD_80C: SOD '80' C; + +fragment SOD: S O D; +fragment SC: S C; +/* SOD packages */ + + +/* MELF packages */ +package_melf: + MICRO_MELF +| MINI_MELF +| DEF_MELF; + +MICRO_MELF: MICRO MELF | '0102'; +MINI_MELF: (MILI | MINI) MELF | '0204'; +DEF_MELF: MELF | '0207'; + +fragment MINI: M I N I; +fragment MELF: ' '* M E L F; +/* MELF packages */ + + +/* DO-214 packages */ +package_do214: + DO214_AA +| DO214_AB +| DO214_AC; + +DO214_AA: DO214 A A; +DO214_AB: DO214 A B; +DO214_AC: DO214 A C; + +fragment DO214: D O '214'; +/* DO-214 packages */ + + +/* SOT packages 3/4 Terminal */ +package_sot: + SOT223 +| SOT89 +| SOT23 +| SOT323 +| SOT416 +| SOT663 +| SOT723 +| SOT883; + +SOT223: SOT '223'; +SOT89: SOT '89'; +SOT23: SOT '23'; +SOT323: SOT '323'; +SOT416: SOT '416'; +SOT663: SOT '663'; +SOT723: SOT '723'; +SOT883: SOT '883'; + +fragment SOT: S O T; +/* SOT packages */ + +/* DPAK packages */ +package_dpak: + DPAK +| D2PAK +| D3PAK; + +DPAK: D PAK | TO '252' | SOT '428'; +D2PAK: D '2' PAK | TO '263' | SOT '404'; +D3PAK: D '3' PAK | TO '268'; + +fragment PAK: P A K; +fragment TO: T O; +/* DPAK packages */ \ No newline at end of file diff --git a/src/Passive.g4 b/src/Passive.g4 new file mode 100644 index 0000000..97c1cdd --- /dev/null +++ b/src/Passive.g4 @@ -0,0 +1,22 @@ +grammar Passive; +import Dielectric, Package, Units; + +passive: resistor | capacitor | inductor | oscillator; + +passive: resistor | capacitor | inductor | oscillator; +resistor: resistance rspec*; +rspec: rtype | rpackage | power; +rtype: POT; +rpackage: package_chip; +POT: P O T | P O T E N T I O M E T E R; + +capacitor: capacitance cspec*; +cspec: dielectric | cpackage | voltage; +cpackage: package_chip; + +inductor: inductance lspec*; +lspec: lpackage | current; +lpackage: package_chip; + +oscillator: frequency ospec*; +ospec: capacitance; diff --git a/src/Semi.g4 b/src/Semi.g4 new file mode 100644 index 0000000..dc3b2f5 --- /dev/null +++ b/src/Semi.g4 @@ -0,0 +1,75 @@ +grammar Semi; +import Alphabet, Units; + + +semi: diode | transistor; + + +/* Diodes */ +diode: dspec+; + +dspec: dtype? dcode + | dcode? dtype; +dtype: signal | rectifier | led | schottky | zener; +dcode: DCODE; +DCODE: JEDEC_DIODE_CODE | PRO_ELECTRON_DIODE_CODE; + + +signal: SIGNAL; +SIGNAL: S I G | S I G N A L; + +rectifier: RECTIFIER; +RECTIFIER: R E C T | R E C T I F I E R; + +led: LED? color; +LED: L E D; + +color: COLOR; +COLOR: R E D + | G R E E N + | B L U E + | Y E L L O W + | O R A N G E + | W H I T E + | A M B E R + | C Y A N + | P U R P L E + | Y E L L O W G R E E N; + +schottky: SCHOTTKY; +SCHOTTKY: S K | S C H O T T K Y; + +zener: ZENER? voltage; +ZENER: Z | Z E N | Z E N E R; + + +/* Transistors */ +transistor: ttype? tcode + | tcode? ttype; +ttype: TTYPE; +tcode: TCODE; +TCODE: JEDEC_TRANSISTOR_CODE | PRO_ELECTRON_TRANSISTOR_CODE; + +TTYPE: NPN | PNP | NMOS | PMOS; +fragment NPN: N P N; +fragment PNP: P N P; +fragment NMOS: N M O S; +fragment PMOS: P M O S; + + +/* Device codes */ +fragment ALPHANUM: [0-9a-zA-Z]; + +JEDEC_DIODE_CODE: '1' N DIGIT+; +JEDEC_TRANSISTOR_CODE: [23] N DIGIT+; + +fragment PRO_ELECTRON_MATERIAL: A | B | C | R; + +fragment PRO_ELECTRON_DIODE_TYPE: A | B | E | H | X | Y | Z; +fragment PRO_ELECTRON_TRANSISTOR_TYPE: C | D | F | L | S | U; +fragment PRO_ELECTRON_OTHER_TYPE: G | N | P | Q | R | T | W; + +fragment PRO_ELECTRON_SERIAL: ALPHANUM DIGIT DIGIT ALPHANUM*; + +PRO_ELECTRON_DIODE_CODE: PRO_ELECTRON_MATERIAL PRO_ELECTRON_DIODE_TYPE PRO_ELECTRON_SERIAL; +PRO_ELECTRON_TRANSISTOR_CODE: PRO_ELECTRON_MATERIAL PRO_ELECTRON_TRANSISTOR_TYPE PRO_ELECTRON_SERIAL; \ No newline at end of file diff --git a/src/Units.g4 b/src/Units.g4 new file mode 100644 index 0000000..b911b36 --- /dev/null +++ b/src/Units.g4 @@ -0,0 +1,66 @@ +grammar Units; +import Alphabet; + + +fragment DIGIT: [0-9]; +NUMBER: DIGIT* '.'? DIGIT+ | DIGIT+ '.'? DIGIT*; + + +GIGA: G | G I G A; +MEGA: 'M' | M E G A; +KILO: K | K I L O; +MILI: 'm' | M I L I; +MICRO: U | M I C R O | 'µ'; +NANO: N | N A N O; +PICO: P | P I C O; + +VOLT: V | V O L T; +AMPERE: A | A M P E R E; +WATT: W | W A T T; +OHM: R | O H M | 'Ω'; +FARAD: F | F A R A D; +HENRY: H | H E N R Y; +HERZ: H Z | H E R Z; +SECOND: S | S E C O N D; +CELSIUS: C | C E L S I U S; + +PLUSMINUS: '+/-' | '±' | '+-'; + + +unit: voltage + | current + | power + | resistance + | capacitance + | inductance + | frequency + | time + | temperature; + +tolerance: PLUSMINUS? NUMBER '%'; + +voltage: NUMBER vprefix? VOLT tolerance?; +vprefix: KILO | MILI; + +current: NUMBER aprefix? AMPERE tolerance?; +aprefix: MILI | MICRO | NANO | PICO; + +power: NUMBER pprefix? WATT tolerance?; +pprefix: MILI; + +resistance: NUMBER (rprefix | OHM) tolerance?; +rprefix: MEGA | KILO | MILI; + +capacitance: NUMBER cprefix FARAD tolerance?; +cprefix: MICRO | NANO | PICO; + +inductance: NUMBER lprefix? HENRY tolerance?; +lprefix: MILI | MICRO | NANO; + +frequency: NUMBER fprefix? HERZ tolerance?; +fprefix: GIGA | MEGA | KILO; + +time: NUMBER tprefix? SECOND tolerance?; +tprefix: MILI | MICRO | NANO | PICO; + +temperature: NUMBER '°'? CELSIUS tolerance?; \ No newline at end of file diff --git a/src/equals.js b/src/equals.js deleted file mode 100644 index 6972130..0000000 --- a/src/equals.js +++ /dev/null @@ -1,43 +0,0 @@ -function equals(c1, c2) { - c1 = c1 || {} - c2 = c2 || {} - if (!c1.type && !c2.type) { - return true - } - if (c1.type !== c2.type) { - return false - } - switch (c1.type) { - case 'resistor': - return sameResistor(c1, c2) - case 'capacitor': - return sameCapacitor(c1, c2) - case 'led': - return sameLED(c1, c2) - } -} - -function sameCapacitor(c1, c2) { - return ( - c1.capacitance === c2.capacitance && - c1.size === c2.size && - c1.characteristic === c2.characteristic && - c1.tolerance === c2.tolerance && - c1.voltage_rating === c2.voltage_rating - ) -} - -function sameResistor(c1, c2) { - return ( - c1.resistance === c2.resistance && - c1.size === c2.size && - c1.tolerance === c2.tolerance && - c1.power_rating === c2.power_rating - ) -} - -function sameLED(c1, c2) { - return c1.color === c2.color && c1.size === c2.size -} - -module.exports = equals diff --git a/src/flatten.js b/src/flatten.js deleted file mode 100644 index e204d15..0000000 --- a/src/flatten.js +++ /dev/null @@ -1,23 +0,0 @@ -/*! - * arr-flatten - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -'use strict' - -module.exports = function(arr) { - return flat(arr, []) -} - -function flat(arr, res) { - var i = 0, - cur - var len = arr.length - for (; i < len; i++) { - cur = arr[i] - Array.isArray(cur) ? flat(cur, res) : res.push(cur) - } - return res -} diff --git a/src/grammar.js b/src/grammar.js deleted file mode 100644 index eb02fcc..0000000 --- a/src/grammar.js +++ /dev/null @@ -1,518 +0,0 @@ -// Generated automatically by nearley, version 2.11.0 -// http://github.com/Hardmath123/nearley -(function () { -function id(x) { return x[0]; } - - /*! - * modified from arr-flatten - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - function _flatten(arr, res) { - var i = 0, cur - var len = arr.length - for (; i < len; i++) { - cur = arr[i] - Array.isArray(cur) ? _flatten(cur, res) : res.push(cur) - } - return res - } - - function flatten (arr) { - return _flatten(arr, []) - } - - function filter(d) { - return d.filter(function(t) { - return t != null - }) - } - - function nuller() { - return null - } - - - var toImperial = { - '0402': '01005', - '0603': '0201', - '1005': '0402', - '1608': '0603', - '2012': '0805', - '2520': '1008', - '3216': '1206', - '3225': '1210', - '4516': '1806', - '4532': '1812', - '5025': '2010', - '6332': '2512', - } - - - function type(t) { - return function(d) { - return [{type: t}].concat(d) - } - } - - - function capacitance(d) { - var quantity = d[0] - var metricPrefix = d[2] - var farad = d[4] - - return {capacitance: parseFloat(quantity + (metricPrefix || ''))} - } - - - function resistance(d, i, reject) { - var integral = d[0] - var metricPrefix = d[2][0] - var fractional = d[2][1] - var ohm = d[2][2] - if (fractional) { - if (/\./.test(integral.toString())) { - return reject - } - var quantity = integral + '.' + fractional - } else { - var quantity = integral - } - return {resistance: parseFloat(quantity + (metricPrefix || ''))} - } -var grammar = { - Lexer: undefined, - ParserRules: [ - {"name": "unsigned_int$ebnf$1", "symbols": [/[0-9]/]}, - {"name": "unsigned_int$ebnf$1", "symbols": ["unsigned_int$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "unsigned_int", "symbols": ["unsigned_int$ebnf$1"], "postprocess": - function(d) { - return parseInt(d[0].join("")); - } - }, - {"name": "int$ebnf$1$subexpression$1", "symbols": [{"literal":"-"}]}, - {"name": "int$ebnf$1$subexpression$1", "symbols": [{"literal":"+"}]}, - {"name": "int$ebnf$1", "symbols": ["int$ebnf$1$subexpression$1"], "postprocess": id}, - {"name": "int$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "int$ebnf$2", "symbols": [/[0-9]/]}, - {"name": "int$ebnf$2", "symbols": ["int$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "int", "symbols": ["int$ebnf$1", "int$ebnf$2"], "postprocess": - function(d) { - if (d[0]) { - return parseInt(d[0][0]+d[1].join("")); - } else { - return parseInt(d[1].join("")); - } - } - }, - {"name": "unsigned_decimal$ebnf$1", "symbols": [/[0-9]/]}, - {"name": "unsigned_decimal$ebnf$1", "symbols": ["unsigned_decimal$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", "symbols": [/[0-9]/]}, - {"name": "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", "symbols": ["unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "unsigned_decimal$ebnf$2$subexpression$1", "symbols": [{"literal":"."}, "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1"]}, - {"name": "unsigned_decimal$ebnf$2", "symbols": ["unsigned_decimal$ebnf$2$subexpression$1"], "postprocess": id}, - {"name": "unsigned_decimal$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "unsigned_decimal", "symbols": ["unsigned_decimal$ebnf$1", "unsigned_decimal$ebnf$2"], "postprocess": - function(d) { - return parseFloat( - d[0].join("") + - (d[1] ? "."+d[1][1].join("") : "") - ); - } - }, - {"name": "decimal$ebnf$1", "symbols": [{"literal":"-"}], "postprocess": id}, - {"name": "decimal$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "decimal$ebnf$2", "symbols": [/[0-9]/]}, - {"name": "decimal$ebnf$2", "symbols": ["decimal$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "decimal$ebnf$3$subexpression$1$ebnf$1", "symbols": [/[0-9]/]}, - {"name": "decimal$ebnf$3$subexpression$1$ebnf$1", "symbols": ["decimal$ebnf$3$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "decimal$ebnf$3$subexpression$1", "symbols": [{"literal":"."}, "decimal$ebnf$3$subexpression$1$ebnf$1"]}, - {"name": "decimal$ebnf$3", "symbols": ["decimal$ebnf$3$subexpression$1"], "postprocess": id}, - {"name": "decimal$ebnf$3", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "decimal", "symbols": ["decimal$ebnf$1", "decimal$ebnf$2", "decimal$ebnf$3"], "postprocess": - function(d) { - return parseFloat( - (d[0] || "") + - d[1].join("") + - (d[2] ? "."+d[2][1].join("") : "") - ); - } - }, - {"name": "percentage", "symbols": ["decimal", {"literal":"%"}], "postprocess": - function(d) { - return d[0]/100; - } - }, - {"name": "jsonfloat$ebnf$1", "symbols": [{"literal":"-"}], "postprocess": id}, - {"name": "jsonfloat$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "jsonfloat$ebnf$2", "symbols": [/[0-9]/]}, - {"name": "jsonfloat$ebnf$2", "symbols": ["jsonfloat$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "jsonfloat$ebnf$3$subexpression$1$ebnf$1", "symbols": [/[0-9]/]}, - {"name": "jsonfloat$ebnf$3$subexpression$1$ebnf$1", "symbols": ["jsonfloat$ebnf$3$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "jsonfloat$ebnf$3$subexpression$1", "symbols": [{"literal":"."}, "jsonfloat$ebnf$3$subexpression$1$ebnf$1"]}, - {"name": "jsonfloat$ebnf$3", "symbols": ["jsonfloat$ebnf$3$subexpression$1"], "postprocess": id}, - {"name": "jsonfloat$ebnf$3", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "symbols": [/[+-]/], "postprocess": id}, - {"name": "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "jsonfloat$ebnf$4$subexpression$1$ebnf$2", "symbols": [/[0-9]/]}, - {"name": "jsonfloat$ebnf$4$subexpression$1$ebnf$2", "symbols": ["jsonfloat$ebnf$4$subexpression$1$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "jsonfloat$ebnf$4$subexpression$1", "symbols": [/[eE]/, "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "jsonfloat$ebnf$4$subexpression$1$ebnf$2"]}, - {"name": "jsonfloat$ebnf$4", "symbols": ["jsonfloat$ebnf$4$subexpression$1"], "postprocess": id}, - {"name": "jsonfloat$ebnf$4", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "jsonfloat", "symbols": ["jsonfloat$ebnf$1", "jsonfloat$ebnf$2", "jsonfloat$ebnf$3", "jsonfloat$ebnf$4"], "postprocess": - function(d) { - return parseFloat( - (d[0] || "") + - d[1].join("") + - (d[2] ? "."+d[2][1].join("") : "") + - (d[3] ? "e" + (d[3][1] || "+") + d[3][2].join("") : "") - ); - } - }, - {"name": "_$ebnf$1", "symbols": []}, - {"name": "_$ebnf$1", "symbols": ["_$ebnf$1", /[\s]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "_", "symbols": ["_$ebnf$1"], "postprocess": nuller}, - {"name": "__$ebnf$1", "symbols": [/[\s]/]}, - {"name": "__$ebnf$1", "symbols": ["__$ebnf$1", /[\s]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "__", "symbols": ["__$ebnf$1"], "postprocess": nuller}, - {"name": "A", "symbols": [{"literal":"A"}]}, - {"name": "A", "symbols": [{"literal":"a"}]}, - {"name": "B", "symbols": [{"literal":"B"}]}, - {"name": "B", "symbols": [{"literal":"b"}]}, - {"name": "C", "symbols": [{"literal":"C"}]}, - {"name": "C", "symbols": [{"literal":"c"}]}, - {"name": "D", "symbols": [{"literal":"D"}]}, - {"name": "D", "symbols": [{"literal":"d"}]}, - {"name": "E", "symbols": [{"literal":"E"}]}, - {"name": "E", "symbols": [{"literal":"e"}]}, - {"name": "F", "symbols": [{"literal":"F"}]}, - {"name": "F", "symbols": [{"literal":"f"}]}, - {"name": "G", "symbols": [{"literal":"G"}]}, - {"name": "G", "symbols": [{"literal":"g"}]}, - {"name": "H", "symbols": [{"literal":"H"}]}, - {"name": "H", "symbols": [{"literal":"h"}]}, - {"name": "I", "symbols": [{"literal":"I"}]}, - {"name": "I", "symbols": [{"literal":"i"}]}, - {"name": "J", "symbols": [{"literal":"J"}]}, - {"name": "J", "symbols": [{"literal":"j"}]}, - {"name": "K", "symbols": [{"literal":"K"}]}, - {"name": "K", "symbols": [{"literal":"k"}]}, - {"name": "L", "symbols": [{"literal":"L"}]}, - {"name": "L", "symbols": [{"literal":"l"}]}, - {"name": "M", "symbols": [{"literal":"M"}]}, - {"name": "M", "symbols": [{"literal":"m"}]}, - {"name": "N", "symbols": [{"literal":"N"}]}, - {"name": "N", "symbols": [{"literal":"n"}]}, - {"name": "O", "symbols": [{"literal":"O"}]}, - {"name": "O", "symbols": [{"literal":"o"}]}, - {"name": "P", "symbols": [{"literal":"P"}]}, - {"name": "P", "symbols": [{"literal":"p"}]}, - {"name": "Q", "symbols": [{"literal":"Q"}]}, - {"name": "Q", "symbols": [{"literal":"q"}]}, - {"name": "R", "symbols": [{"literal":"R"}]}, - {"name": "R", "symbols": [{"literal":"r"}]}, - {"name": "S", "symbols": [{"literal":"S"}]}, - {"name": "S", "symbols": [{"literal":"s"}]}, - {"name": "T", "symbols": [{"literal":"T"}]}, - {"name": "T", "symbols": [{"literal":"t"}]}, - {"name": "U", "symbols": [{"literal":"U"}]}, - {"name": "U", "symbols": [{"literal":"u"}]}, - {"name": "V", "symbols": [{"literal":"V"}]}, - {"name": "V", "symbols": [{"literal":"v"}]}, - {"name": "W", "symbols": [{"literal":"W"}]}, - {"name": "W", "symbols": [{"literal":"w"}]}, - {"name": "X", "symbols": [{"literal":"X"}]}, - {"name": "X", "symbols": [{"literal":"x"}]}, - {"name": "Y", "symbols": [{"literal":"Y"}]}, - {"name": "Y", "symbols": [{"literal":"y"}]}, - {"name": "Z", "symbols": [{"literal":"Z"}]}, - {"name": "Z", "symbols": [{"literal":"z"}]}, - {"name": "exa", "symbols": [{"literal":"E"}]}, - {"name": "exa", "symbols": ["E", "X", "A"]}, - {"name": "peta", "symbols": [{"literal":"P"}]}, - {"name": "peta", "symbols": ["P", "E", "T", "A"]}, - {"name": "tera", "symbols": [{"literal":"T"}]}, - {"name": "tera", "symbols": ["T", "E", "R", "A"]}, - {"name": "giga", "symbols": [{"literal":"G"}]}, - {"name": "giga", "symbols": ["G", "I", "G", "A"]}, - {"name": "mega", "symbols": [{"literal":"M"}]}, - {"name": "mega", "symbols": ["M", "E", "G", "A"]}, - {"name": "kilo", "symbols": [{"literal":"k"}]}, - {"name": "kilo", "symbols": ["K", "I", "L", "O"]}, - {"name": "hecto", "symbols": [{"literal":"h"}]}, - {"name": "hecto", "symbols": ["H", "E", "C", "T", "O"]}, - {"name": "deci", "symbols": [{"literal":"d"}]}, - {"name": "deci", "symbols": ["D", "E", "C", "I"]}, - {"name": "centi", "symbols": [{"literal":"c"}]}, - {"name": "centi", "symbols": ["C", "E", "N", "T", "I"]}, - {"name": "milli", "symbols": [{"literal":"m"}]}, - {"name": "milli", "symbols": ["M", "I", "L", "L", "I"]}, - {"name": "micro", "symbols": [{"literal":"u"}]}, - {"name": "micro", "symbols": [/[\u03BC]/]}, - {"name": "micro", "symbols": [/[\u00B5]/]}, - {"name": "micro", "symbols": [/[\uD835]/, /[\uDECD]/]}, - {"name": "micro", "symbols": [/[\uD835]/, /[\uDF07]/]}, - {"name": "micro", "symbols": [/[\uD835]/, /[\uDF41]/]}, - {"name": "micro", "symbols": [/[\uD835]/, /[\uDF7B]/]}, - {"name": "micro", "symbols": [/[\uD835]/, /[\uDFB5]/]}, - {"name": "micro", "symbols": ["M", "I", "C", "R", "O"]}, - {"name": "nano", "symbols": [{"literal":"n"}]}, - {"name": "nano", "symbols": ["N", "A", "N", "O"]}, - {"name": "pico", "symbols": [{"literal":"p"}]}, - {"name": "pico", "symbols": ["P", "I", "C", "O"]}, - {"name": "femto", "symbols": [{"literal":"f"}]}, - {"name": "femto", "symbols": ["F", "E", "M", "T", "O"]}, - {"name": "atto", "symbols": [{"literal":"a"}]}, - {"name": "atto", "symbols": ["A", "T", "T", "O"]}, - {"name": "packageSize", "symbols": ["_packageSize"], "postprocess": - function(d) { - return {size: filter(flatten(d)).join('')} - } - }, - {"name": "_packageSize", "symbols": ["_imperialSize"]}, - {"name": "_packageSize", "symbols": ["_metricSize"]}, - {"name": "_imperialSize$string$1", "symbols": [{"literal":"0"}, {"literal":"1"}, {"literal":"0"}, {"literal":"0"}, {"literal":"5"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$1"]}, - {"name": "_imperialSize$string$2", "symbols": [{"literal":"0"}, {"literal":"2"}, {"literal":"0"}, {"literal":"1"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$2"]}, - {"name": "_imperialSize$string$3", "symbols": [{"literal":"0"}, {"literal":"4"}, {"literal":"0"}, {"literal":"2"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$3"]}, - {"name": "_imperialSize$string$4", "symbols": [{"literal":"0"}, {"literal":"6"}, {"literal":"0"}, {"literal":"3"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$4"]}, - {"name": "_imperialSize$string$5", "symbols": [{"literal":"0"}, {"literal":"8"}, {"literal":"0"}, {"literal":"5"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$5"]}, - {"name": "_imperialSize$string$6", "symbols": [{"literal":"1"}, {"literal":"0"}, {"literal":"0"}, {"literal":"8"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$6"]}, - {"name": "_imperialSize$string$7", "symbols": [{"literal":"1"}, {"literal":"2"}, {"literal":"0"}, {"literal":"6"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$7"]}, - {"name": "_imperialSize$string$8", "symbols": [{"literal":"1"}, {"literal":"2"}, {"literal":"1"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$8"]}, - {"name": "_imperialSize$string$9", "symbols": [{"literal":"1"}, {"literal":"8"}, {"literal":"0"}, {"literal":"6"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$9"]}, - {"name": "_imperialSize$string$10", "symbols": [{"literal":"2"}, {"literal":"0"}, {"literal":"1"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$10"]}, - {"name": "_imperialSize$string$11", "symbols": [{"literal":"2"}, {"literal":"5"}, {"literal":"1"}, {"literal":"2"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "_imperialSize", "symbols": ["_imperialSize$string$11"]}, - {"name": "_metricSize$ebnf$1", "symbols": []}, - {"name": "_metricSize$ebnf$1", "symbols": ["_metricSize$ebnf$1", /[\s]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "_metricSize", "symbols": ["__metricSize", "_metricSize$ebnf$1", "M", "E", "T", "R", "I", "C"], "postprocess": function(d) { return toImperial[d[0]] }}, - {"name": "_metricSize$ebnf$2", "symbols": []}, - {"name": "_metricSize$ebnf$2", "symbols": ["_metricSize$ebnf$2", /[\s]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "_metricSize", "symbols": ["M", "E", "T", "R", "I", "C", "_metricSize$ebnf$2", "__metricSize"], "postprocess": function(d) { return toImperial[d[7]] }}, - {"name": "_metricSize", "symbols": ["unambigiousMetricSize"], "postprocess": function(d) { return toImperial[d[0]] }}, - {"name": "unambigiousMetricSize$string$1", "symbols": [{"literal":"1"}, {"literal":"0"}, {"literal":"0"}, {"literal":"5"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$1"]}, - {"name": "unambigiousMetricSize$string$2", "symbols": [{"literal":"1"}, {"literal":"6"}, {"literal":"0"}, {"literal":"8"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$2"]}, - {"name": "unambigiousMetricSize$string$3", "symbols": [{"literal":"2"}, {"literal":"0"}, {"literal":"1"}, {"literal":"2"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$3"]}, - {"name": "unambigiousMetricSize$string$4", "symbols": [{"literal":"2"}, {"literal":"5"}, {"literal":"2"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$4"]}, - {"name": "unambigiousMetricSize$string$5", "symbols": [{"literal":"3"}, {"literal":"2"}, {"literal":"1"}, {"literal":"6"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$5"]}, - {"name": "unambigiousMetricSize$string$6", "symbols": [{"literal":"3"}, {"literal":"2"}, {"literal":"2"}, {"literal":"5"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$6"]}, - {"name": "unambigiousMetricSize$string$7", "symbols": [{"literal":"4"}, {"literal":"5"}, {"literal":"1"}, {"literal":"6"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$7"]}, - {"name": "unambigiousMetricSize$string$8", "symbols": [{"literal":"5"}, {"literal":"0"}, {"literal":"2"}, {"literal":"5"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$8"]}, - {"name": "unambigiousMetricSize$string$9", "symbols": [{"literal":"6"}, {"literal":"3"}, {"literal":"3"}, {"literal":"2"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "unambigiousMetricSize", "symbols": ["unambigiousMetricSize$string$9"]}, - {"name": "__metricSize", "symbols": ["unambigiousMetricSize"]}, - {"name": "__metricSize$string$1", "symbols": [{"literal":"0"}, {"literal":"4"}, {"literal":"0"}, {"literal":"2"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "__metricSize", "symbols": ["__metricSize$string$1"]}, - {"name": "__metricSize$string$2", "symbols": [{"literal":"0"}, {"literal":"6"}, {"literal":"0"}, {"literal":"3"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "__metricSize", "symbols": ["__metricSize$string$2"]}, - {"name": "main", "symbols": ["_", "main_", "_"], "postprocess": function(d) { return filter(flatten(d)) }}, - {"name": "main_", "symbols": ["component"]}, - {"name": "component", "symbols": ["capacitor"], "postprocess": type('capacitor')}, - {"name": "component", "symbols": ["resistor"], "postprocess": type('resistor')}, - {"name": "component", "symbols": ["led"], "postprocess": type('led')}, - {"name": "component", "symbols": ["packageSize"], "postprocess": type('unknown')}, - {"name": "component", "symbols": ["tolerance"], "postprocess": type('unknown')}, - {"name": "component", "symbols": ["voltage_rating"], "postprocess": type('unknown')}, - {"name": "component", "symbols": ["cap_"], "postprocess": type('capacitor')}, - {"name": "component", "symbols": ["res_"], "postprocess": type('resistor')}, - {"name": "capacitor", "symbols": ["cSpecs", "capacitance", "cSpecs"]}, - {"name": "capacitor$subexpression$1", "symbols": ["capacitanceNoFarad"]}, - {"name": "capacitor$subexpression$1", "symbols": ["capacitance"]}, - {"name": "capacitor", "symbols": ["cap", "cSpecs", "capacitor$subexpression$1", "cSpecs"]}, - {"name": "cap", "symbols": ["cap_", "__"], "postprocess": nuller}, - {"name": "cap_$subexpression$1", "symbols": [/[cC]/], "postprocess": function (d) {return d.join(""); }}, - {"name": "cap_", "symbols": ["cap_$subexpression$1"]}, - {"name": "cap_$subexpression$2", "symbols": [/[cC]/, /[aA]/, /[pP]/], "postprocess": function (d) {return d.join(""); }}, - {"name": "cap_", "symbols": ["cap_$subexpression$2"]}, - {"name": "cap_$subexpression$3", "symbols": [/[cC]/, /[aA]/, /[pP]/, /[aA]/, /[cC]/, /[iI]/, /[tT]/, /[oO]/, /[rR]/], "postprocess": function (d) {return d.join(""); }}, - {"name": "cap_", "symbols": ["cap_$subexpression$3"]}, - {"name": "cSpecs$ebnf$1", "symbols": []}, - {"name": "cSpecs$ebnf$1$subexpression$1", "symbols": ["_", "cSpec", "_"]}, - {"name": "cSpecs$ebnf$1", "symbols": ["cSpecs$ebnf$1", "cSpecs$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "cSpecs", "symbols": ["cSpecs$ebnf$1"]}, - {"name": "cSpecs", "symbols": ["__"]}, - {"name": "cSpec", "symbols": ["tolerance"]}, - {"name": "cSpec", "symbols": ["characteristic"]}, - {"name": "cSpec", "symbols": ["voltage_rating"]}, - {"name": "cSpec", "symbols": ["packageSize"]}, - {"name": "voltage_rating", "symbols": ["decimal", "_", "V"], "postprocess": function(d) { return {voltage_rating: d[0]} }}, - {"name": "characteristic", "symbols": ["characteristic_"], "postprocess": function(d) { return {characteristic: d[0][0]} }}, - {"name": "characteristic_", "symbols": ["class1"]}, - {"name": "characteristic_", "symbols": ["class2"]}, - {"name": "class1", "symbols": ["class1_ceramic_name"], "postprocess": id}, - {"name": "class1", "symbols": ["class1_eia_code"], "postprocess": id}, - {"name": "class1", "symbols": ["class1_ceramic_name", "_", {"literal":"/"}, "_", "class1_eia_code"], "postprocess": id}, - {"name": "class1", "symbols": ["class1_eia_code", "_", {"literal":"/"}, "_", "class1_ceramic_name"], "postprocess": id}, - {"name": "class1_ceramic_name", "symbols": ["C", {"literal":"0"}, "G"], "postprocess": function() { return 'C0G' }}, - {"name": "class1_ceramic_name$string$1", "symbols": [{"literal":"1"}, {"literal":"0"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["P", "class1_ceramic_name$string$1"], "postprocess": function() { return 'M7G' }}, - {"name": "class1_ceramic_name$string$2", "symbols": [{"literal":"3"}, {"literal":"3"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$2"], "postprocess": function() { return 'H2G' }}, - {"name": "class1_ceramic_name$string$3", "symbols": [{"literal":"7"}, {"literal":"5"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$3"], "postprocess": function() { return 'L2G' }}, - {"name": "class1_ceramic_name$string$4", "symbols": [{"literal":"1"}, {"literal":"5"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$4"], "postprocess": function() { return 'P2H' }}, - {"name": "class1_ceramic_name$string$5", "symbols": [{"literal":"2"}, {"literal":"2"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$5"], "postprocess": function() { return 'R2H' }}, - {"name": "class1_ceramic_name$string$6", "symbols": [{"literal":"3"}, {"literal":"3"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$6"], "postprocess": function() { return 'S2H' }}, - {"name": "class1_ceramic_name$string$7", "symbols": [{"literal":"4"}, {"literal":"7"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$7"], "postprocess": function() { return 'T2H' }}, - {"name": "class1_ceramic_name$string$8", "symbols": [{"literal":"7"}, {"literal":"5"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$8"], "postprocess": function() { return 'U2J' }}, - {"name": "class1_ceramic_name$string$9", "symbols": [{"literal":"1"}, {"literal":"0"}, {"literal":"0"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$9"], "postprocess": function() { return 'Q3K' }}, - {"name": "class1_ceramic_name$string$10", "symbols": [{"literal":"1"}, {"literal":"5"}, {"literal":"0"}, {"literal":"0"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "class1_ceramic_name", "symbols": ["N", "class1_ceramic_name$string$10"], "postprocess": function() { return 'P3K' }}, - {"name": "class1_eia_code", "symbols": ["N", "P", {"literal":"0"}], "postprocess": function() { return 'C0G' }}, - {"name": "class1_eia_code", "symbols": ["M", {"literal":"7"}, "G"], "postprocess": function() { return 'M7G' }}, - {"name": "class1_eia_code", "symbols": ["H", {"literal":"2"}, "G"], "postprocess": function() { return 'H2G' }}, - {"name": "class1_eia_code", "symbols": ["L", {"literal":"2"}, "G"], "postprocess": function() { return 'L2G' }}, - {"name": "class1_eia_code", "symbols": ["P", {"literal":"2"}, "H"], "postprocess": function() { return 'P2H' }}, - {"name": "class1_eia_code", "symbols": ["R", {"literal":"2"}, "H"], "postprocess": function() { return 'R2H' }}, - {"name": "class1_eia_code", "symbols": ["S", {"literal":"2"}, "H"], "postprocess": function() { return 'S2H' }}, - {"name": "class1_eia_code", "symbols": ["T", {"literal":"2"}, "H"], "postprocess": function() { return 'T2H' }}, - {"name": "class1_eia_code", "symbols": ["U", {"literal":"2"}, "J"], "postprocess": function() { return 'U2J' }}, - {"name": "class1_eia_code", "symbols": ["Q", {"literal":"3"}, "K"], "postprocess": function() { return 'Q3K' }}, - {"name": "class1_eia_code", "symbols": ["P", {"literal":"3"}, "K"], "postprocess": function() { return 'P3K' }}, - {"name": "class2", "symbols": ["class2_letter", "class2_number", "class2_code"], "postprocess": function(d) { return d.join('').toUpperCase() }}, - {"name": "class2_letter", "symbols": ["X"]}, - {"name": "class2_letter", "symbols": ["Y"]}, - {"name": "class2_letter", "symbols": ["Z"]}, - {"name": "class2_number", "symbols": [{"literal":"4"}]}, - {"name": "class2_number", "symbols": [{"literal":"5"}]}, - {"name": "class2_number", "symbols": [{"literal":"6"}]}, - {"name": "class2_number", "symbols": [{"literal":"7"}]}, - {"name": "class2_number", "symbols": [{"literal":"8"}]}, - {"name": "class2_number", "symbols": [{"literal":"9"}]}, - {"name": "class2_code", "symbols": ["P"]}, - {"name": "class2_code", "symbols": ["R"]}, - {"name": "class2_code", "symbols": ["S"]}, - {"name": "class2_code", "symbols": ["T"]}, - {"name": "class2_code", "symbols": ["U"]}, - {"name": "class2_code", "symbols": ["V"]}, - {"name": "tolerance$ebnf$1$subexpression$1", "symbols": ["plusMinus", "_"]}, - {"name": "tolerance$ebnf$1", "symbols": ["tolerance$ebnf$1$subexpression$1"], "postprocess": id}, - {"name": "tolerance$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "tolerance", "symbols": ["tolerance$ebnf$1", "decimal", "_", {"literal":"%"}], "postprocess": function(d) { return {tolerance: d[1]} }}, - {"name": "plusMinus$string$1", "symbols": [{"literal":"+"}, {"literal":"/"}, {"literal":"-"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "plusMinus", "symbols": ["plusMinus$string$1"]}, - {"name": "plusMinus", "symbols": [{"literal":"±"}]}, - {"name": "plusMinus$string$2", "symbols": [{"literal":"+"}, {"literal":"-"}], "postprocess": function joiner(d) {return d.join('');}}, - {"name": "plusMinus", "symbols": ["plusMinus$string$2"]}, - {"name": "capacitance$ebnf$1", "symbols": ["cMetricPrefix"], "postprocess": id}, - {"name": "capacitance$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "capacitance", "symbols": ["decimal", "_", "capacitance$ebnf$1", "_", "farad"], "postprocess": capacitance}, - {"name": "capacitanceNoFarad$ebnf$1", "symbols": ["cMetricPrefix"], "postprocess": id}, - {"name": "capacitanceNoFarad$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "capacitanceNoFarad", "symbols": ["decimal", "_", "capacitanceNoFarad$ebnf$1"], "postprocess": capacitance}, - {"name": "farad", "symbols": ["F"], "postprocess": nuller}, - {"name": "farad", "symbols": ["F", "A", "R", "A", "D"], "postprocess": nuller}, - {"name": "resistor$ebnf$1", "symbols": ["res"], "postprocess": id}, - {"name": "resistor$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "resistor", "symbols": ["resistor$ebnf$1", "rSpecs", "resistance", "rSpecs"]}, - {"name": "res", "symbols": ["res_", "__"], "postprocess": nuller}, - {"name": "res_$subexpression$1", "symbols": [/[rR]/], "postprocess": function (d) {return d.join(""); }}, - {"name": "res_", "symbols": ["res_$subexpression$1"]}, - {"name": "res_$subexpression$2", "symbols": [/[rR]/, /[eE]/, /[sS]/], "postprocess": function (d) {return d.join(""); }}, - {"name": "res_", "symbols": ["res_$subexpression$2"]}, - {"name": "res_$subexpression$3", "symbols": [/[rR]/, /[eE]/, /[sS]/, /[iI]/, /[sS]/, /[tT]/, /[oO]/, /[rR]/], "postprocess": function (d) {return d.join(""); }}, - {"name": "res_", "symbols": ["res_$subexpression$3"]}, - {"name": "rSpecs$ebnf$1", "symbols": []}, - {"name": "rSpecs$ebnf$1$subexpression$1", "symbols": ["_", "rSpec", "_"]}, - {"name": "rSpecs$ebnf$1", "symbols": ["rSpecs$ebnf$1", "rSpecs$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "rSpecs", "symbols": ["rSpecs$ebnf$1"]}, - {"name": "rSpecs", "symbols": ["__"]}, - {"name": "rSpec", "symbols": ["tolerance"]}, - {"name": "rSpec", "symbols": ["power_rating"]}, - {"name": "rSpec", "symbols": ["packageSize"]}, - {"name": "power_rating$ebnf$1", "symbols": ["powerMetricPrefix"], "postprocess": id}, - {"name": "power_rating$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "power_rating", "symbols": ["decimal", "_", "power_rating$ebnf$1", "_", "watts"], "postprocess": - function(d) { - var quantity = d[0] - var metricPrefix = d[2] - return {power_rating: parseFloat(quantity + (metricPrefix || ''))} - } - }, - {"name": "watts", "symbols": ["watts_"], "postprocess": nuller}, - {"name": "watts_", "symbols": ["W"]}, - {"name": "watts_", "symbols": ["W", "A", "T", "T", "S"]}, - {"name": "resistance", "symbols": ["decimal", "_", "rest"], "postprocess": resistance}, - {"name": "rest$ebnf$1", "symbols": ["int"], "postprocess": id}, - {"name": "rest$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "rest$ebnf$2$subexpression$1", "symbols": ["_", "ohm"]}, - {"name": "rest$ebnf$2", "symbols": ["rest$ebnf$2$subexpression$1"], "postprocess": id}, - {"name": "rest$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "rest", "symbols": ["rMetricPrefix", "rest$ebnf$1", "rest$ebnf$2"]}, - {"name": "rest", "symbols": ["ohm"]}, - {"name": "ohm", "symbols": ["ohm_"], "postprocess": nuller}, - {"name": "ohm_", "symbols": ["O", "H", "M"]}, - {"name": "ohm_", "symbols": [{"literal":"Ω"}]}, - {"name": "ohm_", "symbols": [{"literal":"Ω"}]}, - {"name": "led", "symbols": ["led_letters", "ledSpecs"]}, - {"name": "led", "symbols": ["ledSpecs", "led_letters"]}, - {"name": "led", "symbols": ["ledSpecs", "led_letters", "ledSpecs"]}, - {"name": "led_letters", "symbols": ["L", "E", "D"], "postprocess": nuller}, - {"name": "ledSpecs$ebnf$1$subexpression$1", "symbols": ["_", "ledSpec", "_"]}, - {"name": "ledSpecs$ebnf$1", "symbols": ["ledSpecs$ebnf$1$subexpression$1"]}, - {"name": "ledSpecs$ebnf$1$subexpression$2", "symbols": ["_", "ledSpec", "_"]}, - {"name": "ledSpecs$ebnf$1", "symbols": ["ledSpecs$ebnf$1", "ledSpecs$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "ledSpecs", "symbols": ["ledSpecs$ebnf$1"]}, - {"name": "ledSpec", "symbols": ["packageSize"]}, - {"name": "ledSpec", "symbols": ["color"]}, - {"name": "color", "symbols": ["color_name"], "postprocess": function(d) { return {color: d[0]} }}, - {"name": "color_name", "symbols": ["R", "E", "D"], "postprocess": function() { return 'red' }}, - {"name": "color_name", "symbols": ["G", "R", "E", "E", "N"], "postprocess": function() { return 'green' }}, - {"name": "color_name", "symbols": ["B", "L", "U", "E"], "postprocess": function() { return 'blue' }}, - {"name": "color_name", "symbols": ["Y", "E", "L", "L", "O", "W"], "postprocess": function() { return 'yellow' }}, - {"name": "color_name", "symbols": ["O", "R", "A", "N", "G", "E"], "postprocess": function() { return 'orange' }}, - {"name": "color_name", "symbols": ["W", "H", "I", "T", "E"], "postprocess": function() { return 'white' }}, - {"name": "color_name", "symbols": ["A", "M", "B", "E", "R"], "postprocess": function() { return 'amber' }}, - {"name": "color_name", "symbols": ["C", "Y", "A", "N"], "postprocess": function() { return 'cyan' }}, - {"name": "color_name", "symbols": ["P", "U", "R", "P", "L", "E"], "postprocess": function() { return 'purple' }}, - {"name": "color_name", "symbols": ["Y", "E", "L", "L", "O", "W", "_", "G", "R", "E", "E", "N"], "postprocess": function() { return 'yellow green' }}, - {"name": "powerMetricPrefix", "symbols": ["giga"], "postprocess": function() { return 'e9 ' }}, - {"name": "powerMetricPrefix", "symbols": ["mega"], "postprocess": function() { return 'e6 ' }}, - {"name": "powerMetricPrefix", "symbols": ["kilo"], "postprocess": function() { return 'e3 ' }}, - {"name": "powerMetricPrefix", "symbols": ["milli"], "postprocess": function() { return 'e-3 ' }}, - {"name": "powerMetricPrefix", "symbols": ["micro"], "postprocess": function() { return 'e-6 ' }}, - {"name": "powerMetricPrefix", "symbols": ["nano"], "postprocess": function() { return 'e-9 ' }}, - {"name": "powerMetricPrefix", "symbols": ["pico"], "postprocess": function() { return 'e-12' }}, - {"name": "powerMetricPrefix", "symbols": ["femto"], "postprocess": function() { return 'e-15' }}, - {"name": "rMetricPrefix", "symbols": ["giga"], "postprocess": function() { return 'e9 ' }}, - {"name": "rMetricPrefix", "symbols": ["mega"], "postprocess": function() { return 'e6 ' }}, - {"name": "rMetricPrefix", "symbols": ["kilo"], "postprocess": function() { return 'e3 ' }}, - {"name": "rMetricPrefix", "symbols": ["R"], "postprocess": function() { return '' }}, - {"name": "cMetricPrefix", "symbols": ["micro"], "postprocess": function() { return 'e-6 ' }}, - {"name": "cMetricPrefix", "symbols": ["nano"], "postprocess": function() { return 'e-9 ' }}, - {"name": "cMetricPrefix", "symbols": ["pico"], "postprocess": function() { return 'e-12' }} -] - , ParserStart: "main" -} -if (typeof module !== 'undefined'&& typeof module.exports !== 'undefined') { - module.exports = grammar; -} else { - window.grammar = grammar; -} -})(); diff --git a/src/grammar.ne b/src/grammar.ne deleted file mode 100644 index 3f6ce1a..0000000 --- a/src/grammar.ne +++ /dev/null @@ -1,208 +0,0 @@ -@builtin "number.ne" -@include "util.ne" -@include "metric_prefix.ne" -@include "package_size.ne" - -main -> _ main_ _ {% function(d) { return filter(flatten(d)) } %} - -main_ -> component - -component -> - capacitor {% type('capacitor') %} - | resistor {% type('resistor') %} - | led {% type('led') %} - | packageSize {% type('unknown') %} - | tolerance {% type('unknown') %} - | voltage_rating {% type('unknown') %} - | cap_ {% type('capacitor') %} - | res_ {% type('resistor') %} - -@{% - function type(t) { - return function(d) { - return [{type: t}].concat(d) - } - } -%} - - -## Capacitors ## - -# the description can come in any order -# if it starts with 'c' or 'capacitor' then F or farad can be ommitted -capacitor -> - cSpecs capacitance cSpecs - | cap cSpecs (capacitanceNoFarad | capacitance) cSpecs - -cap -> cap_ __ {% nuller %} -cap_ -> "c"i | "cap"i | "capacitor"i - -cSpecs -> (_ cSpec _):* | __ - -cSpec -> tolerance | characteristic | voltage_rating | packageSize - -voltage_rating -> decimal _ V {% function(d) { return {voltage_rating: d[0]} } %} - -characteristic -> characteristic_ {% function(d) { return {characteristic: d[0][0]} } %} - -# see https://en.wikipedia.org/wiki/Ceramic_capacitor#Class_1_ceramic_capacitor -# https://en.wikipedia.org/wiki/Ceramic_capacitor#Class_2_ceramic_capacitor -characteristic_ -> class1 | class2 - -class1 -> - class1_ceramic_name {% id %} - | class1_eia_code {% id %} - | class1_ceramic_name _ "/" _ class1_eia_code {% id %} - | class1_eia_code _ "/" _ class1_ceramic_name {% id %} - -class1_ceramic_name -> - C "0" G {% function() { return 'C0G' } %} - | P "100" {% function() { return 'M7G' } %} - | N "33" {% function() { return 'H2G' } %} - | N "75" {% function() { return 'L2G' } %} - | N "150" {% function() { return 'P2H' } %} - | N "220" {% function() { return 'R2H' } %} - | N "330" {% function() { return 'S2H' } %} - | N "470" {% function() { return 'T2H' } %} - | N "750" {% function() { return 'U2J' } %} - | N "1000" {% function() { return 'Q3K' } %} - | N "1500" {% function() { return 'P3K' } %} - -class1_eia_code -> - N P "0" {% function() { return 'C0G' } %} -| M "7" G {% function() { return 'M7G' } %} -| H "2" G {% function() { return 'H2G' } %} -| L "2" G {% function() { return 'L2G' } %} -| P "2" H {% function() { return 'P2H' } %} -| R "2" H {% function() { return 'R2H' } %} -| S "2" H {% function() { return 'S2H' } %} -| T "2" H {% function() { return 'T2H' } %} -| U "2" J {% function() { return 'U2J' } %} -| Q "3" K {% function() { return 'Q3K' } %} -| P "3" K {% function() { return 'P3K' } %} - -class2 -> class2_letter class2_number class2_code - {% function(d) { return d.join('').toUpperCase() } %} -class2_letter -> X | Y | Z -class2_number -> "4" | "5" | "6" | "7" | "8" | "9" -class2_code -> P | R | S | T | U | V - -tolerance -> (plusMinus _):? decimal _ "%" {% function(d) { return {tolerance: d[1]} } %} - -plusMinus -> "+/-" | "±" | "+-" - -capacitance -> decimal _ cMetricPrefix:? _ farad {% capacitance %} -capacitanceNoFarad -> decimal _ cMetricPrefix:? {% capacitance %} -@{% - function capacitance(d) { - var quantity = d[0] - var metricPrefix = d[2] - var farad = d[4] - - return {capacitance: parseFloat(quantity + (metricPrefix || ''))} - } -%} - -farad -> F {% nuller %} | F A R A D {% nuller %} - - -## Resistors ## - -resistor -> res:? rSpecs resistance rSpecs - -res -> res_ __ {% nuller %} -res_ -> "r"i | "res"i | "resistor"i - - -rSpecs -> (_ rSpec _):* | __ - -rSpec -> tolerance | power_rating | packageSize - -power_rating -> decimal _ powerMetricPrefix:? _ watts {% - function(d) { - var quantity = d[0] - var metricPrefix = d[2] - return {power_rating: parseFloat(quantity + (metricPrefix || ''))} - } -%} - -watts -> watts_ {% nuller %} -watts_ -> W | W A T T S - -resistance -> - decimal _ rest {% resistance %} - -rest -> rMetricPrefix int:? (_ ohm):? | ohm - -@{% - function resistance(d, i, reject) { - var integral = d[0] - var metricPrefix = d[2][0] - var fractional = d[2][1] - var ohm = d[2][2] - if (fractional) { - if (/\./.test(integral.toString())) { - return reject - } - var quantity = integral + '.' + fractional - } else { - var quantity = integral - } - return {resistance: parseFloat(quantity + (metricPrefix || ''))} - } -%} - -ohm -> ohm_ {% nuller %} -ohm_ -> O H M | "Ω" | "Ω" - - -## LEDs ## - -led -> - led_letters ledSpecs - | ledSpecs led_letters - | ledSpecs led_letters ledSpecs - -led_letters -> L E D {% nuller %} - -ledSpecs -> (_ ledSpec _):+ - -ledSpec -> packageSize | color - -color -> color_name {% function(d) { return {color: d[0]} } %} -color_name -> - R E D {% function() { return 'red' } %} - | G R E E N {% function() { return 'green' } %} - | B L U E {% function() { return 'blue' } %} - | Y E L L O W {% function() { return 'yellow' } %} - | O R A N G E {% function() { return 'orange' } %} - | W H I T E {% function() { return 'white' } %} - | A M B E R {% function() { return 'amber' } %} - | C Y A N {% function() { return 'cyan' } %} - | P U R P L E {% function() { return 'purple' } %} - | Y E L L O W _ G R E E N {% function() { return 'yellow green' } %} - - -## Metric Prefixes ## - -powerMetricPrefix -> - giga {% function() { return 'e9 ' } %} - | mega {% function() { return 'e6 ' } %} - | kilo {% function() { return 'e3 ' } %} - | milli {% function() { return 'e-3 ' } %} - | micro {% function() { return 'e-6 ' } %} - | nano {% function() { return 'e-9 ' } %} - | pico {% function() { return 'e-12' } %} - | femto {% function() { return 'e-15' } %} - -rMetricPrefix -> - giga {% function() { return 'e9 ' } %} - | mega {% function() { return 'e6 ' } %} - | kilo {% function() { return 'e3 ' } %} - | R {% function() { return '' } %} - -cMetricPrefix -> - micro {% function() { return 'e-6 ' } %} - | nano {% function() { return 'e-9 ' } %} - | pico {% function() { return 'e-12' } %} - diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 00bb335..0000000 --- a/src/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const parse = require('./parse') -const matchCPL = require('./match_cpl') -module.exports = { parse, matchCPL } diff --git a/src/letters.ne b/src/letters.ne deleted file mode 100644 index a0891b8..0000000 --- a/src/letters.ne +++ /dev/null @@ -1,26 +0,0 @@ -A -> "A" | "a" -B -> "B" | "b" -C -> "C" | "c" -D -> "D" | "d" -E -> "E" | "e" -F -> "F" | "f" -G -> "G" | "g" -H -> "H" | "h" -I -> "I" | "i" -J -> "J" | "j" -K -> "K" | "k" -L -> "L" | "l" -M -> "M" | "m" -N -> "N" | "n" -O -> "O" | "o" -P -> "P" | "p" -Q -> "Q" | "q" -R -> "R" | "r" -S -> "S" | "s" -T -> "T" | "t" -U -> "U" | "u" -V -> "V" | "v" -W -> "W" | "w" -X -> "X" | "x" -Y -> "Y" | "y" -Z -> "Z" | "z" diff --git a/src/lexer.js b/src/lexer.js deleted file mode 100644 index 29835fc..0000000 --- a/src/lexer.js +++ /dev/null @@ -1,18 +0,0 @@ -const moo = require('moo') - -const lexer = moo.compile({ - percent: { - match: /(?:\+\/?-|±)?\s*\d+\.?\d*\s*%(?:\s+|$)/, - value: x => x.split(' ').join(''), - }, - number: { - match: /\d+\.?\d*\s+[^0-9+±]\S*(?:\s+|$)/, - value: x => x.split(' ').join(''), - }, - word: { - match: /\S+(?:\s+|$)/, - value: x => x.trim(), - }, -}) - -module.exports = lexer diff --git a/src/match_cpl.js b/src/match_cpl.js deleted file mode 100644 index fb7af6b..0000000 --- a/src/match_cpl.js +++ /dev/null @@ -1,65 +0,0 @@ -const resistors = require('./cpl_resistors') -const capacitors = require('./cpl_capacitors') -const leds = require('./cpl_leds') - -function matchCPL(component) { - component = component || {} - switch (component.type) { - case 'capacitor': - return matchCapacitor(component) - case 'resistor': - return matchResistor(component) - case 'led': - return matchLED(component) - } - return [] -} - -function matchResistor(c) { - return resistors.reduce(function(prev, cpl) { - const resistance = cpl.resistance === c.resistance - const size = c.size == null || cpl.size === c.size - const tolerance = c.tolerance == null || cpl.tolerance <= c.tolerance - const power_rating = - c.power_rating == null || cpl.power_rating >= c.power_rating - if (resistance && size && tolerance && power_rating) { - return prev.concat([cpl.cplid]) - } - return prev - }, []) -} - -function matchCapacitor(c) { - return capacitors.reduce(function(prev, cpl) { - const capacitance = cpl.capacitance === c.capacitance - const size = c.size == null || cpl.size === c.size - const characteristic = - c.characteristic == null || cpl.characteristic === c.characteristic - const tolerance = c.tolerance == null || cpl.tolerance <= c.tolerance - const voltage_rating = - c.voltage_rating == null || cpl.voltage_rating >= c.voltage_rating - if ( - capacitance && - size && - characteristic && - tolerance && - voltage_rating - ) { - return prev.concat([cpl.cplid]) - } - return prev - }, []) -} - -function matchLED(c) { - return leds.reduce((prev, cpl) => { - const color = c.color == null || cpl.color === c.color - const size = c.size == null || cpl.size === c.size - if (color && size) { - return prev.concat([cpl.cplid]) - } - return prev - }, []) -} - -module.exports = matchCPL diff --git a/src/metric_prefix.ne b/src/metric_prefix.ne deleted file mode 100644 index a4b4980..0000000 --- a/src/metric_prefix.ne +++ /dev/null @@ -1,26 +0,0 @@ -@include "letters.ne" - -exa -> "E" | E X A -peta -> "P" | P E T A -tera -> "T" | T E R A -giga -> "G" | G I G A -mega -> "M" | M E G A -kilo -> "k" | K I L O -hecto -> "h" | H E C T O -deci -> "d" | D E C I -centi -> "c" | C E N T I -milli -> "m" | M I L L I -micro -> - "u" - | [\u03BC] - | [\u00B5] - | [\uD835] [\uDECD] - | [\uD835] [\uDF07] - | [\uD835] [\uDF41] - | [\uD835] [\uDF7B] - | [\uD835] [\uDFB5] - | M I C R O -nano -> "n" | N A N O -pico -> "p" | P I C O -femto -> "f" | F E M T O -atto -> "a" | A T T O diff --git a/src/package_size.ne b/src/package_size.ne deleted file mode 100644 index b9d8730..0000000 --- a/src/package_size.ne +++ /dev/null @@ -1,55 +0,0 @@ -packageSize -> _packageSize {% - function(d) { - return {size: filter(flatten(d)).join('')} - } -%} -_packageSize -> _imperialSize | _metricSize -_imperialSize -> - "01005" - | "0201" - | "0402" - | "0603" - | "0805" - | "1008" - | "1206" - | "1210" - | "1806" - | "2010" - | "2512" - -_metricSize -> - __metricSize [\s]:* M E T R I C {% function(d) { return toImperial[d[0]] } %} - | M E T R I C [\s]:* __metricSize {% function(d) { return toImperial[d[7]] } %} - | unambigiousMetricSize {% function(d) { return toImperial[d[0]] } %} -@{% - var toImperial = { - '0402': '01005', - '0603': '0201', - '1005': '0402', - '1608': '0603', - '2012': '0805', - '2520': '1008', - '3216': '1206', - '3225': '1210', - '4516': '1806', - '4532': '1812', - '5025': '2010', - '6332': '2512', - } -%} - -unambigiousMetricSize -> - "1005" - | "1608" - | "2012" - | "2520" - | "3216" - | "3225" - | "4516" - | "5025" - | "6332" - -__metricSize -> - unambigiousMetricSize - | "0402" - | "0603" diff --git a/src/parse.js b/src/parse.js deleted file mode 100644 index f35d726..0000000 --- a/src/parse.js +++ /dev/null @@ -1,83 +0,0 @@ -const moo = require('moo') -const nearley = require('nearley') -const equals = require('./equals') - -const compiledGrammar = require('./grammar') -const grammar = nearley.Grammar.fromCompiled(compiledGrammar) - -function assignAll(objs) { - return objs.reduce((prev, obj) => Object.assign(prev, obj), {}) -} - -function parse(str) { - const parser = new nearley.Parser(grammar) - - const words = str - .split(/;|,| /) - .filter(word => word !== '') - .map(word => word + ' ') - - let info = parser.save() - const initialInfo = parser.save() - - const r = words.reduce( - (prev, word) => { - // if it fails, roll it back - let ignored = prev.ignored - let maybeIgnored = prev.maybeIgnored - let failed = false - const hasPrev = Object.keys(prev.component).length !== 0 - try { - parser.feed(word) - } catch (e) { - if (!hasPrev) { - try { - parser.restore(initialInfo) - parser.feed(word) - ignored += maybeIgnored - } catch (e) { - failed = true - parser.restore(info) - ignored += maybeIgnored + word - maybeIgnored = '' - } - } else { - failed = true - parser.restore(info) - ignored += maybeIgnored + word - maybeIgnored = '' - } - } - let component = assignAll(parser.results[0] || []) - const empty = Object.keys(component).length === 0 - if (!failed) { - const eq = equals(component, prev.component) - const isNumber = !isNaN(parseFloat(word)) - if (isNumber && (eq || empty)) { - // the parser waits for further input on numbers so we can't be - // sure it has been ignored - maybeIgnored += word - } else if (hasPrev && (eq || empty)) { - ignored += maybeIgnored + word - maybeIgnored = '' - } else { - maybeIgnored = '' - info = parser.save() - } - } - return { - component: Object.assign(prev.component, component), - ignored, - maybeIgnored, - } - }, - { component: {}, ignored: '', maybeIgnored: '' } - ) - - return { - component: r.component, - ignored: (r.ignored + r.maybeIgnored).trim(), - } -} - -module.exports = parse diff --git a/src/util.ne b/src/util.ne deleted file mode 100644 index 8c5cc7d..0000000 --- a/src/util.ne +++ /dev/null @@ -1,36 +0,0 @@ -#whitespace -_ -> [\s]:* {% nuller %} -__ -> [\s]:+ {% nuller %} - -@{% - /*! - * modified from arr-flatten - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - function _flatten(arr, res) { - var i = 0, cur - var len = arr.length - for (; i < len; i++) { - cur = arr[i] - Array.isArray(cur) ? _flatten(cur, res) : res.push(cur) - } - return res - } - - function flatten (arr) { - return _flatten(arr, []) - } - - function filter(d) { - return d.filter(function(t) { - return t != null - }) - } - - function nuller() { - return null - } -%} diff --git a/test/test_dielectric.js b/test/test_dielectric.js new file mode 100644 index 0000000..c403710 --- /dev/null +++ b/test/test_dielectric.js @@ -0,0 +1,46 @@ +const {eg_config, lexer_tests} = require('./utils'); + +describe('dielectric', () => { + const config = eg_config('strict', 'dielectric'); + + describe('class1', () => { + const cases = { + M7G: ['M7G', 'm7g', 'P100', 'p100', 'ag'], + C0G: ['C0G', 'c0g', 'NP0', 'np0', 'cg'], + H2G: ['H2G', 'h2g', 'N33', 'n33', 'hg'], + L2G: ['L2G', 'l2g', 'N75', 'n75', 'lg'], + P2H: ['P2H', 'p2h', 'N150', 'n150', 'ph'], + R2H: ['R2H', 'r2h', 'N220', 'n220', 'rh'], + S2H: ['S2H', 's2h', 'N330', 'n330', 'sh'], + T2H: ['T2H', 't2h', 'N470', 'n470', 'th'], + U2J: ['U2J', 'u2j', 'N750', 'n750', 'uj'], + Q3K: ['Q3K', 'q3k', 'N1000', 'n1000', 'qk'], + P3K: ['P3K', 'p3k', 'N1500', 'n1500', 'vk'], + }; + + lexer_tests(config, cases, 'dielectric', null); + }); + + describe('class2', () => { + const cases = { + X4P: ['X4P', 'x4p'], + Y5R: ['Y5R', 'y5r'], + Z6S: ['Z6S', 'z6s'], + }; + lexer_tests(config, cases, 'dielectric', null); + }); + + describe('aluminium electrolytic', () => { + const cases = { + ALU: ['ALU', 'alu', 'aluminium', 'elco', 'electrolytic'], + }; + lexer_tests(config, cases, 'dielectric', null); + }); + + describe('tantalum', () => { + const cases = { + TAN: ['TAN', 'tan', 'tantalum'], + }; + lexer_tests(config, cases, 'dielectric', null); + }); +}); diff --git a/test/test_package.js b/test/test_package.js new file mode 100644 index 0000000..5deccb1 --- /dev/null +++ b/test/test_package.js @@ -0,0 +1,113 @@ +const {eg_config, lexer_tests} = require('./utils'); + +describe('package', () => { + const config = eg_config('strict', 'all_packages'); + + describe('chip', () => { + const cases = { + '008004': ['008004', '0201 metric'], + '009005': ['009005', '03015'], + '01005': ['01005', '0402 metric'], + '0201': ['0201', '0603 metric'], + '0402': ['0402', '1005'], + '0603': ['0603', '1608'], + '0805': ['0805', '2012'], + '1008': ['1008', '2520'], + '1206': ['1206', '3216'], + '1210': ['1210', '3225'], + '1806': ['1806', '4516'], + '1825': ['1825', '4564'], + '2010': ['2010', '5025'], + '2512': ['2512', '6332'], + '2920': ['2920', '7451'], + }; + lexer_tests(config, cases, 'package', null); + }); + + describe('EIA-XXXX-XX', () => { + const cases = { + 'EIA-2012-12': ['EIA-2012-12', 'KEMET R', 'AVX R'], + 'EIA-3216-10': ['EIA-3216-10', 'KEMET I', 'AVX K'], + 'EIA-3216-12': ['EIA-3216-12', 'KEMET S', 'AVX S'], + 'EIA-3216-18': ['EIA-3216-18', 'KEMET A', 'AVX A'], + 'EIA-3528-12': ['EIA-3528-12', 'KEMET T', 'AVX T'], + 'EIA-3528-21': ['EIA-3528-21', 'KEMET B', 'AVX B'], + 'EIA-6032-15': ['EIA-6032-15', 'KEMET U', 'AVX W'], + 'EIA-6032-28': ['EIA-6032-28', 'KEMET C', 'AVX C'], + 'EIA-7260-38': ['EIA-7260-38', 'KEMET E', 'AVX V'], + 'EIA-7343-20': ['EIA-7343-20', 'KEMET V', 'AVX Y'], + 'EIA-7343-31': ['EIA-7343-31', 'KEMET D', 'AVX D'], + 'EIA-7343-43': ['EIA-7343-43', 'KEMET X', 'AVX E'], + }; + lexer_tests(config, cases, 'package', null); + }); + + describe('Panasonic', () => { + const cases = { + 'PANASONIC A': ['Panasonic A', 'ChemiCon B'], + 'PANASONIC B': ['Panasonic B', 'ChemiCon D'], + 'PANASONIC C': ['Panasonic C', 'ChemiCon E'], + 'PANASONIC D': ['Panasonic D', 'ChemiCon F'], + 'PANASONIC E': ['Panasonic E', 'Panasonic F', 'ChemiCon H'], + 'PANASONIC G': ['Panasonic G', 'ChemiCon J'], + 'CHEMICON K': ['ChemiCon K'], + 'PANASONIC H': ['Panasonic H'], + 'PANASONIC J': ['Panasonic J', 'ChemiCon L'], + 'PANASONIC K': ['Panasonic K', 'ChemiCon M'], + }; + lexer_tests(config, cases, 'package', null); + }); + + describe('SOD', () => { + const cases = { + SOD723: ['SOD723'], + SOD523: ['SOD523', 'SC79'], + SOD323: ['SOD323', 'SC90'], + SOD128: ['SOD128'], + SOD123: ['SOD123'], + SOD80C: ['SOD80C'], + }; + lexer_tests(config, cases, 'package', null); + }); + + describe('MELF', () => { + const cases = { + 'MICRO MELF': ['micro melf', '0102'], + 'MINI MELF': ['mini melf', '0204'], + MELF: ['melf', '0207'], + }; + lexer_tests(config, cases, 'package', null); + }); + + describe('DO214', () => { + const cases = { + DO214AA: ['DO214AA'], + DO214AB: ['DO214AB'], + DO214AC: ['DO214AC'], + }; + lexer_tests(config, cases, 'package', null); + }); + + describe('SOT', () => { + const cases = { + SOT223: ['SOT223'], + SOT89: ['SOT89'], + SOT23: ['SOT23'], + SOT323: ['SOT323'], + SOT416: ['SOT416'], + SOT663: ['SOT663'], + SOT723: ['SOT723'], + SOT883: ['SOT883'], + }; + lexer_tests(config, cases, 'package', null); + }); + + describe('DPAK', () => { + const cases = { + DPAK: ['DPAK', 'TO252', 'SOT428'], + D2PAK: ['D2PAK', 'TO263', 'SOT404'], + D3PAK: ['D3PAK', 'TO268'], + }; + lexer_tests(config, cases, 'package', null); + }); +}); diff --git a/test/test_parse.js b/test/test_parse.js deleted file mode 100644 index b616d4c..0000000 --- a/test/test_parse.js +++ /dev/null @@ -1,372 +0,0 @@ -const assert = require('better-assert') - -const { parse } = require('../lib/index') - -describe('parsing', () => { - it("doesn't parse nonsense", () => { - const c = parse('this is total rubbish').component - assert(c.type == null) - }) - it('returns empty object on empty', () => { - assert(parse('').component.type == null) - }) - it('returns unknown type when encountering package size', () => { - assert(parse('0603').component.type === 'unknown') - }) -}) - -describe('SMD Capacitors', () => { - it('parses a capacitor', () => { - const c = parse('2uF 0603').component - assert(c.type === 'capacitor') - assert(c.capacitance === 2e-6, 'capacitance value is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it("doesn't parse nonsense", () => { - const c = parse('this is total rubbish').component - assert(c.type == null) - }) - it('parses tolerance', () => { - const c = parse('2uF 0603 30%').component - assert(c.type === 'capacitor') - assert(c.capacitance === 2e-6, 'capacitance value is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.tolerance === 30, 'tolerance is wrong') - }) - it('parses +/- in tolerance', () => { - const c = parse('2uF 0603 +/-30%').component - assert(c.type === 'capacitor') - assert(c.capacitance === 2e-6, 'capacitance value is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.tolerance === 30, 'tolerance is wrong') - }) - it('parses ± in tolerance', () => { - const c = parse('2uF 0603 ±30%').component - assert(c.type === 'capacitor') - assert(c.capacitance === 2e-6, 'capacitance value is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.tolerance === 30, 'tolerance is wrong') - }) - it('parses +- in tolerance', () => { - const c = parse('2uF 0603 +-30%').component - assert(c.type === 'capacitor') - assert(c.capacitance === 2e-6, 'capacitance value is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.tolerance === 30, 'tolerance is wrong') - }) - it('parses all the various ways of saying micro', () => { - const descriptions = [ - '10uF 0402', - '10 micro Farad 0402', - '10𝛍F 0402', - '10𝜇F 0402', - '10𝝁 F 0402', - '10 𝝻F 0402', - '10𝞵F 0402', - ] - descriptions.forEach(d => { - const c = parse(d).component - assert(c.type === 'capacitor') - assert(c.capacitance === 10e-6, 'capacitance is wrong') - assert(c.size === '0402', 'size is wrong') - }) - }) - it('ignores extra words', () => { - const c = parse('100nF 0603 kajdlkja alkdjlkajd').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('ignores extra words 2', () => { - const c = parse('adjalkjd 100nF akjdlkjda 0603 kajdlkja alkdjlkajd').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('ignores extra words 3', () => { - const { component: c, ignored } = parse( - 'capacitor 100nF 0603, warehouse 5' - ) - assert(ignored === 'warehouse 5') - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('ignores extra words 4', () => { - const { component: c, ignored } = parse( - 'adjalkjd 0603 akjdlkjda 100nF kajdlkja alkdjlkajd' - ) - assert(ignored === 'adjalkjd akjdlkjda kajdlkja alkdjlkajd') - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('ignores extra words 5', () => { - const { component: c, ignored } = parse( - 'capacitor 100nF 0603, warehouse 5 %' - ) - assert(ignored === 'warehouse') - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('ignores extra words 6', () => { - const { component: c, ignored } = parse( - 'capacitor 100nF 0603, warehouse 5%' - ) - assert(ignored === 'warehouse') - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('ignores extra words 7', () => { - const { component: c, ignored } = parse( - 'x5527 100nF 0603, warehouse 5%' - ) - assert(ignored === 'x5527 warehouse') - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('ignores extra words 8', () => { - const { component: c, ignored } = parse( - '5527 x 100nF 0603, warehouse 5%' - ) - assert(ignored === '5527 x warehouse') - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('ignores extra words 9', () => { - const { component: c, ignored } = parse('5527 100nF 0603, warehouse 5%') - assert(ignored === '5527 warehouse') - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('ignores extra words 10', () => { - const { component: c, ignored } = parse( - 'adjalkjd 0603 50001 100nF akjdlkjda kajdlkja alkdjlkajd' - ) - assert(ignored === 'adjalkjd 50001 akjdlkjda kajdlkja alkdjlkajd') - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('parses characteristic X7R', () => { - const c = parse('100nF 0603 X7R').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.characteristic === 'X7R', 'characteristic is wrong') - }) - it('parses characteristic x7r', () => { - const c = parse('100nF 0603 x7r').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.characteristic === 'X7R', 'characteristic is wrong') - }) - it('parses characteristic Z5U', () => { - const c = parse('100nF 0603 Z5U').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.characteristic === 'Z5U', 'characteristic is wrong') - }) - it('parses characteristic Y5V', () => { - const c = parse('100nF 0603 Y5V').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.characteristic === 'Y5V', 'characteristic is wrong') - }) - it('parses characteristic C0G', () => { - const c = parse('100nF 0603 C0G').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.characteristic === 'C0G', 'characteristic is wrong') - }) - it('parses characteristic NPO', () => { - const c = parse('100nF 0603 NP0').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.characteristic === 'C0G', 'characteristic is wrong') - }) - it('parses characteristic np0', () => { - const c = parse('100nF 0603 NP0').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.characteristic === 'C0G', 'characteristic is wrong') - }) - it('parses characteristic c0g', () => { - const c = parse('100nF 0603 NP0').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.characteristic === 'C0G', 'characteristic is wrong') - }) - it('parses characteristic C0G/NP0', () => { - const c = parse('100nF 0603 C0G/NP0').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.characteristic === 'C0G', 'characteristic is wrong') - }) - it('parses without metric prefix', () => { - const c = parse('1F 0603 25V').component - assert(c.type === 'capacitor') - assert(c.capacitance === 1, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.voltage_rating === 25, 'rating is wrong') - }) - it('parses lower case f as farad', () => { - const c = parse('1f 0603 25V').component - assert(c.type === 'capacitor') - assert(c.capacitance === 1, 'capacitance is wrong') - }) - it('parses "Farad" as farad', () => { - const c = parse('1 Farad 0603 25V').component - assert(c.type === 'capacitor') - assert(c.capacitance === 1, 'capacitance is wrong') - }) - it('parses voltage rating', () => { - const c = parse('100nF 0603 25V').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.voltage_rating === 25, 'rating is wrong') - }) - it('parses voltage rating with small v and space', () => { - const c = parse('100nF 0603 25 v').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - assert(c.voltage_rating === 25, 'rating is wrong') - }) - it('takes a hint', () => { - const c = parse('C 100n 0603').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('takes a hint 2', () => { - const c = parse('Capacitor 100n 0603').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('takes a hint 3', () => { - const c = parse('cap 100n 0603').component - assert(c.type === 'capacitor') - assert(c.capacitance === 100e-9, 'capacitance is wrong') - assert(c.size === '0603', 'size is wrong') - }) -}) - -describe('SMD Resistors', () => { - it('parses a resistor', () => { - const c = parse('1k 0603').component - assert(c.type === 'resistor') - assert(c.resistance === 1000, 'resistance value is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('parses a resistor with extra package sizes at the start', () => { - const c = parse('0603 0805 1k').component - assert(c.type === 'resistor') - assert(c.resistance === 1000, 'resistance value is wrong') - assert(c.size === '0805', 'size is wrong') - }) - it('parses "1k ohm"', () => { - const c = parse('1k ohm 0603').component - assert(c.type === 'resistor') - assert(c.resistance === 1000, 'resistance value is wrong') - assert(c.size === '0603', 'size is wrong') - }) - it('parses "1 ohm"', () => { - const c = parse('1 ohm 0402').component - assert(c.type === 'resistor') - assert(c.resistance === 1, 'resistance value is wrong') - assert(c.size === '0402', 'size is wrong') - }) - it('parses "1k5"', () => { - const c = parse('1k5 0402').component - assert(c.type === 'resistor') - assert(c.resistance === 1500, 'resistance value is wrong') - assert(c.size === '0402', 'size is wrong') - }) - it('parses "2r7"', () => { - const c = parse('2r7 0402').component - assert(c.type === 'resistor') - assert(c.resistance === 2.7, 'resistance value is wrong') - assert(c.size === '0402', 'size is wrong') - }) - it('parses "1.5k"', () => { - const c = parse('1.5k 0402').component - assert(c.type === 'resistor') - assert(c.resistance === 1500, 'resistance value is wrong') - assert(c.size === '0402', 'size is wrong') - }) - it('parses "1Ω"', () => { - const c = parse('1Ω 0805').component - assert(c.type === 'resistor') - assert(c.resistance === 1, 'resistance value is wrong') - assert(c.size === '0805', 'size is wrong') - }) - it('parses "1 Ω"', () => { - const c = parse('1Ω 0805').component - assert(c.type === 'resistor') - assert(c.resistance === 1, 'resistance value is wrong') - assert(c.size === '0805', 'size is wrong') - }) - it('parses "100R"', () => { - const c = parse('100R').component - assert(c.type === 'resistor') - assert(c.resistance === 100, 'resistance value is wrong') - }) - it('parses "100 R"', () => { - const c = parse('100 R').component - assert(c.type === 'resistor') - assert(c.resistance === 100, 'resistance value is wrong') - }) - it('parses tolerance', () => { - const c = parse('1k 0805 5%').component - assert(c.type === 'resistor') - assert(c.resistance === 1000, 'resistance value is wrong') - assert(c.tolerance === 5, 'tolerance value is wrong') - assert(c.size === '0805', 'size is wrong') - }) - it('parses power rating', () => { - const c = parse('1k 0805 5% 100mW').component - assert(c.type === 'resistor') - assert(c.resistance === 1000, 'resistance value is wrong') - assert(c.tolerance === 5, 'tolerance value is wrong') - assert(c.size === '0805', 'size is wrong') - assert(c.power_rating === 0.1, 'power rating is wrong') - }) - it('parses power rating 2', () => { - const c = parse('0 ohm 0201 0.125W').component - assert(c.type === 'resistor') - assert(c.resistance === 0, 'resistance value is wrong') - assert(c.size === '0201', 'size is wrong') - assert(c.power_rating === 0.125, 'power rating is wrong') - }) -}) - -describe('SMD LEDs', () => { - it('parses red LED', () => { - const c = parse('led red 0603').component - assert(c.type === 'led') - assert(c.color === 'red') - assert(c.size === '0603', 'size is wrong') - }) - it('parses green LED', () => { - const c = parse('SMD LED GREEN 0805').component - assert(c.type === 'led') - assert(c.color === 'green') - assert(c.size === '0805', 'size is wrong') - }) -}) diff --git a/test/test_passive.js b/test/test_passive.js new file mode 100644 index 0000000..fffc4c3 --- /dev/null +++ b/test/test_passive.js @@ -0,0 +1,121 @@ +const {eg_config, parser_tests} = require('./utils'); + +describe('passive', () => { + const config = eg_config('strict', 'passive'); + + describe('resistor', () => { + const cases = { + '10k': { + type: 'resistor', + resistance: 10e3, + }, + '10k 10%': { + type: 'resistor', + tolerance: 10, + }, + '10k 0805': { + type: 'resistor', + package: '0805', + }, + '10k 125mW': { + type: 'resistor', + power: 125e-3, + }, + '10k pot': { + type: 'resistor', + rtype: 'pot', + }, + '10k 10% 0805 125mW': { + type: 'resistor', + resistance: 10e3, + tolerance: 10, + package: '0805', + power: 125e-3, + }, + }; + parser_tests(config, cases); + }); + + describe('capacitor', () => { + const cases = { + '10nF': { + type: 'capacitor', + capacitance: 10e-9, + }, + '10nF 10%': { + type: 'capacitor', + tolerance: 10, + }, + '10nF 0805': { + type: 'capacitor', + package: '0805', + }, + '10nF 25V': { + type: 'capacitor', + voltage: 25, + }, + '10uF alu': { + type: 'capacitor', + dielectric: 'ALU', + }, + '10nF 10% 0805 25V X7R': { + type: 'capacitor', + capacitance: 10e-9, + tolerance: 10, + package: '0805', + voltage: 25, + dielectric: 'X7R', + }, + }; + parser_tests(config, cases); + }); + + describe('inductor', () => { + const cases = { + '10mH': { + type: 'inductor', + inductance: 10e-3, + }, + '10mH 10%': { + type: 'inductor', + tolerance: 10, + }, + '10mH 500mA': { + type: 'inductor', + current: 500e-3, + }, + '10mH 10% 0805 500mA': { + type: 'inductor', + inductance: 10e-3, + tolerance: 10, + package: '0805', + current: 500e-3, + }, + }; + parser_tests(config, cases); + }); + + describe('oscillators correctly', () => { + const cases = { + '16MHz': { + type: 'oscillator', + frequency: 16e6, + }, + '16MHz 1%': { + type: 'oscillator', + tolerance: 1, + }, + '16MHz 12pF': { + type: 'oscillator', + capacitance: 12e-12, + }, + '16MHz 1% 12pF': { + type: 'oscillator', + frequency: 16e6, + tolerance: 1, + capacitance: 12e-12, + }, + }; + parser_tests(config, cases); + }); +}); diff --git a/test/test_semi.js b/test/test_semi.js new file mode 100644 index 0000000..c2a6e8f --- /dev/null +++ b/test/test_semi.js @@ -0,0 +1,154 @@ +const {eg_config, parser_tests} = require('./utils'); + +describe('diode', () => { + const config = eg_config('strict', 'diode'); + + describe('parses diode codes', () => { + const cases = { + '1N4148': { + type: 'diode', + code: '1N4148', + }, + }; + parser_tests(config, cases); + }); + + describe('signal', () => { + const result_no_code = { + type: 'diode', + dtype: 'signal', + }; + const result = { + type: 'diode', + dtype: 'signal', + code: '1N4148', + }; + const cases = { + sig: result_no_code, + 'sig 1N4148': result, + '1N4148 sig': result, + }; + parser_tests(config, cases); + }); + + describe('rectifier', () => { + const result_no_code = { + type: 'diode', + dtype: 'rectifier', + }; + const result = { + type: 'diode', + dtype: 'rectifier', + code: '1N4007', + }; + const cases = { + rect: result_no_code, + 'rect 1N4007': result, + '1N4007 rect': result, + }; + parser_tests(config, cases); + }); + + describe('schottky', () => { + const result_no_code = { + type: 'diode', + dtype: 'schottky', + }; + const result = { + type: 'diode', + dtype: 'schottky', + code: 'BAT54S', + }; + const cases = { + sk: result_no_code, + 'sk BAT54S': result, + 'BAT54S sk': result, + }; + parser_tests(config, cases); + }); + + describe('led', () => { + const cases = { + 'led white': { + type: 'diode', + dtype: 'led', + color: 'white', + }, + }; + parser_tests(config, cases); + }); + + describe('zener', () => { + const cases = { + 'z 5V': { + type: 'diode', + dtype: 'zener', + voltage: 5, + }, + }; + parser_tests(config, cases); + }); +}); + +describe('transistor', () => { + const config = eg_config('strict', 'transistor'); + + describe('parses transistor codes correctly', () => { + const cases = { + '2N2222': { + type: 'transistor', + code: '2N2222', + }, + }; + parser_tests(config, cases); + }); + + describe('npn', () => { + const result = { + type: 'transistor', + ttype: 'npn', + code: '2N2222', + }; + const cases = { + 'npn 2N2222': result, + '2N2222 npn': result, + }; + parser_tests(config, cases); + }); + + describe('pnp', () => { + const result = { + type: 'transistor', + ttype: 'pnp', + code: 'BC547', + }; + const cases = { + 'pnp BC547': result, + 'BC547 pnp': result, + }; + parser_tests(config, cases); + }); + + describe('nmos', () => { + const result = { + type: 'transistor', + ttype: 'nmos', + code: '2N7000', + }; + const cases = { + 'nmos 2N7000': result, + '2N7000 nmos': result, + }; + parser_tests(config, cases); + }); + + describe('pmos', () => { + const cases = { + pmos: { + type: 'transistor', + ttype: 'pmos', + }, + }; + parser_tests(config, cases); + }); +}); diff --git a/test/test_units.js b/test/test_units.js new file mode 100644 index 0000000..73de47d --- /dev/null +++ b/test/test_units.js @@ -0,0 +1,90 @@ +const {eg_config, lexer_tests} = require('./utils'); + +describe('units', () => { + const config = eg_config('strict', 'unit'); + + describe('voltage', () => { + const cases = { + 1e3: ['1kV', '1KV', '1kv', '1Kv', '1kilovolt', '1kvolt', '1kilov'], + 1: ['1V', '1v'], + 1e-3: ['1mV'], + }; + lexer_tests(config, cases, 'voltage', Number); + }); + + describe('current', () => { + const cases = { + 1: ['1A'], + 1e-3: ['1mA'], + 1e-6: ['1uA'], + 1e-9: ['1nA'], + 1e-12: ['1pA'], + }; + lexer_tests(config, cases, 'current', Number); + }); + + describe('power', () => { + const cases = { + 1: ['1W'], + 1e-3: ['1mW'], + }; + lexer_tests(config, cases, 'power', Number); + }); + + describe('resistance', () => { + const cases = { + 1e6: ['1M'], + 1e3: ['1k', '1K'], + 1: ['1', '1R', '1Ω'], + 1e-3: ['1m'], + }; + lexer_tests(config, cases, 'resistance', Number); + }); + + describe('capacitance', () => { + const cases = { + 1e-6: ['1uF', '1µF'], + 1e-9: ['1nF'], + 1e-12: ['1pF'], + }; + lexer_tests(config, cases, 'capacitance', Number); + }); + + describe('inductance', () => { + const cases = { + 1: ['1H'], + 1e-3: ['1mH'], + 1e-6: ['1uH'], + 1e-9: ['1nH'], + }; + lexer_tests(config, cases, 'inductance', Number); + }); + + describe('frequency', () => { + const cases = { + 1e9: ['1GHz'], + 1e6: ['1MHz'], + 1e3: ['1KHz', '1kHz', '1khz'], + 1: ['1Hz', '1hz'], + }; + lexer_tests(config, cases, 'frequency', Number); + }); + + describe('time', () => { + const cases = { + 1: ['1s'], + 1e-3: ['1ms'], + 1e-6: ['1us'], + 1e-9: ['1ns'], + 1e-12: ['1ps'], + }; + lexer_tests(config, cases, 'time', Number); + }); + + describe('temperature', () => { + const cases = { + 1: ['1°C', '1C'], + }; + lexer_tests(config, cases, 'temperature', Number); + }); +}); diff --git a/test/utils.js b/test/utils.js new file mode 100644 index 0000000..bf49151 --- /dev/null +++ b/test/utils.js @@ -0,0 +1,96 @@ +const assert = require('better-assert'); +const {execSync} = require('child_process'); +const {format} = require('util'); + +const get_js_parser = require('../js/lib/index').get_parser; +const disable_python_tests = process.env.DISABLE_PYTHON_TESTS; +const bin_py = 'python3 python3/cli.py'; + +function eg_config(parser, rule) { + return {parser, rule}; +} + +function id(x) { + return x; +} + +function egIt(description, fn) { + const {config, inputs, result} = fn(); + it('js: ' + description, () => { + jscheck(config, inputs, result); + }); + if (!disable_python_tests) { + it('py: ' + description, () => { + pycheck(config, inputs, result); + }); + } +} + +function lexer_tests(config, cases, key, transform) { + if (transform === null) { + transform = id; + } + for (const [output, inputs] of Object.entries(cases)) { + egIt('lexes ' + inputs[0], () => { + const result = {}; + result[key] = transform(output); + return {config, inputs, result}; + }); + } +} + +function parser_tests(config, cases) { + for (const [input, result] of Object.entries(cases)) { + egIt('parses ' + input, () => { + const inputs = [input]; + return {config, inputs, result}; + }); + } +} + +function jscheck(config, cases, expected) { + function parse(input) { + return get_js_parser(config.parser, config.rule)(input); + } + run_test(parse, cases, expected); +} + +function pycheck(config, cases, expected) { + function parse(input) { + return run_cli_parser(bin_py, config, input); + } + run_test(parse, cases, expected); +} + +function run_test(parse, cases, expected) { + cases.forEach(input => { + const actual = parse(input, actual => { + check_result(actual, expected); + }); + }); +} + +function run_cli_parser(bin, config, input) { + const cmd = format( + '%s --parser=%s --rule=%s "%s"', + bin, + config.parser, + config.rule, + input + ); + const stdout = execSync(cmd).toString(); + return JSON.parse(stdout); +} + +function check_result(actual, result) { + for (const [key, value] of Object.entries(result)) { + try { + assert(actual.result[key] === value); + } catch (ex) { + ex.message = format('%s should equal %s', actual.result[key], value); + throw ex; + } + } +} + +module.exports = {eg_config, lexer_tests, parser_tests}; diff --git a/travis/antlr4 b/travis/antlr4 new file mode 100755 index 0000000..696f387 --- /dev/null +++ b/travis/antlr4 @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +java -jar "$TRAVIS_BUILD_DIR/travis/antlr-4.7.1-complete.jar" $@ diff --git a/yarn.lock b/yarn.lock index 392996f..44775f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,54 +2,6 @@ # yarn lockfile v1 -JSON2@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/JSON2/-/JSON2-0.1.0.tgz#8d7493040a63d5835af75f47decb83ab6c8c0790" - -JSONStream@^1.0.3: - version "1.3.1" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abbrev@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" - -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -accepts@~1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.2.13.tgz#e5f1f3928c6d95fd96558c36ec3d9d0de4a6ecea" - dependencies: - mime-types "~2.1.6" - negotiator "0.5.3" - -accepts@~1.3.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" - dependencies: - mime-types "~2.1.16" - negotiator "0.6.1" - -acorn@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - -adm-zip@~0.4.3: - version "0.4.7" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1" - -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -74,83 +26,22 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" - dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" - append-transform@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" dependencies: default-require-extensions "^1.0.0" -aproba@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" - -archiver@0.14.x: - version "0.14.4" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-0.14.4.tgz#5b9ddb9f5ee1ceef21cb8f3b020e6240ecb4315c" - dependencies: - async "~0.9.0" - buffer-crc32 "~0.2.1" - glob "~4.3.0" - lazystream "~0.1.0" - lodash "~3.2.0" - readable-stream "~1.0.26" - tar-stream "~1.1.0" - zip-stream "~0.5.0" - -archiver@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-0.12.0.tgz#b8ccde2508cab9092bb7106630139c0f39a280cc" - dependencies: - async "~0.9.0" - buffer-crc32 "~0.2.1" - glob "~4.0.6" - lazystream "~0.1.0" - lodash "~2.4.1" - readable-stream "~1.0.26" - tar-stream "~1.0.0" - zip-stream "~0.4.0" - -archiver@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-0.7.1.tgz#cf152d794f86bbd93f9858da60d36aaeabad9bbf" - dependencies: - file-utils "~0.1.5" - lazystream "~0.1.0" - lodash "~2.4.1" - readable-stream "~1.0.24" - zip-stream "~0.2.0" - archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.9" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" dependencies: sprintf-js "~1.0.2" -argparse@~0.1.4: - version "0.1.16" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c" - dependencies: - underscore "~1.7.0" - underscore.string "~2.4.0" - arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -158,150 +49,21 @@ arr-diff@^2.0.0: arr-flatten "^1.0.1" arr-flatten@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" - -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - -array-map@0.0.0, array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - -array-uniq@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" -arrify@^1.0.0, arrify@^1.0.1: +arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" -asn1.js@^4.0.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@0.1.11: - version "0.1.11" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - dependencies: - util "0.10.3" - -assert@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.3.0.tgz#03939a622582a812cc202320a0b9a56c9b815849" - dependencies: - util "0.10.3" - -astw@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" - dependencies: - acorn "^4.0.3" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async@0.9.x, async@~0.9.0: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - -async@1.x, async@^1.4.0: +async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@~0.2.6, async@~0.2.7, async@~0.2.9: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -asyncreduce@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/asyncreduce/-/asyncreduce-0.1.4.tgz#18210e01978bfdcba043955497a5cd315c0a6a41" - dependencies: - runnel "~0.5.0" - -aws-sign2@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz#c57103f7a17fc037f02d7c2e64b602ea223f7d63" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -babel-cli@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" - dependencies: - babel-core "^6.24.1" - babel-polyfill "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - commander "^2.8.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.0.0" - glob "^7.0.0" - lodash "^4.2.0" - output-file-sync "^1.1.0" - path-is-absolute "^1.0.0" - slash "^1.0.0" - source-map "^0.5.0" - v8flags "^2.0.10" - optionalDependencies: - chokidar "^1.6.1" - -babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -310,30 +72,6 @@ babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.24.1" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - babel-generator@^6.18.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" @@ -347,350 +85,13 @@ babel-generator@^6.18.0: source-map "^0.5.6" trim-right "^1.0.1" -babel-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" dependencies: babel-runtime "^6.22.0" -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-plugin-transform-es2015-classes@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-object-assign@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz#f99d2f66f1a0b0d498e346c5359684740caa20ba" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" - dependencies: - regenerator-transform "0.9.11" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-polyfill@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" - dependencies: - babel-runtime "^6.22.0" - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-preset-es2015@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - -babel-register@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" - dependencies: - babel-core "^6.24.1" - babel-runtime "^6.22.0" - core-js "^2.4.0" - home-or-tmp "^2.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.2" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-runtime@^6.26.0: +babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -707,16 +108,6 @@ babel-template@^6.16.0: babylon "^6.18.0" lodash "^4.17.4" -babel-template@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - lodash "^4.2.0" - babel-traverse@^6.18.0, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" @@ -731,20 +122,6 @@ babel-traverse@^6.18.0, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-traverse@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - babylon "^6.15.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - babel-types@^6.18.0, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" @@ -754,104 +131,20 @@ babel-types@^6.18.0, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" -babel-types@^6.19.0, babel-types@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@^6.11.0, babylon@^6.15.0: - version "6.17.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" - -babylon@^6.17.4, babylon@^6.18.0: +babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" -base64-js@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" - -batch@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.0.tgz#fd2e05a7a5d696b4db9314013e285d8ff3557ec3" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - better-assert@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" dependencies: callsite "1.0.0" -binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" - -bl@^0.9.0, bl@~0.9.0: - version "0.9.5" - resolved "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz#c06b797af085ea00bc527afc8efcf11de2232054" - dependencies: - readable-stream "~1.0.26" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - -body-parser@~1.12.3: - version "1.12.4" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.12.4.tgz#090700c4ba28862a8520ef378395fdee5f61c229" - dependencies: - bytes "1.0.0" - content-type "~1.0.1" - debug "~2.2.0" - depd "~1.0.1" - iconv-lite "0.4.8" - on-finished "~2.2.1" - qs "2.4.2" - raw-body "~2.0.1" - type-is "~1.6.2" - -boom@0.4.x: - version "0.4.2" - resolved "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz#7a636e9ded4efcefb19cef4947a3c67dfaee911b" - dependencies: - hoek "0.9.x" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -brace-expansion@^1.0.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" - dependencies: - balanced-match "^0.4.1" - concat-map "0.0.1" - brace-expansion@^1.1.7: version "1.1.8" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" @@ -867,300 +160,14 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - -browser-pack@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.2.tgz#f86cd6cef4f5300c8e63e07a4d512f65fbff4531" - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.7.1" - defined "^1.0.0" - through2 "^2.0.0" - umd "^3.0.0" - -browser-resolve@^1.11.0, browser-resolve@^1.7.0: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" - dependencies: - resolve "1.1.7" - browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" - dependencies: - buffer-xor "^1.0.2" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - inherits "^2.0.1" - -browserify-cipher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - -browserify-istanbul@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/browserify-istanbul/-/browserify-istanbul-0.1.5.tgz#01c8e31d6a358ee5150f4321c3f28995a964c39f" - dependencies: - istanbul "^0.2.8" - minimatch "^0.2.14" - through "^2.3.4" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@~0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - dependencies: - pako "~0.2.0" - -browserify@13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-13.0.0.tgz#8f223bb24ff4ee4335e6bea9671de294e43ba6a3" - dependencies: - JSONStream "^1.0.3" - assert "~1.3.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.1.2" - buffer "^4.1.0" - concat-stream "~1.5.1" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "~1.1.0" - duplexer2 "~0.1.2" - events "~1.1.0" - glob "^5.0.15" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "~0.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - isarray "0.0.1" - labeled-stream-splicer "^2.0.0" - module-deps "^4.0.2" - os-browserify "~0.1.1" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.4.3" - stream-browserify "^2.0.0" - stream-http "^2.0.0" - string_decoder "~0.10.0" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "~0.0.0" - url "~0.11.0" - util "~0.10.1" - vm-browserify "~0.0.1" - xtend "^4.0.0" - -browserify@^13.0.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-13.3.0.tgz#b5a9c9020243f0c70e4675bec8223bc627e415ce" - dependencies: - JSONStream "^1.0.3" - assert "^1.4.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.1.2" - buffer "^4.1.0" - cached-path-relative "^1.0.0" - concat-stream "~1.5.1" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "~1.1.0" - duplexer2 "~0.1.2" - events "~1.1.0" - glob "^7.1.0" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "~0.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - labeled-stream-splicer "^2.0.0" - module-deps "^4.0.8" - os-browserify "~0.1.1" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.6.1" - stream-browserify "^2.0.0" - stream-http "^2.0.0" - string_decoder "~0.10.0" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "~0.0.0" - url "~0.11.0" - util "~0.10.1" - vm-browserify "~0.0.1" - xtend "^4.0.0" - -browserify@^14.4.0: - version "14.4.0" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.4.0.tgz#089a3463af58d0e48d8cd4070b3f74654d5abca9" - dependencies: - JSONStream "^1.0.3" - assert "^1.4.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.1.2" - buffer "^5.0.2" - cached-path-relative "^1.0.0" - concat-stream "~1.5.1" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "~1.1.0" - duplexer2 "~0.1.2" - events "~1.1.0" - glob "^7.1.0" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "^1.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - labeled-stream-splicer "^2.0.0" - module-deps "^4.0.8" - os-browserify "~0.1.1" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.6.1" - stream-browserify "^2.0.0" - stream-http "^2.0.0" - string_decoder "~1.0.0" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "~0.0.0" - url "~0.11.0" - util "~0.10.1" - vm-browserify "~0.0.1" - xtend "^4.0.0" - -buffer-crc32@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.1.tgz#be3e5382fc02b6d6324956ac1af98aa98b08534c" - -buffer-crc32@~0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - -buffer-shims@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - -buffer-xor@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - -buffer@^4.1.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.0.2: - version "5.0.7" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.7.tgz#570a290b625cf2603290c1149223d27ccf04db97" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - -bytes@0.2.1, bytes@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-0.2.1.tgz#555b08abcb063f8975905302523e4cd4ffdfdf31" - -bytes@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" - -bytes@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.1.0.tgz#ac93c410e2ffc9cc7cf4b464b38289067f5e47b4" - -cached-path-relative@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" - caching-transform@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" @@ -1177,22 +184,10 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -caseless@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.6.0.tgz#8167c1ab8397fb5bb95f96d28e5a81c50f247ac4" - center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" @@ -1200,7 +195,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@^1.1.0, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -1210,49 +205,6 @@ chalk@^1.1.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -char-split@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/char-split/-/char-split-0.2.0.tgz#8755eda641e5db277dd0f509b517c827e50a8edf" - dependencies: - through "2.3.4" - -chokidar@^1.0.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -chokidar@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -1261,232 +213,37 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" +cliui@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + string-width "^2.1.1" + strip-ansi "^4.0.0" wrap-ansi "^2.0.0" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -colors@0.5.x: - version "0.5.1" - resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" - -colors@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc" - -combine-source-map@~0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e" - dependencies: - convert-source-map "~1.1.0" - inline-source-map "~0.6.0" - lodash.memoize "~3.0.3" - source-map "~0.5.3" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -combined-stream@~0.0.4: - version "0.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz#0137e657baa5a7541c57ac37ac5fc07d73b4dc1f" - dependencies: - delayed-stream "0.0.5" - -commander@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-1.3.2.tgz#8a8f30ec670a6fdd64af52f1914b907d79ead5b5" - dependencies: - keypress "0.1.x" - -commander@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781" - -commander@2.9.0, commander@^2.8.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" +commander@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" -compress-commons@~0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-0.1.6.tgz#0c740870fde58cba516f0ac0c822e33a0b85dfa3" - dependencies: - buffer-crc32 "~0.2.1" - crc32-stream "~0.3.1" - readable-stream "~1.0.26" - -compress-commons@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-0.2.9.tgz#422d927430c01abd06cd455b6dfc04cb4cf8003c" - dependencies: - buffer-crc32 "~0.2.1" - crc32-stream "~0.3.1" - node-int64 "~0.3.0" - readable-stream "~1.0.26" - -compressible@~2.0.3: - version "2.0.11" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" - dependencies: - mime-db ">= 1.29.0 < 2" - -compression@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.5.0.tgz#ccc1a54788da1b3ad7729c49f6a00b3ac9adf47f" - dependencies: - accepts "~1.2.9" - bytes "2.1.0" - compressible "~2.0.3" - debug "~2.2.0" - on-headers "~1.0.0" - vary "~1.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@~1.5.0, concat-stream@~1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" - -connect@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-2.12.0.tgz#31d8fa0dcacdf1908d822bd2923be8a2d2a7ed9a" - dependencies: - batch "0.5.0" - buffer-crc32 "0.2.1" - bytes "0.2.1" - cookie "0.1.0" - cookie-signature "1.0.1" - debug ">= 0.7.3 < 1" - fresh "0.2.0" - methods "0.1.0" - multiparty "2.2.0" - negotiator "0.3.0" - pause "0.0.1" - qs "0.6.6" - raw-body "1.1.2" - send "0.1.4" - uid2 "0.0.3" - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -constants-browserify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - -content-type@~1.0.1, content-type@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" - -convert-source-map@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.0.0.tgz#dbdcb69523d3af582f7b5c94b3c25ecf2f3b7355" - -convert-source-map@^1.1.0, convert-source-map@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -convert-source-map@~1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" - -cookie-signature@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.1.tgz#44e072148af01e6e8e24afbf12690d68ae698ecb" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - -cookie@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.1.0.tgz#90eb469ddce905c866de687efc43131d8801f9d0" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - -cookiejar@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-1.3.0.tgz#dd00b35679021e99cbd4e855b9ad041913474765" +convert-source-map@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -crc32-stream@~0.3.1: - version "0.3.4" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-0.3.4.tgz#73bc25b45fac1db6632231a7bfce8927e9f06552" - dependencies: - buffer-crc32 "~0.2.1" - readable-stream "~1.0.24" - -create-ecdh@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - ripemd160 "^2.0.0" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.6" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + version "2.5.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" cross-spawn@^4: version "4.0.2" @@ -1503,229 +260,41 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cryptiles@0.2.x: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz#ed91ff1f17ad13d3748288594f8a48a0d26f325c" - dependencies: - boom "0.4.x" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -crypto-browserify@^3.0.0: - version "3.11.1" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - -ctype@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz#82c18c2461f74114ef16c135224ad0b9144ca12f" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - debug-log@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" -debug@*: - version "3.0.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.0.1.tgz#0564c612b521dc92d9f2988f0549e34f9c98db64" +debug@3.1.0, debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" -debug@0.7.4, debug@~0.7.2, debug@~0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - -debug@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.1.0.tgz#33ab915659d8c2cc8a41443d94d6ebd37697ed21" - dependencies: - ms "0.6.2" - -debug@2.6.0, debug@^2.1.1, debug@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" - dependencies: - ms "0.7.2" - -debug@2.6.8, debug@^2.6.3, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" +debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -"debug@>= 0.7.3 < 1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.8.1.tgz#20ff4d26f5e422cb68a1bacbbb61039ad8c1c130" - -debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - decamelize@^1.0.0, decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -deep-extend@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - default-require-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" dependencies: strip-bom "^2.0.0" -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - -delayed-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@1.1.1, depd@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - -depd@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.0.1.tgz#80aec64c9d6d97e65cc2a9caa93c0aa6abf73aaa" - -deps-sort@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" - dependencies: - JSONStream "^1.0.3" - shasum "^1.0.0" - subarg "^1.0.0" - through2 "^2.0.0" - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" dependencies: repeating "^2.0.0" -detective@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1" - dependencies: - acorn "^4.0.3" - defined "^1.0.0" - -diff@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" - -diffie-hellman@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -discontinuous-range@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" - -domain-browser@~1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" - -duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -ee-first@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.0.tgz#6a0d7c6221e490feefd92ec3f441c9ce8cd097f4" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -elliptic@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emitter-component@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/emitter-component/-/emitter-component-1.0.0.tgz#f04dd18fc3dc3e9a74cbc0f310b088666e4c016f" - -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - -end-of-stream@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" - dependencies: - once "^1.4.0" +diff@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" error-ex@^1.2.0: version "1.3.1" @@ -1733,86 +302,18 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@1.3.x: - version "1.3.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.3.3.tgz#f024016f5a88e046fd12005055e939802e6c5f23" - dependencies: - esprima "~1.1.1" - estraverse "~1.5.0" - esutils "~1.0.0" - optionalDependencies: - source-map "~0.1.33" - -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -esprima@1.2.x: - version "1.2.5" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" - -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" -esprima@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.1.1.tgz#5b6f1547f4d102e670e140c509be6771d6aeb549" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - -estraverse@~1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" - esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -esutils@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" - -etag@~1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" - -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" - -events@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -evp_bytestokey@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.2.tgz#f66bb88ecd57f71a766821e20283ea38c68bf80a" - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -1837,101 +338,16 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -express-state@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/express-state/-/express-state-1.0.3.tgz#b6f368743a95d8a91b7683adf593d02b1577ec02" - -express@3.4.8: - version "3.4.8" - resolved "https://registry.yarnpkg.com/express/-/express-3.4.8.tgz#aa7a8986de07053337f4bc5ed9a6453d9cc8e2e1" - dependencies: - buffer-crc32 "0.2.1" - commander "1.3.2" - connect "2.12.0" - cookie "0.1.0" - cookie-signature "1.0.1" - debug ">= 0.7.3 < 1" - fresh "0.2.0" - merge-descriptors "0.0.1" - methods "0.1.0" - mkdirp "0.3.5" - range-parser "0.0.4" - send "0.1.4" - -express@4.x: - version "4.15.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.15.4.tgz#032e2253489cf8fce02666beca3d11ed7a2daed1" - dependencies: - accepts "~1.3.3" - array-flatten "1.1.1" - content-disposition "0.5.2" - content-type "~1.0.2" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.8" - depd "~1.1.1" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - finalhandler "~1.0.4" - fresh "0.5.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.1" - path-to-regexp "0.1.7" - proxy-addr "~1.1.5" - qs "6.5.0" - range-parser "~1.2.0" - send "0.15.4" - serve-static "1.12.4" - setprototypeof "1.0.3" - statuses "~1.3.1" - type-is "~1.6.15" - utils-merge "1.0.0" - vary "~1.1.1" - -extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" dependencies: is-extglob "^1.0.0" -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -file-utils@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/file-utils/-/file-utils-0.1.5.tgz#dc8153c855387cb4dacb0a1725531fa444a6b48c" - dependencies: - findup-sync "~0.1.2" - glob "~3.2.6" - iconv-lite "~0.2.11" - isbinaryfile "~0.1.9" - lodash "~2.1.0" - minimatch "~0.2.12" - rimraf "~2.2.2" - filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" -fileset@0.1.x: - version "0.1.8" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-0.1.8.tgz#506b91a9396eaa7e32fb42a84077c7a0c736b741" - dependencies: - glob "3.x" - minimatch "0.x" - fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -1942,18 +358,6 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" -finalhandler@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.4.tgz#18574f2e7c4b98b8ae3b230c21f201f31bdb3fb7" - dependencies: - debug "2.6.8" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.1" - statuses "~1.3.1" - unpipe "~1.0.0" - find-cache-dir@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" @@ -1962,10 +366,6 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" -find-nearest-file@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-nearest-file/-/find-nearest-file-1.0.0.tgz#bf539d7d0f02996631fa2196680f6776762b9f70" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -1973,164 +373,32 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: - locate-path "^2.0.0" - -findup-sync@~0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.1.3.tgz#7f3e7a97b82392c653bf06589bd85190e93c3683" - dependencies: - glob "~3.2.9" - lodash "~2.4.1" - -firefox-profile@0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/firefox-profile/-/firefox-profile-0.2.7.tgz#fe46afc2ed6a96f62c5c3bd446fa259f6014a909" - dependencies: - adm-zip "~0.4.3" - archiver "~0.7.1" - async "~0.2.9" - fs-extra "~0.8.1" - lazystream "~0.1.0" - node-uuid "~1.4.1" - wrench "~1.5.1" - xml2js "~0.4.0" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -forEachAsync@~2.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/forEachAsync/-/forEachAsync-2.2.1.tgz#e3723f00903910e1eb4b1db3ad51b5c64a319fec" - dependencies: - sequence "2.x" - -foreach-shim@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/foreach-shim/-/foreach-shim-0.1.1.tgz#be61d75f46abb7176f5abd295e35885751b71d94" - -foreground-child@^1.5.3, foreground-child@^1.5.6: - version "1.5.6" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" - dependencies: - cross-spawn "^4" - signal-exit "^3.0.0" - -forever-agent@~0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz#6d0e09c4921f94a27f63d3b49c5feff1ea4c5130" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~0.0.3: - version "0.0.10" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.0.10.tgz#db345a5378d86aeeb1ed5d553b869ac192d2f5ed" - dependencies: - async "~0.2.7" - combined-stream "~0.0.4" - mime "~1.2.2" - -form-data@~0.1.0: - version "0.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz#91abd788aba9702b1aabfa8bc01031a2ac9e3b12" - dependencies: - async "~0.9.0" - combined-stream "~0.0.4" - mime "~1.2.11" - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -formidable@1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.0.14.tgz#2b3f4c411cbb5fdd695c44843e2a23514a43231a" - -forwarded@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" - -fresh@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.2.0.tgz#bfd9402cf3df12c4a4c310c79f99a3dde13d34a7" - -fresh@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" - -fs-extra@~0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.8.1.tgz#0e5779ffbfedf511bc755595c7f03c06d4b43e8d" - dependencies: - jsonfile "~1.1.0" - mkdirp "0.3.x" - ncp "~0.4.2" - rimraf "~2.2.0" - -fs-readdir-recursive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.29" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" + locate-path "^2.0.0" -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" -function-bind@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" -gauge@~2.7.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" +foreground-child@^1.5.3, foreground-child@^1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" + cross-spawn "^4" signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" get-caller-file@^1.0.1: version "1.0.2" @@ -2140,12 +408,6 @@ get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -2159,35 +421,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@3.x, glob@~3.2.6, glob@~3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" - dependencies: - inherits "2" - minimatch "0.3" - -glob@7.1.1, glob@^7.0.0, glob@^7.0.5: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^5.0.10, glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.6, glob@^7.1.0: +glob@7.1.2, glob@^7.0.5, glob@^7.0.6: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2198,89 +432,21 @@ glob@^7.0.6, glob@^7.1.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@~3.1.11: - version "3.1.21" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" - dependencies: - graceful-fs "~1.2.0" - inherits "1" - minimatch "~0.2.11" - -glob@~4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-4.0.6.tgz#695c50bdd4e2fb5c5d370b091f388d3707e291a7" - dependencies: - graceful-fs "^3.0.2" - inherits "2" - minimatch "^1.0.0" - once "^1.3.0" - -glob@~4.3.0: - version "4.3.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-4.3.5.tgz#80fbb08ca540f238acce5d11d1e9bc41e75173d3" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "^2.0.1" - once "^1.3.0" - -globals@^9.0.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" - globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" -globs-to-files@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/globs-to-files/-/globs-to-files-1.0.0.tgz#54490f6d1f4b9fd2de9d99445146ffb37550380d" - dependencies: - array-uniq "~1.0.2" - asyncreduce "~0.1.4" - glob "^5.0.10" - xtend "^4.0.0" - -graceful-fs@^3.0.2: - version "3.0.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" - dependencies: - natives "^1.1.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -graceful-fs@~1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - -handlebars@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-1.0.12.tgz#18c6d3440c35e91b19b3ff582b9151ab4985d4fc" - dependencies: - optimist "~0.3" - uglify-js "~2.3" - -handlebars@1.3.x: - version "1.3.0" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34" - dependencies: - optimist "~0.3" - optionalDependencies: - uglify-js "~2.3" +growl@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" -handlebars@^4.0.1, handlebars@^4.0.3: - version "4.0.10" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" +handlebars@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: async "^1.4.0" optimist "^0.6.1" @@ -2288,17 +454,6 @@ handlebars@^4.0.1, handlebars@^4.0.3: optionalDependencies: uglify-js "^2.6" -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -2309,160 +464,22 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" - -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" - dependencies: - inherits "^2.0.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" -hawk@1.1.1: +he@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz#87cd491f9b46e4e2aeaca335416766885d2d1ed9" - dependencies: - boom "0.4.x" - cryptiles "0.2.x" - hoek "0.9.x" - sntp "0.2.x" - -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hbs@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/hbs/-/hbs-2.4.0.tgz#f4c956cb660d6974dc61214b7c49a21f6aaa3f51" - dependencies: - handlebars "1.0.12" - walk "2.2.1" - -highlight.js@7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-7.5.0.tgz#0052595eef15845d842e02a03313afadc3ebd6cc" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@0.9.x: - version "0.9.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz#3d322462badf07716ea7eb85baf88079cddce505" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" hosted-git-info@^2.1.4: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" -htmlescape@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" - -http-errors@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-proxy@1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.11.2.tgz#c50d2fb06eca79d4238e66fd94393d2e41e63740" - dependencies: - eventemitter3 "1.x.x" - requires-port "0.x.x" - -http-signature@~0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz#4fbdac132559aa8323121e540779c0a012b27e66" - dependencies: - asn1 "0.1.11" - assert-plus "^0.1.5" - ctype "0.5.3" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - -https-browserify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" - -humanize-duration@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-2.4.0.tgz#04da89e6784af1c881b06ebc9f494dda07b08a17" - -iconv-lite@0.4.8: - version "0.4.8" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.8.tgz#c6019a7595f2cefca702eab694a010bcd9298d20" - -iconv-lite@~0.2.11: - version "0.2.11" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.2.11.tgz#1ce60a3a57864a292d1321ff4609ca4bb965adc8" - -ieee754@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2470,42 +487,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -inline-source-map@~0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" - dependencies: - source-map "~0.5.3" - -insert-module-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3" - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.7.1" - concat-stream "~1.5.1" - is-buffer "^1.1.0" - lexical-scope "^1.2.0" - process "~0.11.0" - through2 "^2.0.0" - xtend "^4.0.0" - -invariant@^2.2.0, invariant@^2.2.2: +invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: @@ -2515,23 +501,13 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" -ipaddr.js@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.0, is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" is-builtin-module@^1.0.0: version "1.0.0" @@ -2540,8 +516,8 @@ is-builtin-module@^1.0.0: builtin-modules "^1.0.0" is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" is-equal-shallow@^0.1.3: version "0.1.3" @@ -2579,12 +555,18 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" -is-number@^2.0.2, is-number@^2.1.0: +is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" dependencies: kind-of "^3.0.2" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -2597,26 +579,14 @@ is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -isarray@0.0.1, isarray@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" -isbinaryfile@~0.1.9: - version "0.1.9" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-0.1.9.tgz#15eece35c4ab708d8924da99fb874f2b5cc0b6c4" - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -2627,375 +597,111 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - istanbul-lib-coverage@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" -istanbul-lib-hook@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" +istanbul-lib-hook@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.5.tgz#adb596f8f0cb8b95e739206351a38a586af21b1e" +istanbul-lib-instrument@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" babel-traverse "^6.18.0" babel-types "^6.18.0" - babylon "^6.17.4" + babylon "^6.18.0" istanbul-lib-coverage "^1.1.1" semver "^5.3.0" -istanbul-lib-report@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" +istanbul-lib-report@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" dependencies: istanbul-lib-coverage "^1.1.1" mkdirp "^0.5.1" path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" +istanbul-lib-source-maps@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" dependencies: - debug "^2.6.3" + debug "^3.1.0" istanbul-lib-coverage "^1.1.1" mkdirp "^0.5.1" rimraf "^2.6.1" source-map "^0.5.3" -istanbul-middleware@0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/istanbul-middleware/-/istanbul-middleware-0.2.2.tgz#83c4c13c128e1a0d6a147792391af3c15a8ab8e0" - dependencies: - archiver "0.14.x" - body-parser "~1.12.3" - express "4.x" - istanbul "0.4.x" - -istanbul-reports@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.2.tgz#0fb2e3f6aa9922bd3ce45d05d8ab4d5e8e07bd4f" +istanbul-reports@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" dependencies: handlebars "^4.0.3" -istanbul@0.4.x: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -istanbul@^0.2.8: - version "0.2.16" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.2.16.tgz#870545a0d4f4b4ce161039e9e805a98c2c700bd9" - dependencies: - abbrev "1.0.x" - async "0.9.x" - escodegen "1.3.x" - esprima "1.2.x" - fileset "0.1.x" - handlebars "1.3.x" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - resolve "0.7.x" - which "1.0.x" - wordwrap "0.0.x" - -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" - -js-tokens@^3.0.2: +js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@3.x, js-yaml@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" +js-yaml@^3.9.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stable-stringify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonfile@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-1.1.1.tgz#da4fd6ad77f1a255203ea63c7bc32dc31ef64433" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - -jsprim@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" - dependencies: - assert-plus "1.0.0" - extsprintf "1.0.2" - json-schema "0.2.3" - verror "1.3.6" - -keypress@0.1.x: - version "0.1.0" - resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.1.0.tgz#4a3188d4291b66b4f65edb99f806aa9ae293592a" - kind-of@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: is-buffer "^1.1.5" -labeled-stream-splicer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59" - dependencies: - inherits "^2.0.1" - isarray "~0.0.1" - stream-splicer "^2.0.0" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lazystream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-0.1.0.tgz#1b25d63c772a4c20f0a5ed0a9d77f484b6e16920" - dependencies: - readable-stream "~1.0.2" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lexical-scope@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" - dependencies: - astw "^2.0.0" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-script@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/load-script/-/load-script-0.0.5.tgz#cbd54b27cd7309902b749640c70e996f4c643b63" - -localtunnel@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.5.0.tgz#5be949779325e9f3273021a3f38d2e7a8dcd7c4f" - dependencies: - debug "0.7.4" - optimist "0.3.4" - request "2.11.4" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash._isnative@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" - -lodash._objecttypes@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" - -lodash._shimkeys@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" - dependencies: - lodash._objecttypes "~2.4.1" - -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - -lodash.defaults@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz#a7e8885f05e68851144b6e12a8f3678026bc4c54" +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" dependencies: - lodash._objecttypes "~2.4.1" - lodash.keys "~2.4.1" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + is-buffer "^1.1.5" -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" -lodash.isobject@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" dependencies: - lodash._objecttypes "~2.4.1" + invert-kv "^1.0.0" -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" -lodash.keys@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" dependencies: - lodash._isnative "~2.4.1" - lodash._shimkeys "~2.4.1" - lodash.isobject "~2.4.1" - -lodash.memoize@~3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" - -lodash@3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + p-locate "^2.0.0" + path-exists "^3.0.0" -lodash@^4.17.4, lodash@^4.2.0: +lodash@^4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.1.0.tgz#0637eaaa36a8a1cfc865c3adfb942189bfb0998d" - -lodash@~2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" - -lodash@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.2.0.tgz#4bf50a3243f9aeb0bac41a55d3d5990675a462fb" - longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -3006,10 +712,6 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0" -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - lru-cache@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" @@ -3027,50 +729,19 @@ md5-o-matic@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" -md5.js@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" dependencies: mimic-fn "^1.0.0" -merge-descriptors@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-0.0.1.tgz#2ff0980c924cf81d0b5d1fb601177cb8bb56c0d0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - merge-source-map@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" + version "1.1.0" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" dependencies: - source-map "^0.5.6" + source-map "^0.6.1" -methods@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/methods/-/methods-0.0.1.tgz#277c90f8bef39709645a8371c51c3b6c648e068c" - -methods@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/methods/-/methods-0.1.0.tgz#335d429eefd21b7bacf2e9c922a8d2bd14a30e4f" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -micromatch@^2.1.5, micromatch@^2.3.11: +micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -3088,275 +759,49 @@ micromatch@^2.1.5, micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" -miller-rabin@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -"mime-db@>= 1.29.0 < 2": - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" - -mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" - -mime-db@~1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" - -mime-types@^2.1.12, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" - dependencies: - mime-db "~1.27.0" - -mime-types@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce" - -mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.6: - version "2.1.16" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" - dependencies: - mime-db "~1.29.0" - -mime@1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.5.tgz#9eed073022a8bf5e16c8566c6867b8832bfbfa13" - -mime@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - -mime@~1.2.11, mime@~1.2.2, mime@~1.2.7, mime@~1.2.9: - version "1.2.11" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" - mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" -minimalistic-assert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - -minimatch@0.3: - version "0.3.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" - dependencies: - lru-cache "2" - sigmund "~1.0.0" - -minimatch@0.x: - version "0.4.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.4.0.tgz#bd2c7d060d2c8c8fd7cde7f1f2ed2d5b270fdb1b" - dependencies: - lru-cache "2" - sigmund "~1.0.0" - -"minimatch@2 || 3", minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: brace-expansion "^1.1.7" -minimatch@^0.2.14, minimatch@~0.2.11, minimatch@~0.2.12: - version "0.2.14" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" - dependencies: - lru-cache "2" - sigmund "~1.0.0" - -minimatch@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-1.0.0.tgz#e0dd2120b49e1b724ce8d714c520822a9438576d" - dependencies: - lru-cache "2" - sigmund "~1.0.0" - -minimatch@^2.0.1: - version "2.0.10" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" - dependencies: - brace-expansion "^1.0.0" - -minimatch@^3.0.0, minimatch@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" - dependencies: - brace-expansion "^1.0.0" - minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.0.tgz#4dffe525dae2b864c66c2e23c6271d7afdecefce" - -minimist@^1.1.0, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -mkdirp@0.3.5, mkdirp@0.3.x: - version "0.3.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" - -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -mocha@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.3.0.tgz#d29b7428d3f52c82e2e65df1ecb7064e1aabbfb5" +mocha@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.0.0.tgz#cccac988b0bc5477119cba0e43de7af6d6ad8f4e" dependencies: browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.0" - diff "3.2.0" + commander "2.11.0" + debug "3.1.0" + diff "3.3.1" escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" - json3 "3.3.2" - lodash.create "3.1.1" + glob "7.1.2" + growl "1.10.3" + he "1.1.1" mkdirp "0.5.1" - supports-color "3.1.2" - -module-deps@^4.0.2, module-deps@^4.0.8: - version "4.1.1" - resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" - dependencies: - JSONStream "^1.0.3" - browser-resolve "^1.7.0" - cached-path-relative "^1.0.0" - concat-stream "~1.5.0" - defined "^1.0.0" - detective "^4.0.0" - duplexer2 "^0.1.2" - inherits "^2.0.1" - parents "^1.0.0" - readable-stream "^2.0.2" - resolve "^1.1.3" - stream-combiner2 "^1.1.1" - subarg "^1.0.0" - through2 "^2.0.0" - xtend "^4.0.0" - -moo@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e" - -ms@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.6.2.tgz#d89c2124c6fdc1353d65a8b77bf1aac4b193708c" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + supports-color "4.4.0" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -multiparty@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/multiparty/-/multiparty-2.2.0.tgz#a567c2af000ad22dc8f2a653d91978ae1f5316f4" - dependencies: - readable-stream "~1.1.9" - stream-counter "~0.2.0" - -nan@^2.3.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" - -natives@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" - -ncp@~0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-0.4.2.tgz#abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574" - -"nearley@https://github.com/kasbah/nearley#fix-include": - version "2.11.0" - resolved "https://github.com/kasbah/nearley#bc38f5c43d2628e3e750ab3f00388fdc3035b06d" - dependencies: - nomnom "~1.6.2" - railroad-diagrams "^1.0.0" - randexp "^0.4.2" - semver "^5.4.1" - -negotiator@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.3.0.tgz#706d692efeddf574d57ea9fb1ab89a4fa7ee8f60" - -negotiator@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.5.3.tgz#269d5c476810ec92edbe7b6c2f28316384f9a7e8" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -node-int64@~0.3.0: - version "0.3.3" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.3.3.tgz#2d6e6b2ece5de8588b43d88d1bc41b26cd1fa84d" - -node-pre-gyp@^0.6.29: - version "0.6.34" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" - dependencies: - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-uuid@~1.4.0, node-uuid@~1.4.1: - version "1.4.8" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" - -nomnom@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971" - dependencies: - colors "0.5.x" - underscore "~1.4.4" - -nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" @@ -3378,22 +823,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.1" - set-blocking "~2.0.0" - number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -nyc@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.1.0.tgz#d6b3c5e16892a25af63138ba484676aa8a22eda7" +nyc@^11.4.1: + version "11.4.1" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.4.1.tgz#13fdf7e7ef22d027c61d174758f6978a68f4f5e5" dependencies: archy "^1.0.0" arrify "^1.0.1" @@ -3406,11 +842,11 @@ nyc@^11.1.0: foreground-child "^1.5.3" glob "^7.0.6" istanbul-lib-coverage "^1.1.1" - istanbul-lib-hook "^1.0.7" - istanbul-lib-instrument "^1.7.4" - istanbul-lib-report "^1.1.1" - istanbul-lib-source-maps "^1.2.1" - istanbul-reports "^1.1.1" + istanbul-lib-hook "^1.1.0" + istanbul-lib-instrument "^1.9.1" + istanbul-lib-report "^1.1.2" + istanbul-lib-source-maps "^1.2.2" + istanbul-reports "^1.1.3" md5-hex "^1.2.0" merge-source-map "^1.0.2" micromatch "^2.3.11" @@ -3418,27 +854,15 @@ nyc@^11.1.0: resolve-from "^2.0.0" rimraf "^2.5.4" signal-exit "^3.0.1" - spawn-wrap "^1.3.8" + spawn-wrap "^1.4.2" test-exclude "^4.1.1" - yargs "^8.0.1" - yargs-parser "^5.0.0" - -oauth-sign@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.4.0.tgz#f22956f31ea7151a821e5f2fb32c113cad8b9f69" - -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + yargs "^10.0.3" + yargs-parser "^8.0.0" object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -3446,38 +870,12 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -on-finished@~2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.2.1.tgz#5c85c1cc36299f78029653f667f27b6b99ebc029" - dependencies: - ee-first "1.1.0" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - -once@1.x, once@^1.3.0, once@^1.3.3, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -opener@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.0.tgz#d11f86eeeb076883735c9d509f538fe82d10b941" - -optimist@0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.4.tgz#4d6d0bd71ffad0da4ba4f6d876d5eeb04e07480b" - dependencies: - wordwrap "~0.0.2" - optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -3485,28 +883,7 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optimist@~0.3, optimist@~0.3.5: - version "0.3.7" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" - dependencies: - wordwrap "~0.0.2" - -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -os-browserify@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54" - -os-homedir@^1.0.0, os-homedir@^1.0.1: +os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -3518,42 +895,15 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.0.3.tgz#cd6ad8ddb290915ad9e22765576025d411f29cb6" - -osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -outpipe@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/outpipe/-/outpipe-1.1.1.tgz#50cf8616365e87e031e29a5ec9339a3da4725fa2" - dependencies: - shell-quote "^1.4.2" - -output-file-sync@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + dependencies: + p-try "^1.0.0" p-locate@^2.0.0: version "2.0.0" @@ -3561,25 +911,9 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - -parents@^1.0.0, parents@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" - dependencies: - path-platform "~0.11.15" - -parse-asn1@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" parse-glob@^3.0.4: version "3.0.4" @@ -3596,14 +930,6 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parseurl@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" - -path-browserify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -3626,14 +952,6 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" -path-platform@~0.11.15: - version "0.11.15" - resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -3642,30 +960,6 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -pause@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" - -pbkdf2@^3.0.3: - version "3.0.13" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -3686,150 +980,24 @@ pkg-dir@^1.0.0: dependencies: find-up "^1.0.0" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -private@^0.1.6: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process@~0.11.0: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -proxy-addr@~1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918" - dependencies: - forwarded "~0.1.0" - ipaddr.js "1.4.0" +prettier@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.10.2.tgz#1af8356d1842276a99a5b5529c82dd9e9ad3cc93" pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" -public-encrypt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@^1.3.2, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -q@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.0.1.tgz#11872aeedee89268110b10a718448ffb10112a14" - -qs@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/qs/-/qs-0.6.5.tgz#294b268e4b0d4250f6dde19b3b8b34935dff14ef" - -qs@0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/qs/-/qs-0.6.6.tgz#6e015098ff51968b8a3c819001d5f2c89bc4b107" - -qs@2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-2.4.2.tgz#f7ce788e5777df0b5010da7f7c4e73ba32470f5a" - -qs@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" - -qs@~1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-1.2.2.tgz#19b57ff24dc2a99ce1f8bdf6afcda59f8ef61f88" - -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -querystring-es3@~0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - -railroad-diagrams@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" - -randexp@^0.4.2: - version "0.4.5" - resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.5.tgz#ffe3a80c3f666cd71e6b008e477e584c1a32ff3e" - dependencies: - discontinuous-range "1.0.0" - ret "~0.1.10" - randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" - dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" - -randombytes@^2.0.0, randombytes@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" - dependencies: - safe-buffer "^5.1.0" - -range-parser@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-0.0.4.tgz#c0427ffef51c10acba0782a46c9602e744ff620b" - -range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.2.tgz#c74b3004dea5defd1696171106ac740ec31d62be" - dependencies: - bytes "~0.2.1" - -raw-body@~2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.0.2.tgz#a2c2f98c8531cee99c63d8d238b7de97bb659fca" - dependencies: - bytes "2.1.0" - iconv-lite "0.4.8" - -rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-only-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" dependencies: - readable-stream "^2.0.2" + is-number "^3.0.0" + kind-of "^4.0.0" read-pkg-up@^1.0.1: version "1.0.1" @@ -3838,143 +1006,27 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@^1.0.27-1, readable-stream@~1.1.11, readable-stream@~1.1.8, readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4: - version "2.2.9" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" - dependencies: - buffer-shims "~1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~1.0.0" - util-deprecate "~1.0.1" - -readable-stream@^2.1.5, readable-stream@^2.2.6: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readable-stream@~1.0.2, readable-stream@~1.0.24, readable-stream@~1.0.26, readable-stream@~1.0.33: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -reduce-component@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/reduce-component/-/reduce-component-1.0.1.tgz#e0c93542c574521bea13df0f9488ed82ab77c5da" - -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - -regenerator-runtime@^0.10.0: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" regenerator-runtime@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" - -regenerator-transform@0.9.11: - version "0.9.11" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" dependencies: is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" repeat-element@^1.1.2: version "1.1.2" @@ -3990,60 +1042,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@2.11.4: - version "2.11.4" - resolved "https://registry.yarnpkg.com/request/-/request-2.11.4.tgz#6347d7d44e52dc588108cc1ce5cee975fc8926de" - dependencies: - form-data "~0.0.3" - mime "~1.2.7" - -request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -request@~2.46.0: - version "2.46.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.46.0.tgz#359195d52eaf720bc69742579d04ad6d265a8274" - dependencies: - aws-sign2 "~0.5.0" - bl "~0.9.0" - caseless "~0.6.0" - forever-agent "~0.5.0" - form-data "~0.1.0" - hawk "1.1.1" - http-signature "~0.10.0" - json-stringify-safe "~5.0.0" - mime-types "~1.0.1" - node-uuid "~1.4.0" - oauth-sign "~0.4.0" - qs "~1.2.0" - stringstream "~0.0.4" - tough-cookie ">=0.12.0" - tunnel-agent "~0.4.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4052,148 +1050,30 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -requires-port@0.x.x: - version "0.0.1" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-0.0.1.tgz#4b4414411d9df7c855995dd899a8c78a2951c16d" - resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" -resolve@0.7.x: - version "0.7.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.7.4.tgz#395a9ef9e873fbfe12bd14408bd91bb936003d69" - -resolve@1.1.7, resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -resolve@^1.1.3, resolve@^1.1.4: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" - dependencies: - path-parse "^1.0.5" - -ret@~0.1.10: - version "0.1.14" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.14.tgz#58c636837b12e161f8a380cf081c6a230fd1664e" - right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" -rimraf@~2.2.0, rimraf@~2.2.2: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" - dependencies: - hash-base "^2.0.0" - inherits "^2.0.1" - -runnel@~0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/runnel/-/runnel-0.5.3.tgz#f9362b165a05fc6f5e46e458f77a1f7ecdc0daec" - -safe-buffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" - -safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - -semver@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -send@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/send/-/send-0.1.4.tgz#be70d8d1be01de61821af13780b50345a4f71abd" - dependencies: - debug "*" - fresh "0.2.0" - mime "~1.2.9" - range-parser "0.0.4" - -send@0.15.4: - version "0.15.4" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.4.tgz#985faa3e284b0273c793364a35c6737bd93905b9" - dependencies: - debug "2.6.8" - depd "~1.1.1" - destroy "~1.0.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - fresh "0.5.0" - http-errors "~1.6.2" - mime "1.3.4" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.3.1" - -sequence@2.x: - version "2.2.1" - resolved "https://registry.yarnpkg.com/sequence/-/sequence-2.2.1.tgz#7f5617895d44351c0a047e764467690490a16b03" - -serve-static@1.12.4: - version "1.12.4" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.4.tgz#9b6aa98eeb7253c4eedc4c1f6fdbca609901a961" - dependencies: - encodeurl "~1.0.1" - escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.15.4" +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - -sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: - version "2.4.8" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" - dependencies: - inherits "^2.0.1" - -shallow-copy@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" - -shasum@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" - dependencies: - json-stable-stringify "~0.0.0" - sha.js "~2.4.4" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -4204,98 +1084,38 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shell-quote@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.4.1.tgz#ae18442b536a08c720239b079d2f228acbedee40" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - -shell-quote@^1.4.2, shell-quote@^1.4.3, shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - -sigmund@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" -sntp@0.2.x: - version "0.2.4" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz#fb885f18b0f3aad189f824862536bceeec750900" - dependencies: - hoek "0.9.x" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -source-map-cjs@~0.1.31: - version "0.1.32" - resolved "https://registry.yarnpkg.com/source-map-cjs/-/source-map-cjs-0.1.32.tgz#b113f00065b484f4d3a1123ef084046a56228ce7" - -source-map-support@^0.4.2: - version "0.4.15" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" - dependencies: - source-map "^0.5.6" - source-map@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@~0.1.33, source-map@~0.1.7: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - dependencies: - amdefine ">=0.0.4" - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" -spawn-wrap@^1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31" +spawn-wrap@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c" dependencies: foreground-child "^1.5.6" mkdirp "^0.5.0" os-homedir "^1.0.1" - rimraf "^2.3.3" + rimraf "^2.6.2" signal-exit "^3.0.2" - which "^1.2.4" + which "^1.3.0" spdx-correct@~1.0.0: version "1.0.2" @@ -4311,85 +1131,10 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" -split@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/split/-/split-0.1.2.tgz#f0710744c453d551fc7143ead983da6014e336cc" - dependencies: - through "1" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" -sshpk@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -stack-mapper@0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stack-mapper/-/stack-mapper-0.2.2.tgz#789029054937b7d47c1b5b67612cbb1e7cfe7071" - dependencies: - array-map "0.0.0" - foreach-shim "~0.1.1" - isarray "0.0.1" - source-map-cjs "~0.1.31" - -"stacktrace-js@http://github.com/defunctzombie/stacktrace.js/tarball/07e7b9516f1449f5c209e4f67f11a43f738c1712": - version "0.6.0" - resolved "http://github.com/defunctzombie/stacktrace.js/tarball/07e7b9516f1449f5c209e4f67f11a43f738c1712#62e2135deea45b38e7e5dd56e61e55da299607d4" - -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -stream-browserify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-combiner2@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - dependencies: - duplexer2 "~0.1.0" - readable-stream "^2.0.2" - -stream-counter@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-0.2.0.tgz#ded266556319c8b0e222812b9cf3b26fa7d947de" - dependencies: - readable-stream "~1.1.8" - -stream-http@^2.0.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-splicer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.2" - string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -4398,33 +1143,13 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0: +string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string_decoder@~0.10.0, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" - dependencies: - buffer-shims "~1.0.0" - -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - dependencies: - safe-buffer "~5.1.0" - -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -4443,119 +1168,26 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - dependencies: - minimist "^1.1.0" - -superagent@0.15.7: - version "0.15.7" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-0.15.7.tgz#095c70b8afffbc072f1458f39684d4854d6333a3" +supports-color@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" dependencies: - cookiejar "1.3.0" - debug "~0.7.2" - emitter-component "1.0.0" - formidable "1.0.14" - methods "0.0.1" - mime "1.2.5" - qs "0.6.5" - reduce-component "1.0.1" - -supports-color@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" - dependencies: - has-flag "^1.0.0" + has-flag "^2.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0, supports-color@^3.1.2: +supports-color@^3.1.2: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: has-flag "^1.0.0" -syntax-error@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.3.0.tgz#1ed9266c4d40be75dc55bf9bb1cb77062bb96ca1" - dependencies: - acorn "^4.0.3" - -tap-finished@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tap-finished/-/tap-finished-0.0.1.tgz#08b5b543fdc04830290c6c561279552e71c4bd67" - dependencies: - tap-parser "~0.2.0" - through "~2.3.4" - -tap-parser@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-0.7.0.tgz#728a61d64680a5b48d5dbd9dbd0a4d48f5c35bcb" - dependencies: - inherits "~2.0.1" - minimist "^0.2.0" - readable-stream "~1.1.11" - -tap-parser@~0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-0.2.1.tgz#8e1e823f2114ee21d032e2f31e4fb642a296f50b" - dependencies: - split "~0.1.2" - -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar-stream@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.0.2.tgz#fd19b4a17900fa704f6a133e3045aead0562ab95" - dependencies: - bl "^0.9.0" - end-of-stream "^1.0.0" - readable-stream "^1.0.27-1" - xtend "^4.0.0" - -tar-stream@~1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.1.5.tgz#be9218c130c20029e107b0f967fb23de0579d13c" - dependencies: - bl "^0.9.0" - end-of-stream "^1.0.0" - readable-stream "~1.0.33" - xtend "^4.0.0" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - test-exclude@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" @@ -4566,84 +1198,14 @@ test-exclude@^4.1.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" -through2@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -through@1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/through/-/through-1.1.2.tgz#344a5425a3773314ca7e0eb6512fbafaf76c0bfe" - -through@2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.4.tgz#495e40e8d8a8eaebc7c275ea88c2b8fc14c56455" - -"through@>=2.2.7 <3", through@^2.3.4, through@~2.3.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -timers-browserify@^1.0.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" - dependencies: - process "~0.11.0" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - -to-fast-properties@^1.0.1, to-fast-properties@^1.0.3: +to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" -tough-cookie@>=0.12.0, tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" - trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" -tty-browserify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tunnel-agent@~0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-is@~1.6.15, type-is@~1.6.2: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" - -typedarray@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" @@ -4653,85 +1215,10 @@ uglify-js@^2.6: optionalDependencies: uglify-to-browserify "~1.0.0" -uglify-js@~2.3: - version "2.3.6" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a" - dependencies: - async "~0.2.6" - optimist "~0.3.5" - source-map "~0.1.7" - uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -uid2@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" - -umd@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e" - -underscore.string@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.3.3.tgz#71c08bf6b428b1133f37e78fa3a21c82f7329b0d" - -underscore.string@~2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" - -underscore@~1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" - -underscore@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -url@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -util@0.10.3, util@~0.10.1: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" - -uuid@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" - -v8flags@^2.0.10: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - dependencies: - user-home "^1.1.1" - validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" @@ -4739,80 +1226,16 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" -vargs@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" - -vary@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.0.1.tgz#99e4981566a286118dfb2b817357df7993376d10" - -vary@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" - -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" - dependencies: - extsprintf "1.0.2" - -vm-browserify@~0.0.1: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - dependencies: - indexof "0.0.1" - -walk@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/walk/-/walk-2.2.1.tgz#5ada1f8e49e47d4b7445d8be7a2e1e631ab43016" - dependencies: - forEachAsync "~2.2" - -watchify@3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/watchify/-/watchify-3.7.0.tgz#ee2f2c5c8c37312303f998b818b2b3450eefe648" - dependencies: - anymatch "^1.3.0" - browserify "^13.0.0" - chokidar "^1.0.0" - defined "^1.0.0" - outpipe "^1.1.0" - through2 "^2.0.0" - xtend "^4.0.0" - -wd@0.3.11: - version "0.3.11" - resolved "https://registry.yarnpkg.com/wd/-/wd-0.3.11.tgz#522716c79a7a10e781acbb2c6cafe588f701fcc0" - dependencies: - archiver "~0.12.0" - async "~0.9.0" - lodash "~2.4.1" - q "~1.0.1" - request "~2.46.0" - underscore.string "~2.3.3" - vargs "~0.1.0" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz#460c1da0f810103d0321a9b633af9e575e64486f" - -which@^1.1.1, which@^1.2.4, which@^1.2.9: +which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" - dependencies: - string-width "^1.0.1" - window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" @@ -4821,14 +1244,10 @@ wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" -wordwrap@0.0.x, wordwrap@~0.0.2: +wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -4840,10 +1259,6 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -wrench@~1.5.1: - version "1.5.9" - resolved "https://registry.yarnpkg.com/wrench/-/wrench-1.5.9.tgz#411691c63a9b2531b1700267279bdeca23b2142a" - write-file-atomic@^1.1.4: version "1.3.4" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" @@ -4852,27 +1267,6 @@ write-file-atomic@^1.1.4: imurmurhash "^0.1.4" slide "^1.1.5" -xml2js@~0.4.0: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.4" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.4.tgz#519cb4ca686d005a8420d3496f3f0caeecca580f" - -xtend@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - dependencies: - object-keys "~0.4.0" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -4881,42 +1275,28 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" -yamljs@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.1.4.tgz#665789afc2ad4b902bf403f00e85b6434e0f3300" - dependencies: - argparse "~0.1.4" - glob "~3.1.11" - -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - dependencies: - camelcase "^3.0.0" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" +yargs-parser@^8.0.0, yargs-parser@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" dependencies: camelcase "^4.1.0" -yargs@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" +yargs@^10.0.3: + version "10.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" + cliui "^4.0.0" decamelize "^1.1.1" + find-up "^2.1.0" get-caller-file "^1.0.1" os-locale "^2.0.0" - read-pkg-up "^2.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1" - yargs-parser "^7.0.0" + yargs-parser "^8.1.0" yargs@~3.10.0: version "3.10.0" @@ -4926,74 +1306,3 @@ yargs@~3.10.0: cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" - -zip-stream@~0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-0.2.3.tgz#aef095376cfe138959a81341981d26338b46d8d3" - dependencies: - debug "~0.7.4" - lodash.defaults "~2.4.1" - readable-stream "~1.0.24" - -zip-stream@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-0.4.1.tgz#4ea795a8ce19e9fab49a31d1d0877214159f03a3" - dependencies: - compress-commons "~0.1.0" - lodash "~2.4.1" - readable-stream "~1.0.26" - -zip-stream@~0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-0.5.2.tgz#32dcbc506d0dab4d21372625bd7ebaac3c2fff56" - dependencies: - compress-commons "~0.2.0" - lodash "~3.2.0" - readable-stream "~1.0.26" - -zuul-localtunnel@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/zuul-localtunnel/-/zuul-localtunnel-1.1.0.tgz#70ad27fb0a6af968a2151fc5d5e895daa1aed15d" - dependencies: - localtunnel "1.5.0" - -zuul@^3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/zuul/-/zuul-3.11.1.tgz#7080bbbf22a6d97f60879b3b8f2a823c5a99bab2" - dependencies: - JSON2 "0.1.0" - batch "0.5.0" - browserify "13.0.0" - browserify-istanbul "0.1.5" - char-split "0.2.0" - colors "0.6.2" - commander "2.1.0" - compression "1.5.0" - convert-source-map "1.0.0" - debug "2.1.0" - express "3.4.8" - express-state "1.0.3" - find-nearest-file "1.0.0" - firefox-profile "0.2.7" - globs-to-files "1.0.0" - hbs "2.4.0" - highlight.js "7.5.0" - http-proxy "1.11.2" - humanize-duration "2.4.0" - istanbul-middleware "0.2.2" - load-script "0.0.5" - lodash "3.10.1" - opener "1.4.0" - osenv "0.0.3" - shallow-copy "0.0.1" - shell-quote "1.4.1" - stack-mapper "0.2.2" - stacktrace-js "http://github.com/defunctzombie/stacktrace.js/tarball/07e7b9516f1449f5c209e4f67f11a43f738c1712" - superagent "0.15.7" - tap-finished "0.0.1" - tap-parser "0.7.0" - watchify "3.7.0" - wd "0.3.11" - xtend "2.1.2" - yamljs "0.1.4" - zuul-localtunnel "1.1.0"