UNPKG

validate-chord

Version:

🎼 Validates a chord (scientific pitch notation) and throws errors if needed

48 lines (31 loc) • 1.39 kB
'use strict'; exports.__esModule = true; var _validateNote = require('validate-note'); var _validateNote2 = _interopRequireDefault(_validateNote); var _types = require('./data/types'); var _types2 = _interopRequireDefault(_types); var _getNote = require('./lib/getNote'); var _getNote2 = _interopRequireDefault(_getNote); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = function (chord) { var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref$maxOctave = _ref.maxOctave, maxOctave = _ref$maxOctave === undefined ? 8 : _ref$maxOctave, _ref$flatToSharp = _ref.flatToSharp, flatToSharp = _ref$flatToSharp === undefined ? false : _ref$flatToSharp; if (typeof chord !== 'string') { throw new Error('\'' + chord + '\' is not a valid chord'); } var note = (0, _getNote2.default)(chord); var sNote = (0, _validateNote2.default)(note, { maxOctave: maxOctave, flatToSharp: flatToSharp, octave: true }); var type = _types2.default[chord.split(note)[1].toLowerCase()]; if (!type) throw new Error('\'' + chord.split(note)[1] + '\' is not a valid chord type'); Object.keys(sNote).forEach(function (key) { return !sNote[key] && delete sNote[key]; }); return { note: sNote, type: type }; }; module.exports = exports['default'];