diff --git a/package.json b/package.json index 517c2adf..1a5fdad2 100644 --- a/package.json +++ b/package.json @@ -58,11 +58,11 @@ ] }, "devDependencies": { - "@types/jest": "^24.0.23", - "@types/node": "^13.1.4", + "@types/jest": "^25.2.1", + "@types/node": "^13.13.4", "husky": "^3.1.0", - "jest": "^24.8.0", - "jest-config": "^24.8.0", + "jest": "^25.4.0", + "jest-config": "^25.4.0", "lerna": "^3.19.0", "lint-staged": "^10.0.8", "lodash": "^4.17.15", @@ -74,7 +74,7 @@ "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "^5.1.2", "rollup-plugin-typescript2": "^0.25.3", - "ts-jest": "^24.2.0", + "ts-jest": "^25.4.0", "tslint": "^5.20.1", "tslint-config-prettier": "^1.18.0", "typescript": "^3.7.3" diff --git a/packages/chord-type/test.ts b/packages/chord-type/test.ts index a52d36e4..14a07ded 100644 --- a/packages/chord-type/test.ts +++ b/packages/chord-type/test.ts @@ -7,10 +7,10 @@ describe("@tonaljs/chord-type", () => { // sorted expect(ChordType.names().slice(0, 5)).toEqual([ "fifth", - "suspended 4th", - "suspended 4th seventh", + "suspended fourth", + "suspended fourth seventh", "augmented", - "major seventh b6" + "major seventh flat sixth" ]); }); diff --git a/packages/chord/README.md b/packages/chord/README.md index 5b0ca755..08738411 100644 --- a/packages/chord/README.md +++ b/packages/chord/README.md @@ -16,27 +16,54 @@ const { Chord } = require("@tonaljs/tonal"); ## API -#### `Chord.get(name: string) => Scale` +#### `Chord.getChord(type: string, tonic?: string, root?: string) => Chord` -Get a chord from a chord name. Unlike `chordType`, `chord` accepts tonics in the chord name and returns the a Scale data object (a ChordType with extended properties): +Get the chord properties from a chord type and an (optional) tonic and (optional) root. Notice that the tonic must be present if the root is present. Also the root must be part of the chord notes. -- tonic: the tonic of the chord, or "" if not present -- notes: an array of notes, or empty array if tonic is not present +It returns the same object that `ChordType.get` but with additional properties: + +- symbol: the chord symbol (a combiation of the tonic, chord type shortname and root, if present). For example: `Cmaj7`, `Db7b5/F`. The symbol always uses pitch classes (note names without octaves) for both the tonic and root. +- tonic: the tonic of the chord (or an empty string if not present) +- root: the root of the chord (or an empty string if not present) +- rootDegree: the degree of the root. 0 if root not present. A number greater than 0 if present, where 1 indicates the tonic, 2 the second note (normally the 3th), 2 the third note (normally the 5th), etc. +- notes: an array of notes, or empty array if tonic is not present. If the root is pres + +Example: ```js -Chord.get("Cmaj7"); -// => +Chord.getChord("maj7", "G4", "B4"); // => // { -// name: "C major seventh", -// tonic: "C", +// empty: false, +// name: "G major seventh over B", +// symbol: "Gmaj7/B", +// tonic: "G4", +// root: "B4", +// rootDegree: 2, // setNum: 2193, // type: "major seventh", // aliases: ["maj7", "Δ", "ma7", "M7", "Maj7"], // chroma: "100010010001", // intervals: ["1P", "3M", "5P", "7M"], -// notes: ["C", "E", "G", "B"], -// quality: "Major" -// }; +// normalized: "100010010001", +// notes: ["G4", "B4", "D5", "F#5"], +// quality: "Major", +// } +``` + +#### `Chord.get(name: string) =>` + +An alias of `Chord.getChord` but accepts a chord symbol as parameter. + +```js +Chord.get("Cmaj7"); +// same as +Chord.getChord("maj7", "C"); +``` + +Important: currently chord with roots are NOT allowed (will be implemented in next version): + +```js +Chord.get("Cmaj7/E"); // => { empty: true } ``` #### `Chord.detect(notes: string[]) => string[]` @@ -52,7 +79,7 @@ Alias of [chord-detect](/packages/chord-detect) #### `Chord.transpose(chordName: string, intervalName: string) => string` -Transpose a chord name by an interval: +Transpose a chord symbol by an interval: ```js Chord.transpose("Eb7b9", "5P"); // => "Bb7b9" diff --git a/packages/chord/index.ts b/packages/chord/index.ts index 0cf2035f..ca2d03be 100644 --- a/packages/chord/index.ts +++ b/packages/chord/index.ts @@ -7,13 +7,14 @@ import { import { deprecate, + distance, note, NoteName, tokenizeNote, transpose as transposeNote } from "@tonaljs/core"; -import { isSubsetOf, isSupersetOf, modes } from "@tonaljs/pcset"; +import { isSubsetOf, isSupersetOf } from "@tonaljs/pcset"; import { all as scaleTypes } from "@tonaljs/scale-type"; export { detect } from "@tonaljs/chord-detect"; @@ -24,12 +25,18 @@ type ChordNameTokens = [string, string]; // [TONIC, SCALE TYPE] interface Chord extends ChordType { tonic: string | null; type: string; + root: string; + rootDegree: number; + symbol: string; notes: NoteName[]; } const NoChord: Chord = { empty: true, name: "", + symbol: "", + root: "", + rootDegree: 0, type: "", tonic: null, setNum: NaN, @@ -85,17 +92,68 @@ export function tokenize(name: string): ChordNameTokens { * Get a Chord from a chord name. */ export function get(src: ChordName | ChordNameTokens): Chord { - const { type, tonic } = findChord(src); + if (src === "") { + return NoChord; + } + if (Array.isArray(src) && src.length === 2) { + return getChord(src[1], src[0]); + } else { + const [tonic, type] = tokenize(src); + const chord = getChord(type, tonic); + return chord.empty ? getChord(src) : chord; + } +} + +/** + * Get chord properties + * + * @param typeName - the chord type name + * @param [tonic] - Optional tonic + * @param [root] - Optional root (requires a tonic) + */ +export function getChord( + typeName: string, + optionalTonic?: string, + optionalRoot?: string +): Chord { + const type = getChordType(typeName); + const tonic = note(optionalTonic || ""); + const root = note(optionalRoot || ""); + + if ( + type.empty || + (optionalTonic && tonic.empty) || + (optionalRoot && root.empty) + ) { + return NoChord; + } - if (!type || type.empty) { + const rootInterval = distance(tonic.pc, root.pc); + const rootDegree = type.intervals.indexOf(rootInterval) + 1; + if (!root.empty && !rootDegree) { return NoChord; } - const notes: string[] = tonic - ? type.intervals.map(i => transposeNote(tonic, i)) - : []; - const name = tonic ? tonic + " " + type.name : type.name; - return { ...type, name, type: type.name, tonic: tonic || "", notes }; + const notes = tonic.empty + ? [] + : type.intervals.map(i => transposeNote(tonic, i)); + typeName = type.aliases.indexOf(typeName) !== -1 ? typeName : type.aliases[0]; + const symbol = `${tonic.empty ? "" : tonic.pc}${typeName}${ + root.empty ? "" : "/" + root.pc + }`; + const name = `${optionalTonic ? tonic.pc + " " : ""}${type.name}${ + optionalRoot ? " over " + root.pc : "" + }`; + return { + ...type, + name, + symbol, + type: type.name, + root: root.name, + rootDegree, + tonic: tonic.name, + notes + }; } export const chord = deprecate("Chord.chord", "Chord.get", get); @@ -180,6 +238,7 @@ export function reduced(chordName: string): string[] { } export default { + getChord, get, detect, chordScales, diff --git a/packages/chord/test.ts b/packages/chord/test.ts index 85e79abc..1f9a3778 100644 --- a/packages/chord/test.ts +++ b/packages/chord/test.ts @@ -21,11 +21,64 @@ describe("tonal-chord", () => { expect(Chord.tokenize("C4")).toEqual(["C", "4"]); }); + describe("getChord", () => { + test("Chord properties", () => { + expect(Chord.getChord("maj7", "G4", "B4")).toEqual({ + empty: false, + name: "G major seventh over B", + symbol: "Gmaj7/B", + tonic: "G4", + root: "B4", + rootDegree: 2, + setNum: 2193, + type: "major seventh", + aliases: ["maj7", "Δ", "ma7", "M7", "Maj7"], + chroma: "100010010001", + intervals: ["1P", "3M", "5P", "7M"], + normalized: "100010010001", + notes: ["G4", "B4", "D5", "F#5"], + quality: "Major" + }); + }); + test("without root", () => { + expect(Chord.getChord("M7", "G")).toMatchObject({ + symbol: "GM7", + name: "G major seventh", + notes: ["G", "B", "D", "F#"] + }); + }); + test("rootDegrees", () => { + expect(Chord.getChord("maj7", "C", "C").rootDegree).toBe(1); + expect(Chord.getChord("maj7", "C", "D").empty).toBe(true); + }); + test("without tonic nor root", () => { + expect(Chord.getChord("dim")).toEqual({ + symbol: "dim", + name: "diminished", + tonic: "", + root: "", + rootDegree: 0, + type: "diminished", + aliases: ["dim", "°", "o"], + chroma: "100100100000", + empty: false, + intervals: ["1P", "3m", "5d"], + normalized: "100000100100", + notes: [], + quality: "Diminished", + setNum: 2336 + }); + }); + }); + test("chord", () => { expect(Chord.get("Cmaj7")).toEqual({ empty: false, + symbol: "Cmaj7", name: "C major seventh", tonic: "C", + root: "", + rootDegree: 0, setNum: 2193, type: "major seventh", aliases: ["maj7", "Δ", "ma7", "M7", "Maj7"], @@ -37,23 +90,11 @@ describe("tonal-chord", () => { }); expect(Chord.get("hello").empty).toBe(true); expect(Chord.get("").empty).toBe(true); - expect(Chord.get("C")).toEqual(Chord.get("C major")); + expect(Chord.get("C").name).toEqual("C major"); }); test("chord without tonic", () => { - expect(Chord.get("dim")).toEqual({ - aliases: ["dim", "°", "o"], - chroma: "100100100000", - empty: false, - intervals: ["1P", "3m", "5d"], - name: "diminished", - normalized: "100000100100", - notes: [], - quality: "Diminished", - setNum: 2336, - tonic: "", - type: "diminished" - }); + expect(Chord.get("dim")).toMatchObject({ name: "diminished" }); expect(Chord.get("dim7")).toMatchObject({ name: "diminished seventh" }); expect(Chord.get("alt7")).toMatchObject({ name: "altered" }); }); diff --git a/packages/tonal/browser/tonal.min.js b/packages/tonal/browser/tonal.min.js index aaa13008..f9d02d56 100644 --- a/packages/tonal/browser/tonal.min.js +++ b/packages/tonal/browser/tonal.min.js @@ -1,2 +1,2 @@ -var Tonal=function(){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;const t=(t,n)=>Array(Math.abs(n)+1).join(t);function n(t,n,e){return function(...o){return console.warn(`${t} is deprecated. Use ${n}.`),e.apply(this,o)}}function e(t){return null!==t&&"object"==typeof t&&"string"==typeof t.name}function o(t){return null!==t&&"object"==typeof t&&"number"==typeof t.step&&"number"==typeof t.alt}const r=[0,2,4,-1,1,3,5],a=r.map(t=>Math.floor(7*t/12));function m(t){const{step:n,alt:e,oct:o,dir:m=1}=t,i=r[n]+7*e;return void 0===o?[m*i]:[m*i,m*(o-a[n]-4*e)]}const i=[3,0,4,1,5,2,6];function c(t){const[n,e,o]=t,r=i[function(t){const n=(t+1)%7;return n<0?7+n:n}(n)],m=Math.floor((n+1)/7);return void 0===e?{step:r,alt:m,dir:o}:{step:r,alt:m,oct:e+4*m+a[r],dir:o}}const s={empty:!0,name:"",pc:"",acc:""},u=new Map,l=t=>"CDEFGAB".charAt(t),P=n=>n<0?t("b",-n):t("#",n),d=t=>"b"===t[0]?-t.length:t.length;function M(t){const n=u.get(t);if(n)return n;const r="string"==typeof t?function(t){const n=f(t);if(""===n[0]||""!==n[3])return s;const e=n[0],o=n[1],r=n[2],a=(e.charCodeAt(0)+3)%7,i=d(o),c=r.length?+r:void 0,u=m({step:a,alt:i,oct:c}),l=e+o+r,P=e+o,M=(y[a]+i+120)%12,p=void 0===c?-100:c,h=y[a]+i+12*(p+1),b=h>=0&&h<=127?h:null,g=void 0===c?null:440*Math.pow(2,(h-69)/12);return{empty:!1,acc:o,alt:i,chroma:M,coord:u,freq:g,height:h,letter:e,midi:b,name:l,oct:c,pc:P,step:a}}(t):o(t)?M(function(t){const{step:n,alt:e,oct:o}=t,r=l(n);if(!r)return"";const a=r+P(e);return o||0===o?a+o:a}(t)):e(t)?M(t.name):s;return u.set(t,r),r}const p=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function f(t){const n=p.exec(t);return[n[1].toUpperCase(),n[2].replace(/x/g,"##"),n[3],n[4]]}function h(t){return M(c(t))}const y=[0,2,4,5,7,9,11];const b={empty:!0,name:"",acc:""},g=new RegExp("^([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})|(AA|A|P|M|m|d|dd)([-+]?\\d+)$");function A(t){const n=g.exec(`${t}`);return null===n?["",""]:n[1]?[n[1],n[2]]:[n[4],n[3]]}const v={};function j(n){return"string"==typeof n?v[n]||(v[n]=function(t){const n=A(t);if(""===n[0])return b;const e=+n[0],o=n[1],r=(Math.abs(e)-1)%7,a="PMMPPMM"[r];if("M"===a&&"P"===o)return b;const i="M"===a?"majorable":"perfectable",c=""+e+o,s=e<0?-1:1,u=8===e||-8===e?e:s*(r+1),l=function(t,n){return"M"===n&&"majorable"===t||"P"===n&&"perfectable"===t?0:"m"===n&&"majorable"===t?-1:/^A+$/.test(n)?n.length:/^d+$/.test(n)?-1*("perfectable"===t?n.length:n.length+1):0}(i,o),P=Math.floor((Math.abs(e)-1)/7),d=s*(I[r]+l+12*P),M=(s*(I[r]+l)%12+12)%12,p=m({step:r,alt:l,oct:P,dir:s});return{empty:!1,name:c,num:e,q:o,step:r,alt:l,dir:s,type:i,simple:u,semitones:d,chroma:M,coord:p,oct:P}}(n)):o(n)?j(function(n){const{step:e,alt:o,oct:r=0,dir:a}=n;if(!a)return"";return(a<0?"-":"")+(e+1+7*r)+function(n,e){return 0===e?"majorable"===n?"M":"P":-1===e&&"majorable"===n?"m":e>0?t("A",e):t("d","perfectable"===n?e:e+1)}("M"==="PMMPPMM"[e]?"majorable":"perfectable",o)}(n)):e(n)?j(n.name):b}const I=[0,2,4,5,7,9,11];function w(t){const[n,e=0]=t;return j(c(7*n+12*e<0?[-n,-e,-1]:[n,e,1]))}function N(t,n){const e=M(t),o=j(n);if(e.empty||o.empty)return"";const r=e.coord,a=o.coord;return h(1===r.length?[r[0]+a[0]]:[r[0]+a[0],r[1]+a[1]]).name}function O(t,n){const e=M(t),o=M(n);if(e.empty||o.empty)return"";const r=e.coord,a=o.coord,m=a[0]-r[0];return w([m,2===r.length&&2===a.length?a[1]-r[1]:-Math.floor(7*m/12)]).name}var T=Object.freeze({__proto__:null,accToAlt:d,altToAcc:P,coordToInterval:w,coordToNote:h,decode:c,deprecate:n,distance:O,encode:m,fillStr:t,interval:j,isNamed:e,isPitch:o,note:M,stepToLetter:l,tokenizeInterval:A,tokenizeNote:f,transpose:N});const x=(t,n)=>Array(n+1).join(t),V=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function S(t){const n=V.exec(t);return n?[n[1],n[2],n[3]]:["","",""]}function D(t){const[n,e,o]=S(t);if(""===e)return"";let r=4;for(let t=0;t96?e.toUpperCase()+a+(r+1):e+a+r}function C(t){const n=M(t);if(n.empty||!n.oct)return"";const{letter:e,acc:o,oct:r}=n;return("b"===o[0]?o.replace(/b/g,"_"):o.replace(/#/g,"^"))+(r>4?e.toLowerCase():e)+(5===r?"":r>4?x("'",r-5):x(",",4-r))}var $={abcToScientificNotation:D,scientificToAbcNotation:C,tokenize:S,transpose:function(t,n){return C(N(D(t),n))},distance:function(t,n){return O(D(t),D(n))}};function q(t){return t.map(t=>M(t)).filter(t=>!t.empty).sort((t,n)=>t.height-n.height).map(t=>t.name)}var k=Object.freeze({__proto__:null,compact:function(t){return t.filter(t=>0===t||t)},permutations:function t(n){return 0===n.length?[[]]:t(n.slice(1)).reduce((t,e)=>t.concat(n.map((t,o)=>{const r=e.slice();return r.splice(o,0,n[0]),r})),[])},range:function(t,n){return t0===n||t!==e[n-1])}});function E(t,n){return t0===t||t)}var z={compact:F,permutations:function t(n){return 0===n.length?[[]]:t(n.slice(1)).reduce((t,e)=>t.concat(n.map((t,o)=>{const r=e.slice();return r.splice(o,0,n[0]),r})),[])},range:E,rotate:_,shuffle:function(t,n=Math.random){let e,o,r=t.length;for(;r;)e=Math.floor(n()*r--),o=t[r],t[r]=t[e],t[e]=o;return t}};const R={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},U=t=>Number(t).toString(2),B=t=>parseInt(t,2),G=/^[01]{12}$/;function K(t){return G.test(t)}const L={[R.chroma]:R};function H(t){const n=K(t)?t:"number"==typeof(e=t)&&e>=0&&e<=4095?U(t):Array.isArray(t)?function(t){if(0===t.length)return R.chroma;let n;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;ot&&K(t.chroma))(t)?t.chroma:R.chroma;var e;return L[n]=L[n]||function(t){const n=B(t),e=function(t){const n=t.split("");return n.map((t,e)=>_(e,n).join(""))}(t).map(B).filter(t=>t>=2048).sort()[0],o=U(e),r=W(t);return{empty:!1,name:"",setNum:n,chroma:t,normalized:o,intervals:r}}(n)}const J=n("Pcset.pcset","Pcset.get",H),Q=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function W(t){const n=[];for(let e=0;e<12;e++)"1"===t.charAt(e)&&n.push(Q[e]);return n}function X(t,n=!0){const e=H(t).chroma.split("");return F(e.map((t,o)=>{const r=_(o,e);return n&&"0"===r[0]?null:r.join("")}))}function Y(t){const n=H(t).setNum;return t=>{const e=H(t).setNum;return n&&n!==e&&(e&n)===e}}function Z(t){const n=H(t).setNum;return t=>{const e=H(t).setNum;return n&&n!==e&&(e|n)===e}}function tt(t){const n=H(t);return t=>{const e=M(t);return n&&!e.empty&&"1"===n.chroma.charAt(e.chroma)}}var nt={get:H,chroma:t=>H(t).chroma,num:t=>H(t).setNum,intervals:t=>H(t).intervals,chromas:function(){return E(2048,4095).map(U)},isSupersetOf:Z,isSubsetOf:Y,isNoteIncludedIn:tt,isEqual:function(t,n){return H(t).setNum===H(n).setNum},filter:function(t){const n=tt(t);return t=>t.filter(n)},modes:X,pcset:J};const et={...R,name:"",quality:"Unknown",intervals:[],aliases:[]};let ot=[],rt={};function at(t){return rt[t]||et}const mt=n("ChordType.chordType","ChordType.get",at);function it(){return ot.slice()}const ct=n("ChordType.entries","ChordType.all",it);function st(t,n,e){const o=function(t){const n=n=>-1!==t.indexOf(n);return n("5A")?"Augmented":n("3M")?"Major":n("5d")?"Diminished":n("3m")?"Minor":"Unknown"}(t),r={...H(t),name:e||"",quality:o,intervals:t,aliases:n};ot.push(r),r.name&&(rt[r.name]=r),rt[r.setNum]=r,rt[r.chroma]=r,r.aliases.forEach(t=>function(t,n){rt[n]=t}(r,t))}[["1P 3M 5P","major","M "],["1P 3M 5P 7M","major seventh","maj7 Δ ma7 M7 Maj7"],["1P 3M 5P 7M 9M","major ninth","maj9 Δ9"],["1P 3M 5P 7M 9M 13M","major thirteenth","maj13 Maj13"],["1P 3M 5P 6M","sixth","6 add6 add13 M6"],["1P 3M 5P 6M 9M","sixth/ninth","6/9 69"],["1P 3M 5P 7M 11A","lydian","maj#4 Δ#4 Δ#11"],["1P 3M 6m 7M","major seventh b6","M7b6"],["1P 3m 5P","minor","m min -"],["1P 3m 5P 7m","minor seventh","m7 min7 mi7 -7"],["1P 3m 5P 7M","minor/major seventh","m/ma7 m/maj7 mM7 m/M7 -Δ7 mΔ"],["1P 3m 5P 6M","minor sixth","m6"],["1P 3m 5P 7m 9M","minor ninth","m9"],["1P 3m 5P 7m 9M 11P","minor eleventh","m11"],["1P 3m 5P 7m 9M 13M","minor thirteenth","m13"],["1P 3m 5d","diminished","dim ° o"],["1P 3m 5d 7d","diminished seventh","dim7 °7 o7"],["1P 3m 5d 7m","half-diminished","m7b5 ø"],["1P 3M 5P 7m","dominant seventh","7 dom"],["1P 3M 5P 7m 9M","dominant ninth","9"],["1P 3M 5P 7m 9M 13M","dominant thirteenth","13"],["1P 3M 5P 7m 11A","lydian dominant seventh","7#11 7#4"],["1P 3M 5P 7m 9m","dominant b9","7b9"],["1P 3M 5P 7m 9A","dominant #9","7#9"],["1P 3M 7m 9m","altered","alt7"],["1P 4P 5P","suspended 4th","sus4"],["1P 2M 5P","suspended 2nd","sus2"],["1P 4P 5P 7m","suspended 4th seventh","7sus4"],["1P 5P 7m 9M 11P","eleventh","11"],["1P 4P 5P 7m 9m","suspended 4th b9","b9sus phryg"],["1P 5P","fifth","5"],["1P 3M 5A","augmented","aug + +5"],["1P 3M 5A 7M","augmented seventh","maj7#5 maj7+5"],["1P 3M 5P 7M 9M 11A","major #11 (lydian)","maj9#11 Δ9#11"],["1P 2M 4P 5P","","sus24 sus4add9"],["1P 3M 13m","","Mb6"],["1P 3M 5A 7M 9M","","maj9#5 Maj9#5"],["1P 3M 5A 7m","","7#5 +7 7aug aug7"],["1P 3M 5A 7m 9A","","7#5#9 7alt"],["1P 3M 5A 7m 9M","","9#5 9+"],["1P 3M 5A 7m 9M 11A","","9#5#11"],["1P 3M 5A 7m 9m","","7#5b9"],["1P 3M 5A 7m 9m 11A","","7#5b9#11"],["1P 3M 5A 9A","","+add#9"],["1P 3M 5A 9M","","M#5add9 +add9"],["1P 3M 5P 6M 11A","","M6#11 M6b5 6#11 6b5"],["1P 3M 5P 6M 7M 9M","","M7add13"],["1P 3M 5P 6M 9M 11A","","69#11"],["1P 3M 5P 6m 7m","","7b6"],["1P 3M 5P 7M 9A 11A","","maj7#9#11"],["1P 3M 5P 7M 9M 11A 13M","","M13#11 maj13#11 M13+4 M13#4"],["1P 3M 5P 7M 9m","","M7b9"],["1P 3M 5P 7m 11A 13m","","7#11b13 7b5b13"],["1P 3M 5P 7m 13M","","7add6 67 7add13"],["1P 3M 5P 7m 9A 11A","","7#9#11 7b5#9"],["1P 3M 5P 7m 9A 11A 13M","","13#9#11"],["1P 3M 5P 7m 9A 11A 13m","","7#9#11b13"],["1P 3M 5P 7m 9A 13M","","13#9"],["1P 3M 5P 7m 9A 13m","","7#9b13"],["1P 3M 5P 7m 9M 11A","","9#11 9+4 9#4"],["1P 3M 5P 7m 9M 11A 13M","","13#11 13+4 13#4"],["1P 3M 5P 7m 9M 11A 13m","","9#11b13 9b5b13"],["1P 3M 5P 7m 9m 11A","","7b9#11 7b5b9"],["1P 3M 5P 7m 9m 11A 13M","","13b9#11"],["1P 3M 5P 7m 9m 11A 13m","","7b9b13#11 7b9#11b13 7b5b9b13"],["1P 3M 5P 7m 9m 13M","","13b9"],["1P 3M 5P 7m 9m 13m","","7b9b13"],["1P 3M 5P 7m 9m 9A","","7b9#9"],["1P 3M 5P 9M","","Madd9 2 add9 add2"],["1P 3M 5P 9m","","Maddb9"],["1P 3M 5d","","Mb5"],["1P 3M 5d 6M 7m 9M","","13b5"],["1P 3M 5d 7M","","M7b5"],["1P 3M 5d 7M 9M","","M9b5"],["1P 3M 5d 7m","","7b5"],["1P 3M 5d 7m 9M","","9b5"],["1P 3M 7m","","7no5"],["1P 3M 7m 13m","","7b13"],["1P 3M 7m 9M","","9no5"],["1P 3M 7m 9M 13M","","13no5"],["1P 3M 7m 9M 13m","","9b13"],["1P 3m 4P 5P","","madd4"],["1P 3m 5A","","m#5 m+ mb6"],["1P 3m 5P 6M 9M","","m69"],["1P 3m 5P 6m 7M","","mMaj7b6"],["1P 3m 5P 6m 7M 9M","","mMaj9b6"],["1P 3m 5P 7M 9M","","mMaj9"],["1P 3m 5P 7m 11P","","m7add11 m7add4"],["1P 3m 5P 9M","","madd9"],["1P 3m 5d 6M 7M","","o7M7"],["1P 3m 5d 7M","","oM7"],["1P 3m 6m 7M","","mb6M7"],["1P 3m 6m 7m","","m7#5"],["1P 3m 6m 7m 9M","","m9#5"],["1P 3m 6m 7m 9M 11P","","m11A"],["1P 3m 6m 9m","","mb6b9"],["1P 3m 7m 12d 2M","","m9b5 h9"],["1P 3m 7m 12d 2M 4P","","m11b5 h11"],["1P 4P 5A 7M","","M7#5sus4"],["1P 4P 5A 7M 9M","","M9#5sus4"],["1P 4P 5A 7m","","7#5sus4"],["1P 4P 5P 7M","","M7sus4"],["1P 4P 5P 7M 9M","","M9sus4"],["1P 4P 5P 7m 9M","","9sus4 9sus"],["1P 4P 5P 7m 9M 13M","","13sus4 13sus"],["1P 4P 5P 7m 9m 13m","","7sus4b9b13 7b9b13sus4"],["1P 4P 7m 10m","","4 quartal"],["1P 5P 7m 9m 11P","","11b9"]].forEach(([t,n,e])=>st(t.split(" "),e.split(" "),n)),ot.sort((t,n)=>t.setNum-n.setNum);var ut={names:function(){return ot.map(t=>t.name).filter(t=>t)},symbols:function(){return ot.map(t=>t.aliases[0]).filter(t=>t)},get:at,all:it,add:st,removeAll:function(){ot=[],rt={}},keys:function(){return Object.keys(rt)},entries:ct,chordType:mt};const lt={weight:0,name:""};const Pt={...R,intervals:[],aliases:[]};let dt=[],Mt={};function pt(){return dt.map(t=>t.name)}function ft(t){return Mt[t]||Pt}const ht=n("ScaleDictionary.scaleType","ScaleType.get",ft);function yt(){return dt.slice()}const bt=n("ScaleDictionary.entries","ScaleType.all",yt);function gt(t,n,e=[]){const o={...H(t),name:n,intervals:t,aliases:e};return dt.push(o),Mt[o.name]=o,Mt[o.setNum]=o,Mt[o.chroma]=o,o.aliases.forEach(t=>function(t,n){Mt[n]=t}(o,t)),o}[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 3m 3M 5d 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished",'"aeolian b5'],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","·superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 5d 5P 6M 7m","romanian minor"],["1P 2M 3m 4A 5P 6M 7m","dorian #4"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]].forEach(([t,n,...e])=>gt(t.split(" "),n,e));var At={names:pt,get:ft,all:yt,add:gt,removeAll:function(){dt=[],Mt={}},keys:function(){return Object.keys(Mt)},entries:bt,scaleType:ht};const vt={empty:!0,name:"",type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]},jt=/^(6|64|7|9|11|13)$/;function It(t){const[n,e,o,r]=f(t);return""===n?["",t]:"A"===n&&"ug"===r?["","aug"]:r||"4"!==o&&"5"!==o?jt.test(o)?[n+e,o+r]:[n+e+o,r]:[n+e,o]}function wt(t){const{type:n,tonic:e}=function(t){if(!t||!t.length)return{};const n=Array.isArray(t)?t:It(t),e=M(n[0]).name,o=at(n[1]);return o.empty?e&&"string"==typeof t?{tonic:"",type:at(t)}:{}:{tonic:e,type:o}}(t);if(!n||n.empty)return vt;const o=e?n.intervals.map(t=>N(e,t)):[],r=e?e+" "+n.name:n.name;return{...n,name:r,type:n.name,tonic:e||"",notes:o}}var Nt={get:wt,detect:function(t){const n=t.map(t=>M(t).pc).filter(t=>t);return 0===M.length?[]:function(t,n){const e=t[0],o=M(e).chroma,r=(t=>{const n=t.reduce((t,n)=>{const e=M(n).chroma;return void 0!==e&&(t[e]=t[e]||M(n).name),t},{});return t=>n[t]})(t);return X(t,!1).map((t,a)=>{const m=at(t).aliases[0];if(!m)return lt;const i=r(a);return a!==o?{weight:.5*n,name:`${i}${m}/${e}`}:{weight:1*n,name:`${i}${m}`}})}(n,1).filter(t=>t.weight).sort((t,n)=>n.weight-t.weight).map(t=>t.name)},chordScales:function(t){const n=Z(wt(t).chroma);return yt().filter(t=>n(t.chroma)).map(t=>t.name)},extended:function(t){const n=wt(t),e=Z(n.chroma);return it().filter(t=>e(t.chroma)).map(t=>n.tonic+t.aliases[0])},reduced:function(t){const n=wt(t),e=Y(n.chroma);return it().filter(t=>e(t.chroma)).map(t=>n.tonic+t.aliases[0])},tokenize:It,transpose:function(t,n){const[e,o]=It(t);return e?N(e,n)+o:name},chord:n("Chord.chord","Chord.get",wt)};const Ot=[];[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]].forEach(([t,n,e])=>function(t,n,e){Ot.push({empty:!1,dots:"",name:"",value:1/t,fraction:t<1?[1/t,1]:[1,t],shorthand:n,names:e})}(t,n,e));const Tt={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};const xt=/^([^.]+)(\.*)$/;function Vt(t){const[n,e,o]=xt.exec(t)||[],r=Ot.find(t=>t.shorthand===e||t.names.includes(e));if(!r)return Tt;const a=function(t,n){const e=Math.pow(2,n);let o=t[0]*e,r=t[1]*e;const a=o;for(let t=0;t(n.names.forEach(n=>t.push(n)),t),[])},shorthands:function(){return Ot.map(t=>t.shorthand)},get:Vt,value:t=>Vt(t).value,fraction:t=>Vt(t).fraction};const Dt=j;const Ct=[1,2,2,3,3,4,5,5,6,6,7,7],$t="P m M m M P d P m M m M".split(" ");const qt=O,kt=Ft((t,n)=>[t[0]+n[0],t[1]+n[1]]),Et=Ft((t,n)=>[t[0]-n[0],t[1]-n[1]]);var _t={names:function(){return"1P 2M 3M 4P 5P 6m 7m".split(" ")},get:Dt,name:t=>j(t).name,num:t=>j(t).num,semitones:t=>j(t).semitones,quality:t=>j(t).q,fromSemitones:function(t){const n=t<0?-1:1,e=Math.abs(t),o=e%12,r=Math.floor(e/12);return n*(Ct[o]+7*r)+$t[o]},distance:qt,invert:function(t){const n=j(t);return n.empty?"":j({step:(7-n.step)%7,alt:"perfectable"===n.type?-n.alt:-(n.alt+1),oct:n.oct,dir:n.dir}).name},simplify:function(t){const n=j(t);return n.empty?"":n.simple+n.q},add:kt,addTo:t=>n=>kt(t,n),substract:Et};function Ft(t){return(n,e)=>{const o=j(n).coord,r=j(e).coord;if(o&&r){return w(t(o,r)).name}}}function zt(t){return+t>=0&&+t<=127}function Rt(t){if(zt(t))return+t;const n=M(t);return n.empty?null:n.midi}const Ut=Math.log(2),Bt=Math.log(440);const Gt="C C# D D# E F F# G G# A A# B".split(" "),Kt="C Db D Eb E F Gb G Ab A Bb B".split(" ");function Lt(t,n={}){t=Math.round(t);const e=(!0===n.sharps?Gt:Kt)[t%12];return n.pitchClass?e:e+(Math.floor(t/12)-1)}var Ht={isMidi:zt,toMidi:Rt,midiToFreq:function(t,n=440){return Math.pow(2,(t-69)/12)*n},midiToNoteName:Lt,freqToMidi:function(t){const n=12*(Math.log(t)-Bt)/Ut+69;return Math.round(100*n)/100}};const Jt=["C","D","E","F","G","A","B"],Qt=t=>t.name,Wt=t=>t.map(M).filter(t=>!t.empty);const Xt=M;const Yt=N,Zt=N,tn=t=>n=>Yt(n,t),nn=tn,en=t=>n=>Yt(t,n),on=en;function rn(t,n){const e=Xt(t);if(e.empty)return"";const[o,r]=e.coord;return h(void 0===r?[o+n]:[o+n,r]).name}const an=rn,mn=(t,n)=>t.height-n.height;function cn(t,n){return n=n||mn,Wt(t).sort(n).map(Qt)}function sn(t){return cn(t,mn).filter((t,n,e)=>0===n||t!==e[n-1])}const un=Pn(!0),ln=Pn(!1);function Pn(t){return n=>{const e=Xt(n);if(e.empty)return"";const o=t?e.alt>0:e.alt<0,r=null===e.midi;return Lt(e.midi||e.chroma,{sharps:o,pitchClass:r})}}var dn={names:function(t){return void 0===t?Jt.slice():Array.isArray(t)?Wt(t).map(Qt):[]},get:Xt,name:t=>Xt(t).name,pitchClass:t=>Xt(t).pc,accidentals:t=>Xt(t).acc,octave:t=>Xt(t).oct,midi:t=>Xt(t).midi,ascending:mn,descending:(t,n)=>n.height-t.height,sortedNames:cn,sortedUniqNames:sn,fromMidi:function(t){return Lt(t)},fromMidiSharps:function(t){return Lt(t,{sharps:!0})},freq:t=>Xt(t).freq,chroma:t=>Xt(t).chroma,transpose:Yt,tr:Zt,transposeBy:tn,trBy:nn,transposeFrom:en,trFrom:on,transposeFifths:rn,trFifths:an,simplify:un,enharmonic:ln};const Mn={empty:!0,name:"",chordType:""},pn={};function fn(t){return"string"==typeof t?pn[t]||(pn[t]=function(t){const[n,e,o,r]=(a=t,yn.exec(a)||["","","",""]);var a;if(!o)return Mn;const m=o.toUpperCase(),i=gn.indexOf(m),c=d(e);return{empty:!1,name:n,roman:o,interval:j({step:i,alt:c,dir:1}).name,acc:e,chordType:r,alt:c,step:i,major:o===m,oct:0,dir:1}}(t)):"number"==typeof t?fn(gn[t]||""):o(t)?fn(P((n=t).alt)+gn[n.step]):e(t)?fn(t.name):Mn;var n}const hn=n("RomanNumeral.romanNumeral","RomanNumeral.get",fn);const yn=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;const bn="I II III IV V VI VII",gn=bn.split(" "),An=bn.toLowerCase().split(" ");var vn={names:function(t=!0){return(t?gn:An).slice()},get:fn,romanNumeral:hn};const jn=t=>(n,e="")=>n.map((n,o)=>"-"!==n?t[o]+e+n:"");function In(t,n,e,o){return r=>{const a=t.split(" "),m=a.map(t=>fn(t).interval||""),i=m.map(t=>N(r,t)),c=jn(i);return{tonic:r,grades:a,intervals:m,scale:i,chords:c(n.split(" ")),chordsHarmonicFunction:e.split(" "),chordScales:c(o.split(",")," ")}}}const wn=(t,n)=>{const e=M(t),o=M(n);return e.empty||o.empty?0:o.coord[0]-e.coord[0]},Nn=In("I II III IV V VI VII","maj7 m7 m7 maj7 7 m7 m7b5","T SD T SD D T D","major,dorian,phrygian,lydian,mixolydian,minor,locrian"),On=In("I II bIII IV V bVI bVII","m7 m7b5 maj7 m7 m7 maj7 7","T SD T SD D SD SD","minor,locrian,major,dorian,phrygian,lydian,mixolydian"),Tn=In("I II bIII IV V bVI VII","mmaj7 m7b5 +maj7 m7 7 maj7 mo7","T SD T SD D SD D","harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian"),xn=In("I II bIII IV V VI VII","m6 m7 +maj7 7 7 m7b5 m7b5","T SD T SD D - -","melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered");var Vn={majorKey:function(t){const n=Nn(t),e=wn("C",t),o=jn(n.scale);return{...n,type:"major",minorRelative:N(t,"-3m"),alteration:e,keySignature:P(e),secondaryDominants:o("- VI7 VII7 I7 II7 III7 -".split(" ")),secondaryDominantsMinorRelative:o("- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -".split(" ")),substituteDominants:o("- bIII7 IV7 bV7 bVI7 bVII7 -".split(" ")),substituteDominantsMinorRelative:o("- IIIm7 Im7 IIbm7 VIm7 IVm7 -".split(" "))}},majorTonicFromKeySignature:function(t){return"number"==typeof t?rn("C",t):"string"==typeof t&&/^b+|#+$/.test(t)?rn("C",d(t)):null},minorKey:function(t){const n=wn("C",t)-3;return{type:"minor",tonic:t,relativeMajor:N(t,"3m"),alteration:n,keySignature:P(n),natural:On(t),harmonic:Tn(t),melodic:xn(t)}}};const Sn={...R,name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]},Dn=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]].map((function(t){const[n,e,o,r,a,m,i]=t,c=i?[i]:[],s=Number(e).toString(2);return{empty:!1,intervals:W(s),modeNum:n,chroma:s,normalized:s,name:r,setNum:e,alt:o,triad:a,seventh:m,aliases:c}})),Cn={};function $n(t){return"string"==typeof t?Cn[t.toLowerCase()]||Sn:t&&t.name?$n(t.name):Sn}Dn.forEach(t=>{Cn[t.name]=t,t.aliases.forEach(n=>{Cn[n]=t})});const qn=n("Mode.mode","Mode.get",$n);function kn(){return Dn.slice()}var En={get:$n,names:function(){return Dn.map(t=>t.name)},all:kn,entries:n("Mode.mode","Mode.all",kn),mode:qn};var _n={fromRomanNumerals:function(t,n){return n.map(fn).map(n=>N(t,j(n))+n.chordType)},toRomanNumerals:function(t,n){return n.map(n=>{const[e,o]=It(n);return fn(j(O(t,e))).name+o})}};function Fn(t){const n=F(t.map(Rt));return t.length&&n.length===t.length?n.reduce((t,n)=>{const e=t[t.length-1];return t.concat(E(e,n).slice(1))},[n[0]]):[]}var zn={numeric:Fn,chromatic:function(t,n){return Fn(t).map(t=>Lt(t,n))}};const Rn={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Un(t){if("string"!=typeof t)return["",""];const n=t.indexOf(" "),e=M(t.substring(0,n));if(e.empty){const n=M(t);return n.empty?["",t]:[n.name,""]}const o=t.substring(e.name.length+1);return[e.name,o.length?o:""]}function Bn(t){const n=Array.isArray(t)?t:Un(t),e=M(n[0]).name,o=ft(n[1]);if(o.empty)return Rn;const r=o.name,a=e?o.intervals.map(t=>N(e,t)):[],m=e?e+" "+r:r;return{...o,name:m,type:r,tonic:e,notes:a}}var Gn={get:Bn,names:pt,extended:function(t){const n=Z(Bn(t).chroma);return yt().filter(t=>n(t.chroma)).map(t=>t.name)},modeNames:function(t){const n=Bn(t);if(n.empty)return[];const e=n.tonic?n.notes:n.intervals;return X(n.chroma).map((t,n)=>{const o=Bn(t).name;return o?[e[n],o]:["",""]}).filter(t=>t[0])},reduced:function(t){const n=Y(Bn(t).chroma);return yt().filter(t=>n(t.chroma)).map(t=>t.name)},scaleChords:function(t){const n=Y(Bn(t).chroma);return it().filter(t=>n(t.chroma)).map(t=>t.aliases[0])},scaleNotes:function(t){const n=t.map(t=>M(t).pc).filter(t=>t),e=n[0],o=sn(n);return _(o.indexOf(e),o)},tokenize:Un,scale:n("Scale.scale","Scale.get",Bn)};const Kn={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},Ln=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];const Hn=/^(\d?\d(?:\+\d)*)\/(\d)$/,Jn=new Map;function Qn(t){if("string"==typeof t){const[n,e,o]=Hn.exec(t)||[];return Qn([e,o])}const[n,e]=t,o=+e;if("number"==typeof n)return[n,o];const r=n.split("+").map(t=>+t);return 1===r.length?[r[0],o]:[r,o]}var Wn={names:function(){return Ln.slice()},parse:Qn,get:function(t){const n=Jn.get(t);if(n)return n;const e=function([t,n]){const e=Array.isArray(t)?t.reduce((t,n)=>t+n,0):t,o=n;if(0===e||0===o)return Kn;const r=Array.isArray(t)?`${t.join("+")}/${n}`:`${t}/${n}`,a=Array.isArray(t)?t:[];return{empty:!1,name:r,type:4===o||2===o?"simple":8===o&&e%3==0?"compound":"irregular",upper:e,lower:o,additive:a}}(Qn(t));return Jn.set(t,e),e}};var Xn,Yn,Zn=(function(t,n){!function(t,n,e,o,r,a,m,i,c,s,u,l,P,d,M,p,f,h,y,b){n=n&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n,o=o&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o,r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,a=a&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a,i=i&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i,c=c&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c,s=s&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s,u=u&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u,l=l&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l,P=P&&Object.prototype.hasOwnProperty.call(P,"default")?P.default:P,d=d&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d,M=M&&Object.prototype.hasOwnProperty.call(M,"default")?M.default:M,p=p&&Object.prototype.hasOwnProperty.call(p,"default")?p.default:p,f=f&&Object.prototype.hasOwnProperty.call(f,"default")?f.default:f,h=h&&Object.prototype.hasOwnProperty.call(h,"default")?h.default:h,y=y&&Object.prototype.hasOwnProperty.call(y,"default")?y.default:y,b=b&&Object.prototype.hasOwnProperty.call(b,"default")?b.default:b;var g=m,A=d,v=r,j=y;Object.keys(m).forEach((function(n){"default"!==n&&Object.defineProperty(t,n,{enumerable:!0,get:function(){return m[n]}})})),t.AbcNotation=n,t.Array=e,t.Chord=o,t.ChordType=r,t.Collection=a,t.Core=m,t.DurationValue=i,t.Interval=c,t.Key=s,t.Midi=u,t.Mode=l,t.Note=P,t.Pcset=d,t.Progression=M,t.Range=p,t.RomanNumeral=f,t.Scale=h,t.ScaleType=y,t.TimeSignature=b,t.ChordDictionary=v,t.PcSet=A,t.ScaleDictionary=j,t.Tonal=g,Object.defineProperty(t,"__esModule",{value:!0})}(n,$,k,Nt,ut,z,T,St,_t,Vn,Ht,En,dn,nt,_n,zn,vn,Gn,At,Wn)}(Xn={exports:{}},Xn.exports),Xn.exports);return(Yn=Zn)&&Yn.__esModule&&Object.prototype.hasOwnProperty.call(Yn,"default")?Yn.default:Yn}(); +var Tonal=function(){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;const t=(t,n)=>Array(Math.abs(n)+1).join(t);function n(t,n,e){return function(...o){return console.warn(`${t} is deprecated. Use ${n}.`),e.apply(this,o)}}function e(t){return null!==t&&"object"==typeof t&&"string"==typeof t.name}function o(t){return null!==t&&"object"==typeof t&&"number"==typeof t.step&&"number"==typeof t.alt}const r=[0,2,4,-1,1,3,5],a=r.map(t=>Math.floor(7*t/12));function m(t){const{step:n,alt:e,oct:o,dir:m=1}=t,i=r[n]+7*e;return void 0===o?[m*i]:[m*i,m*(o-a[n]-4*e)]}const i=[3,0,4,1,5,2,6];function c(t){const[n,e,o]=t,r=i[function(t){const n=(t+1)%7;return n<0?7+n:n}(n)],m=Math.floor((n+1)/7);return void 0===e?{step:r,alt:m,dir:o}:{step:r,alt:m,oct:e+4*m+a[r],dir:o}}const s={empty:!0,name:"",pc:"",acc:""},u=new Map,l=t=>"CDEFGAB".charAt(t),P=n=>n<0?t("b",-n):t("#",n),d=t=>"b"===t[0]?-t.length:t.length;function M(t){const n=u.get(t);if(n)return n;const r="string"==typeof t?function(t){const n=f(t);if(""===n[0]||""!==n[3])return s;const e=n[0],o=n[1],r=n[2],a=(e.charCodeAt(0)+3)%7,i=d(o),c=r.length?+r:void 0,u=m({step:a,alt:i,oct:c}),l=e+o+r,P=e+o,M=(y[a]+i+120)%12,p=void 0===c?-100:c,h=y[a]+i+12*(p+1),b=h>=0&&h<=127?h:null,g=void 0===c?null:440*Math.pow(2,(h-69)/12);return{empty:!1,acc:o,alt:i,chroma:M,coord:u,freq:g,height:h,letter:e,midi:b,name:l,oct:c,pc:P,step:a}}(t):o(t)?M(function(t){const{step:n,alt:e,oct:o}=t,r=l(n);if(!r)return"";const a=r+P(e);return o||0===o?a+o:a}(t)):e(t)?M(t.name):s;return u.set(t,r),r}const p=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function f(t){const n=p.exec(t);return[n[1].toUpperCase(),n[2].replace(/x/g,"##"),n[3],n[4]]}function h(t){return M(c(t))}const y=[0,2,4,5,7,9,11];const b={empty:!0,name:"",acc:""},g=new RegExp("^([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})|(AA|A|P|M|m|d|dd)([-+]?\\d+)$");function A(t){const n=g.exec(`${t}`);return null===n?["",""]:n[1]?[n[1],n[2]]:[n[4],n[3]]}const v={};function j(n){return"string"==typeof n?v[n]||(v[n]=function(t){const n=A(t);if(""===n[0])return b;const e=+n[0],o=n[1],r=(Math.abs(e)-1)%7,a="PMMPPMM"[r];if("M"===a&&"P"===o)return b;const i="M"===a?"majorable":"perfectable",c=""+e+o,s=e<0?-1:1,u=8===e||-8===e?e:s*(r+1),l=function(t,n){return"M"===n&&"majorable"===t||"P"===n&&"perfectable"===t?0:"m"===n&&"majorable"===t?-1:/^A+$/.test(n)?n.length:/^d+$/.test(n)?-1*("perfectable"===t?n.length:n.length+1):0}(i,o),P=Math.floor((Math.abs(e)-1)/7),d=s*(I[r]+l+12*P),M=(s*(I[r]+l)%12+12)%12,p=m({step:r,alt:l,oct:P,dir:s});return{empty:!1,name:c,num:e,q:o,step:r,alt:l,dir:s,type:i,simple:u,semitones:d,chroma:M,coord:p,oct:P}}(n)):o(n)?j(function(n){const{step:e,alt:o,oct:r=0,dir:a}=n;if(!a)return"";return(a<0?"-":"")+(e+1+7*r)+function(n,e){return 0===e?"majorable"===n?"M":"P":-1===e&&"majorable"===n?"m":e>0?t("A",e):t("d","perfectable"===n?e:e+1)}("M"==="PMMPPMM"[e]?"majorable":"perfectable",o)}(n)):e(n)?j(n.name):b}const I=[0,2,4,5,7,9,11];function w(t){const[n,e=0]=t;return j(c(7*n+12*e<0?[-n,-e,-1]:[n,e,1]))}function N(t,n){const e=M(t),o=j(n);if(e.empty||o.empty)return"";const r=e.coord,a=o.coord;return h(1===r.length?[r[0]+a[0]]:[r[0]+a[0],r[1]+a[1]]).name}function O(t,n){const e=M(t),o=M(n);if(e.empty||o.empty)return"";const r=e.coord,a=o.coord,m=a[0]-r[0];return w([m,2===r.length&&2===a.length?a[1]-r[1]:-Math.floor(7*m/12)]).name}var x=Object.freeze({__proto__:null,accToAlt:d,altToAcc:P,coordToInterval:w,coordToNote:h,decode:c,deprecate:n,distance:O,encode:m,fillStr:t,interval:j,isNamed:e,isPitch:o,note:M,stepToLetter:l,tokenizeInterval:A,tokenizeNote:f,transpose:N});const T=(t,n)=>Array(n+1).join(t),D=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function V(t){const n=D.exec(t);return n?[n[1],n[2],n[3]]:["","",""]}function S(t){const[n,e,o]=V(t);if(""===e)return"";let r=4;for(let t=0;t96?e.toUpperCase()+a+(r+1):e+a+r}function C(t){const n=M(t);if(n.empty||!n.oct)return"";const{letter:e,acc:o,oct:r}=n;return("b"===o[0]?o.replace(/b/g,"_"):o.replace(/#/g,"^"))+(r>4?e.toLowerCase():e)+(5===r?"":r>4?T("'",r-5):T(",",4-r))}var $={abcToScientificNotation:S,scientificToAbcNotation:C,tokenize:V,transpose:function(t,n){return C(N(S(t),n))},distance:function(t,n){return O(S(t),S(n))}};function q(t){return t.map(t=>M(t)).filter(t=>!t.empty).sort((t,n)=>t.height-n.height).map(t=>t.name)}var k=Object.freeze({__proto__:null,compact:function(t){return t.filter(t=>0===t||t)},permutations:function t(n){return 0===n.length?[[]]:t(n.slice(1)).reduce((t,e)=>t.concat(n.map((t,o)=>{const r=e.slice();return r.splice(o,0,n[0]),r})),[])},range:function(t,n){return t0===n||t!==e[n-1])}});function E(t,n){return t0===t||t)}var z={compact:F,permutations:function t(n){return 0===n.length?[[]]:t(n.slice(1)).reduce((t,e)=>t.concat(n.map((t,o)=>{const r=e.slice();return r.splice(o,0,n[0]),r})),[])},range:E,rotate:_,shuffle:function(t,n=Math.random){let e,o,r=t.length;for(;r;)e=Math.floor(n()*r--),o=t[r],t[r]=t[e],t[e]=o;return t}};const R={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},U=t=>Number(t).toString(2),B=t=>parseInt(t,2),G=/^[01]{12}$/;function K(t){return G.test(t)}const L={[R.chroma]:R};function H(t){const n=K(t)?t:"number"==typeof(e=t)&&e>=0&&e<=4095?U(t):Array.isArray(t)?function(t){if(0===t.length)return R.chroma;let n;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;ot&&K(t.chroma))(t)?t.chroma:R.chroma;var e;return L[n]=L[n]||function(t){const n=B(t),e=function(t){const n=t.split("");return n.map((t,e)=>_(e,n).join(""))}(t).map(B).filter(t=>t>=2048).sort()[0],o=U(e),r=W(t);return{empty:!1,name:"",setNum:n,chroma:t,normalized:o,intervals:r}}(n)}const J=n("Pcset.pcset","Pcset.get",H),Q=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function W(t){const n=[];for(let e=0;e<12;e++)"1"===t.charAt(e)&&n.push(Q[e]);return n}function X(t,n=!0){const e=H(t).chroma.split("");return F(e.map((t,o)=>{const r=_(o,e);return n&&"0"===r[0]?null:r.join("")}))}function Y(t){const n=H(t).setNum;return t=>{const e=H(t).setNum;return n&&n!==e&&(e&n)===e}}function Z(t){const n=H(t).setNum;return t=>{const e=H(t).setNum;return n&&n!==e&&(e|n)===e}}function tt(t){const n=H(t);return t=>{const e=M(t);return n&&!e.empty&&"1"===n.chroma.charAt(e.chroma)}}var nt={get:H,chroma:t=>H(t).chroma,num:t=>H(t).setNum,intervals:t=>H(t).intervals,chromas:function(){return E(2048,4095).map(U)},isSupersetOf:Z,isSubsetOf:Y,isNoteIncludedIn:tt,isEqual:function(t,n){return H(t).setNum===H(n).setNum},filter:function(t){const n=tt(t);return t=>t.filter(n)},modes:X,pcset:J};const et={...R,name:"",quality:"Unknown",intervals:[],aliases:[]};let ot=[],rt={};function at(t){return rt[t]||et}const mt=n("ChordType.chordType","ChordType.get",at);function it(){return ot.slice()}const ct=n("ChordType.entries","ChordType.all",it);function st(t,n,e){const o=function(t){const n=n=>-1!==t.indexOf(n);return n("5A")?"Augmented":n("3M")?"Major":n("5d")?"Diminished":n("3m")?"Minor":"Unknown"}(t),r={...H(t),name:e||"",quality:o,intervals:t,aliases:n};ot.push(r),r.name&&(rt[r.name]=r),rt[r.setNum]=r,rt[r.chroma]=r,r.aliases.forEach(t=>function(t,n){rt[n]=t}(r,t))}[["1P 3M 5P","major","M "],["1P 3M 5P 7M","major seventh","maj7 Δ ma7 M7 Maj7"],["1P 3M 5P 7M 9M","major ninth","maj9 Δ9"],["1P 3M 5P 7M 9M 13M","major thirteenth","maj13 Maj13"],["1P 3M 5P 6M","sixth","6 add6 add13 M6"],["1P 3M 5P 6M 9M","sixth/ninth","6/9 69"],["1P 3M 5P 7M 11A","lydian","maj#4 Δ#4 Δ#11"],["1P 3M 6m 7M","major seventh flat sixth","M7b6"],["1P 3m 5P","minor","m min -"],["1P 3m 5P 7m","minor seventh","m7 min7 mi7 -7"],["1P 3m 5P 7M","minor/major seventh","m/ma7 m/maj7 mM7 m/M7 -Δ7 mΔ"],["1P 3m 5P 6M","minor sixth","m6"],["1P 3m 5P 7m 9M","minor ninth","m9"],["1P 3m 5P 7m 9M 11P","minor eleventh","m11"],["1P 3m 5P 7m 9M 13M","minor thirteenth","m13"],["1P 3m 5d","diminished","dim ° o"],["1P 3m 5d 7d","diminished seventh","dim7 °7 o7"],["1P 3m 5d 7m","half-diminished","m7b5 ø"],["1P 3M 5P 7m","dominant seventh","7 dom"],["1P 3M 5P 7m 9M","dominant ninth","9"],["1P 3M 5P 7m 9M 13M","dominant thirteenth","13"],["1P 3M 5P 7m 11A","lydian dominant seventh","7#11 7#4"],["1P 3M 5P 7m 9m","dominant flat ninth","7b9"],["1P 3M 5P 7m 9A","dominant sharp ninth","7#9"],["1P 3M 7m 9m","altered","alt7"],["1P 4P 5P","suspended fourth","sus4"],["1P 2M 5P","suspended second","sus2"],["1P 4P 5P 7m","suspended fourth seventh","7sus4"],["1P 5P 7m 9M 11P","eleventh","11"],["1P 4P 5P 7m 9m","suspended fourth flat ninth","b9sus phryg"],["1P 5P","fifth","5"],["1P 3M 5A","augmented","aug + +5"],["1P 3M 5A 7M","augmented seventh","maj7#5 maj7+5"],["1P 3M 5P 7M 9M 11A","major sharp eleventh (lydian)","maj9#11 Δ9#11"],["1P 2M 4P 5P","","sus24 sus4add9"],["1P 3M 13m","","Mb6"],["1P 3M 5A 7M 9M","","maj9#5 Maj9#5"],["1P 3M 5A 7m","","7#5 +7 7aug aug7"],["1P 3M 5A 7m 9A","","7#5#9 7alt"],["1P 3M 5A 7m 9M","","9#5 9+"],["1P 3M 5A 7m 9M 11A","","9#5#11"],["1P 3M 5A 7m 9m","","7#5b9"],["1P 3M 5A 7m 9m 11A","","7#5b9#11"],["1P 3M 5A 9A","","+add#9"],["1P 3M 5A 9M","","M#5add9 +add9"],["1P 3M 5P 6M 11A","","M6#11 M6b5 6#11 6b5"],["1P 3M 5P 6M 7M 9M","","M7add13"],["1P 3M 5P 6M 9M 11A","","69#11"],["1P 3M 5P 6m 7m","","7b6"],["1P 3M 5P 7M 9A 11A","","maj7#9#11"],["1P 3M 5P 7M 9M 11A 13M","","M13#11 maj13#11 M13+4 M13#4"],["1P 3M 5P 7M 9m","","M7b9"],["1P 3M 5P 7m 11A 13m","","7#11b13 7b5b13"],["1P 3M 5P 7m 13M","","7add6 67 7add13"],["1P 3M 5P 7m 9A 11A","","7#9#11 7b5#9"],["1P 3M 5P 7m 9A 11A 13M","","13#9#11"],["1P 3M 5P 7m 9A 11A 13m","","7#9#11b13"],["1P 3M 5P 7m 9A 13M","","13#9"],["1P 3M 5P 7m 9A 13m","","7#9b13"],["1P 3M 5P 7m 9M 11A","","9#11 9+4 9#4"],["1P 3M 5P 7m 9M 11A 13M","","13#11 13+4 13#4"],["1P 3M 5P 7m 9M 11A 13m","","9#11b13 9b5b13"],["1P 3M 5P 7m 9m 11A","","7b9#11 7b5b9"],["1P 3M 5P 7m 9m 11A 13M","","13b9#11"],["1P 3M 5P 7m 9m 11A 13m","","7b9b13#11 7b9#11b13 7b5b9b13"],["1P 3M 5P 7m 9m 13M","","13b9"],["1P 3M 5P 7m 9m 13m","","7b9b13"],["1P 3M 5P 7m 9m 9A","","7b9#9"],["1P 3M 5P 9M","","Madd9 2 add9 add2"],["1P 3M 5P 9m","","Maddb9"],["1P 3M 5d","","Mb5"],["1P 3M 5d 6M 7m 9M","","13b5"],["1P 3M 5d 7M","","M7b5"],["1P 3M 5d 7M 9M","","M9b5"],["1P 3M 5d 7m","","7b5"],["1P 3M 5d 7m 9M","","9b5"],["1P 3M 7m","","7no5"],["1P 3M 7m 13m","","7b13"],["1P 3M 7m 9M","","9no5"],["1P 3M 7m 9M 13M","","13no5"],["1P 3M 7m 9M 13m","","9b13"],["1P 3m 4P 5P","","madd4"],["1P 3m 5A","","m#5 m+ mb6"],["1P 3m 5P 6M 9M","","m69"],["1P 3m 5P 6m 7M","","mMaj7b6"],["1P 3m 5P 6m 7M 9M","","mMaj9b6"],["1P 3m 5P 7M 9M","","mMaj9"],["1P 3m 5P 7m 11P","","m7add11 m7add4"],["1P 3m 5P 9M","","madd9"],["1P 3m 5d 6M 7M","","o7M7"],["1P 3m 5d 7M","","oM7"],["1P 3m 6m 7M","","mb6M7"],["1P 3m 6m 7m","","m7#5"],["1P 3m 6m 7m 9M","","m9#5"],["1P 3m 6m 7m 9M 11P","","m11A"],["1P 3m 6m 9m","","mb6b9"],["1P 2M 3m 5d 7m","","m9b5"],["1P 4P 5A 7M","","M7#5sus4"],["1P 4P 5A 7M 9M","","M9#5sus4"],["1P 4P 5A 7m","","7#5sus4"],["1P 4P 5P 7M","","M7sus4"],["1P 4P 5P 7M 9M","","M9sus4"],["1P 4P 5P 7m 9M","","9sus4 9sus"],["1P 4P 5P 7m 9M 13M","","13sus4 13sus"],["1P 4P 5P 7m 9m 13m","","7sus4b9b13 7b9b13sus4"],["1P 4P 7m 10m","","4 quartal"],["1P 5P 7m 9m 11P","","11b9"]].forEach(([t,n,e])=>st(t.split(" "),e.split(" "),n)),ot.sort((t,n)=>t.setNum-n.setNum);var ut={names:function(){return ot.map(t=>t.name).filter(t=>t)},symbols:function(){return ot.map(t=>t.aliases[0]).filter(t=>t)},get:at,all:it,add:st,removeAll:function(){ot=[],rt={}},keys:function(){return Object.keys(rt)},entries:ct,chordType:mt};const lt={weight:0,name:""};const Pt={...R,intervals:[],aliases:[]};let dt=[],Mt={};function pt(){return dt.map(t=>t.name)}function ft(t){return Mt[t]||Pt}const ht=n("ScaleDictionary.scaleType","ScaleType.get",ft);function yt(){return dt.slice()}const bt=n("ScaleDictionary.entries","ScaleType.all",yt);function gt(t,n,e=[]){const o={...H(t),name:n,intervals:t,aliases:e};return dt.push(o),Mt[o.name]=o,Mt[o.setNum]=o,Mt[o.chroma]=o,o.aliases.forEach(t=>function(t,n){Mt[n]=t}(o,t)),o}[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 3m 3M 5d 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished",'"aeolian b5'],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","·superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 5d 5P 6M 7m","romanian minor"],["1P 2M 3m 4A 5P 6M 7m","dorian #4"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]].forEach(([t,n,...e])=>gt(t.split(" "),n,e));var At={names:pt,get:ft,all:yt,add:gt,removeAll:function(){dt=[],Mt={}},keys:function(){return Object.keys(Mt)},entries:bt,scaleType:ht};const vt={empty:!0,name:"",symbol:"",root:"",rootDegree:0,type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]},jt=/^(6|64|7|9|11|13)$/;function It(t){const[n,e,o,r]=f(t);return""===n?["",t]:"A"===n&&"ug"===r?["","aug"]:r||"4"!==o&&"5"!==o?jt.test(o)?[n+e,o+r]:[n+e+o,r]:[n+e,o]}function wt(t){if(""===t)return vt;if(Array.isArray(t)&&2===t.length)return Nt(t[1],t[0]);{const[n,e]=It(t),o=Nt(e,n);return o.empty?Nt(t):o}}function Nt(t,n,e){const o=at(t),r=M(n||""),a=M(e||"");if(o.empty||n&&r.empty||e&&a.empty)return vt;const m=O(r.pc,a.pc),i=o.intervals.indexOf(m)+1;if(!a.empty&&!i)return vt;const c=r.empty?[]:o.intervals.map(t=>N(r,t));t=-1!==o.aliases.indexOf(t)?t:o.aliases[0];const s=`${r.empty?"":r.pc}${t}${a.empty?"":"/"+a.pc}`,u=`${n?r.pc+" ":""}${o.name}${e?" over "+a.pc:""}`;return{...o,name:u,symbol:s,type:o.name,root:a.name,rootDegree:i,tonic:r.name,notes:c}}var Ot={getChord:Nt,get:wt,detect:function(t){const n=t.map(t=>M(t).pc).filter(t=>t);return 0===M.length?[]:function(t,n){const e=t[0],o=M(e).chroma,r=(t=>{const n=t.reduce((t,n)=>{const e=M(n).chroma;return void 0!==e&&(t[e]=t[e]||M(n).name),t},{});return t=>n[t]})(t);return X(t,!1).map((t,a)=>{const m=at(t).aliases[0];if(!m)return lt;const i=r(a);return a!==o?{weight:.5*n,name:`${i}${m}/${e}`}:{weight:1*n,name:`${i}${m}`}})}(n,1).filter(t=>t.weight).sort((t,n)=>n.weight-t.weight).map(t=>t.name)},chordScales:function(t){const n=Z(wt(t).chroma);return yt().filter(t=>n(t.chroma)).map(t=>t.name)},extended:function(t){const n=wt(t),e=Z(n.chroma);return it().filter(t=>e(t.chroma)).map(t=>n.tonic+t.aliases[0])},reduced:function(t){const n=wt(t),e=Y(n.chroma);return it().filter(t=>e(t.chroma)).map(t=>n.tonic+t.aliases[0])},tokenize:It,transpose:function(t,n){const[e,o]=It(t);return e?N(e,n)+o:name},chord:n("Chord.chord","Chord.get",wt)};const xt=[];[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]].forEach(([t,n,e])=>function(t,n,e){xt.push({empty:!1,dots:"",name:"",value:1/t,fraction:t<1?[1/t,1]:[1,t],shorthand:n,names:e})}(t,n,e));const Tt={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};const Dt=/^([^.]+)(\.*)$/;function Vt(t){const[n,e,o]=Dt.exec(t)||[],r=xt.find(t=>t.shorthand===e||t.names.includes(e));if(!r)return Tt;const a=function(t,n){const e=Math.pow(2,n);let o=t[0]*e,r=t[1]*e;const a=o;for(let t=0;t(n.names.forEach(n=>t.push(n)),t),[])},shorthands:function(){return xt.map(t=>t.shorthand)},get:Vt,value:t=>Vt(t).value,fraction:t=>Vt(t).fraction};const Ct=j;const $t=[1,2,2,3,3,4,5,5,6,6,7,7],qt="P m M m M P d P m M m M".split(" ");const kt=O,Et=zt((t,n)=>[t[0]+n[0],t[1]+n[1]]),_t=zt((t,n)=>[t[0]-n[0],t[1]-n[1]]);var Ft={names:function(){return"1P 2M 3M 4P 5P 6m 7m".split(" ")},get:Ct,name:t=>j(t).name,num:t=>j(t).num,semitones:t=>j(t).semitones,quality:t=>j(t).q,fromSemitones:function(t){const n=t<0?-1:1,e=Math.abs(t),o=e%12,r=Math.floor(e/12);return n*($t[o]+7*r)+qt[o]},distance:kt,invert:function(t){const n=j(t);return n.empty?"":j({step:(7-n.step)%7,alt:"perfectable"===n.type?-n.alt:-(n.alt+1),oct:n.oct,dir:n.dir}).name},simplify:function(t){const n=j(t);return n.empty?"":n.simple+n.q},add:Et,addTo:t=>n=>Et(t,n),substract:_t};function zt(t){return(n,e)=>{const o=j(n).coord,r=j(e).coord;if(o&&r){return w(t(o,r)).name}}}function Rt(t){return+t>=0&&+t<=127}function Ut(t){if(Rt(t))return+t;const n=M(t);return n.empty?null:n.midi}const Bt=Math.log(2),Gt=Math.log(440);const Kt="C C# D D# E F F# G G# A A# B".split(" "),Lt="C Db D Eb E F Gb G Ab A Bb B".split(" ");function Ht(t,n={}){t=Math.round(t);const e=(!0===n.sharps?Kt:Lt)[t%12];return n.pitchClass?e:e+(Math.floor(t/12)-1)}var Jt={isMidi:Rt,toMidi:Ut,midiToFreq:function(t,n=440){return Math.pow(2,(t-69)/12)*n},midiToNoteName:Ht,freqToMidi:function(t){const n=12*(Math.log(t)-Gt)/Bt+69;return Math.round(100*n)/100}};const Qt=["C","D","E","F","G","A","B"],Wt=t=>t.name,Xt=t=>t.map(M).filter(t=>!t.empty);const Yt=M;const Zt=N,tn=N,nn=t=>n=>Zt(n,t),en=nn,on=t=>n=>Zt(t,n),rn=on;function an(t,n){const e=Yt(t);if(e.empty)return"";const[o,r]=e.coord;return h(void 0===r?[o+n]:[o+n,r]).name}const mn=an,cn=(t,n)=>t.height-n.height;function sn(t,n){return n=n||cn,Xt(t).sort(n).map(Wt)}function un(t){return sn(t,cn).filter((t,n,e)=>0===n||t!==e[n-1])}const ln=dn(!0),Pn=dn(!1);function dn(t){return n=>{const e=Yt(n);if(e.empty)return"";const o=t?e.alt>0:e.alt<0,r=null===e.midi;return Ht(e.midi||e.chroma,{sharps:o,pitchClass:r})}}var Mn={names:function(t){return void 0===t?Qt.slice():Array.isArray(t)?Xt(t).map(Wt):[]},get:Yt,name:t=>Yt(t).name,pitchClass:t=>Yt(t).pc,accidentals:t=>Yt(t).acc,octave:t=>Yt(t).oct,midi:t=>Yt(t).midi,ascending:cn,descending:(t,n)=>n.height-t.height,sortedNames:sn,sortedUniqNames:un,fromMidi:function(t){return Ht(t)},fromMidiSharps:function(t){return Ht(t,{sharps:!0})},freq:t=>Yt(t).freq,chroma:t=>Yt(t).chroma,transpose:Zt,tr:tn,transposeBy:nn,trBy:en,transposeFrom:on,trFrom:rn,transposeFifths:an,trFifths:mn,simplify:ln,enharmonic:Pn};const pn={empty:!0,name:"",chordType:""},fn={};function hn(t){return"string"==typeof t?fn[t]||(fn[t]=function(t){const[n,e,o,r]=(a=t,bn.exec(a)||["","","",""]);var a;if(!o)return pn;const m=o.toUpperCase(),i=An.indexOf(m),c=d(e);return{empty:!1,name:n,roman:o,interval:j({step:i,alt:c,dir:1}).name,acc:e,chordType:r,alt:c,step:i,major:o===m,oct:0,dir:1}}(t)):"number"==typeof t?hn(An[t]||""):o(t)?hn(P((n=t).alt)+An[n.step]):e(t)?hn(t.name):pn;var n}const yn=n("RomanNumeral.romanNumeral","RomanNumeral.get",hn);const bn=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;const gn="I II III IV V VI VII",An=gn.split(" "),vn=gn.toLowerCase().split(" ");var jn={names:function(t=!0){return(t?An:vn).slice()},get:hn,romanNumeral:yn};const In=t=>(n,e="")=>n.map((n,o)=>"-"!==n?t[o]+e+n:"");function wn(t,n,e,o){return r=>{const a=t.split(" "),m=a.map(t=>hn(t).interval||""),i=m.map(t=>N(r,t)),c=In(i);return{tonic:r,grades:a,intervals:m,scale:i,chords:c(n.split(" ")),chordsHarmonicFunction:e.split(" "),chordScales:c(o.split(",")," ")}}}const Nn=(t,n)=>{const e=M(t),o=M(n);return e.empty||o.empty?0:o.coord[0]-e.coord[0]},On=wn("I II III IV V VI VII","maj7 m7 m7 maj7 7 m7 m7b5","T SD T SD D T D","major,dorian,phrygian,lydian,mixolydian,minor,locrian"),xn=wn("I II bIII IV V bVI bVII","m7 m7b5 maj7 m7 m7 maj7 7","T SD T SD D SD SD","minor,locrian,major,dorian,phrygian,lydian,mixolydian"),Tn=wn("I II bIII IV V bVI VII","mmaj7 m7b5 +maj7 m7 7 maj7 mo7","T SD T SD D SD D","harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian"),Dn=wn("I II bIII IV V VI VII","m6 m7 +maj7 7 7 m7b5 m7b5","T SD T SD D - -","melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered");var Vn={majorKey:function(t){const n=On(t),e=Nn("C",t),o=In(n.scale);return{...n,type:"major",minorRelative:N(t,"-3m"),alteration:e,keySignature:P(e),secondaryDominants:o("- VI7 VII7 I7 II7 III7 -".split(" ")),secondaryDominantsMinorRelative:o("- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -".split(" ")),substituteDominants:o("- bIII7 IV7 bV7 bVI7 bVII7 -".split(" ")),substituteDominantsMinorRelative:o("- IIIm7 Im7 IIbm7 VIm7 IVm7 -".split(" "))}},majorTonicFromKeySignature:function(t){return"number"==typeof t?an("C",t):"string"==typeof t&&/^b+|#+$/.test(t)?an("C",d(t)):null},minorKey:function(t){const n=Nn("C",t)-3;return{type:"minor",tonic:t,relativeMajor:N(t,"3m"),alteration:n,keySignature:P(n),natural:xn(t),harmonic:Tn(t),melodic:Dn(t)}}};const Sn={...R,name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]},Cn=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]].map((function(t){const[n,e,o,r,a,m,i]=t,c=i?[i]:[],s=Number(e).toString(2);return{empty:!1,intervals:W(s),modeNum:n,chroma:s,normalized:s,name:r,setNum:e,alt:o,triad:a,seventh:m,aliases:c}})),$n={};function qn(t){return"string"==typeof t?$n[t.toLowerCase()]||Sn:t&&t.name?qn(t.name):Sn}Cn.forEach(t=>{$n[t.name]=t,t.aliases.forEach(n=>{$n[n]=t})});const kn=n("Mode.mode","Mode.get",qn);function En(){return Cn.slice()}var _n={get:qn,names:function(){return Cn.map(t=>t.name)},all:En,entries:n("Mode.mode","Mode.all",En),mode:kn};var Fn={fromRomanNumerals:function(t,n){return n.map(hn).map(n=>N(t,j(n))+n.chordType)},toRomanNumerals:function(t,n){return n.map(n=>{const[e,o]=It(n);return hn(j(O(t,e))).name+o})}};function zn(t){const n=F(t.map(Ut));return t.length&&n.length===t.length?n.reduce((t,n)=>{const e=t[t.length-1];return t.concat(E(e,n).slice(1))},[n[0]]):[]}var Rn={numeric:zn,chromatic:function(t,n){return zn(t).map(t=>Ht(t,n))}};const Un={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Bn(t){if("string"!=typeof t)return["",""];const n=t.indexOf(" "),e=M(t.substring(0,n));if(e.empty){const n=M(t);return n.empty?["",t]:[n.name,""]}const o=t.substring(e.name.length+1);return[e.name,o.length?o:""]}function Gn(t){const n=Array.isArray(t)?t:Bn(t),e=M(n[0]).name,o=ft(n[1]);if(o.empty)return Un;const r=o.name,a=e?o.intervals.map(t=>N(e,t)):[],m=e?e+" "+r:r;return{...o,name:m,type:r,tonic:e,notes:a}}var Kn={get:Gn,names:pt,extended:function(t){const n=Z(Gn(t).chroma);return yt().filter(t=>n(t.chroma)).map(t=>t.name)},modeNames:function(t){const n=Gn(t);if(n.empty)return[];const e=n.tonic?n.notes:n.intervals;return X(n.chroma).map((t,n)=>{const o=Gn(t).name;return o?[e[n],o]:["",""]}).filter(t=>t[0])},reduced:function(t){const n=Y(Gn(t).chroma);return yt().filter(t=>n(t.chroma)).map(t=>t.name)},scaleChords:function(t){const n=Y(Gn(t).chroma);return it().filter(t=>n(t.chroma)).map(t=>t.aliases[0])},scaleNotes:function(t){const n=t.map(t=>M(t).pc).filter(t=>t),e=n[0],o=un(n);return _(o.indexOf(e),o)},tokenize:Bn,scale:n("Scale.scale","Scale.get",Gn)};const Ln={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},Hn=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];const Jn=/^(\d?\d(?:\+\d)*)\/(\d)$/,Qn=new Map;function Wn(t){if("string"==typeof t){const[n,e,o]=Jn.exec(t)||[];return Wn([e,o])}const[n,e]=t,o=+e;if("number"==typeof n)return[n,o];const r=n.split("+").map(t=>+t);return 1===r.length?[r[0],o]:[r,o]}var Xn={names:function(){return Hn.slice()},parse:Wn,get:function(t){const n=Qn.get(t);if(n)return n;const e=function([t,n]){const e=Array.isArray(t)?t.reduce((t,n)=>t+n,0):t,o=n;if(0===e||0===o)return Ln;const r=Array.isArray(t)?`${t.join("+")}/${n}`:`${t}/${n}`,a=Array.isArray(t)?t:[];return{empty:!1,name:r,type:4===o||2===o?"simple":8===o&&e%3==0?"compound":"irregular",upper:e,lower:o,additive:a}}(Wn(t));return Qn.set(t,e),e}};var Yn,Zn,te=(function(t,n){!function(t,n,e,o,r,a,m,i,c,s,u,l,P,d,M,p,f,h,y,b){n=n&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n,o=o&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o,r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,a=a&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a,i=i&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i,c=c&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c,s=s&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s,u=u&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u,l=l&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l,P=P&&Object.prototype.hasOwnProperty.call(P,"default")?P.default:P,d=d&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d,M=M&&Object.prototype.hasOwnProperty.call(M,"default")?M.default:M,p=p&&Object.prototype.hasOwnProperty.call(p,"default")?p.default:p,f=f&&Object.prototype.hasOwnProperty.call(f,"default")?f.default:f,h=h&&Object.prototype.hasOwnProperty.call(h,"default")?h.default:h,y=y&&Object.prototype.hasOwnProperty.call(y,"default")?y.default:y,b=b&&Object.prototype.hasOwnProperty.call(b,"default")?b.default:b;var g=m,A=d,v=r,j=y;Object.keys(m).forEach((function(n){"default"!==n&&Object.defineProperty(t,n,{enumerable:!0,get:function(){return m[n]}})})),t.AbcNotation=n,t.Array=e,t.Chord=o,t.ChordType=r,t.Collection=a,t.Core=m,t.DurationValue=i,t.Interval=c,t.Key=s,t.Midi=u,t.Mode=l,t.Note=P,t.Pcset=d,t.Progression=M,t.Range=p,t.RomanNumeral=f,t.Scale=h,t.ScaleType=y,t.TimeSignature=b,t.ChordDictionary=v,t.PcSet=A,t.ScaleDictionary=j,t.Tonal=g,Object.defineProperty(t,"__esModule",{value:!0})}(n,$,k,Ot,ut,z,x,St,Ft,Vn,Jt,_n,Mn,nt,Fn,Rn,jn,Kn,At,Xn)}(Yn={exports:{}},Yn.exports),Yn.exports);return(Zn=te)&&Zn.__esModule&&Object.prototype.hasOwnProperty.call(Zn,"default")?Zn.default:Zn}(); //# sourceMappingURL=tonal.min.js.map diff --git a/packages/tonal/browser/tonal.min.js.map b/packages/tonal/browser/tonal.min.js.map index 90f18908..fe1243e6 100644 --- a/packages/tonal/browser/tonal.min.js.map +++ b/packages/tonal/browser/tonal.min.js.map @@ -1 +1 @@ -{"version":3,"file":"tonal.min.js","sources":["../../core/dist/index.es.js","../../abc-notation/dist/index.es.js","../../array/dist/index.es.js","../../collection/dist/index.es.js","../../pcset/dist/index.es.js","../../chord-type/dist/index.es.js","../../chord-detect/dist/index.es.js","../../scale-type/dist/index.es.js","../../chord/dist/index.es.js","../../duration-value/dist/index.es.js","../../interval/dist/index.es.js","../../midi/dist/index.es.js","../../note/dist/index.es.js","../../roman-numeral/dist/index.es.js","../../key/dist/index.es.js","../../mode/dist/index.es.js","../../progression/dist/index.es.js","../../range/dist/index.es.js","../../scale/dist/index.es.js","../../time-signature/dist/index.es.js","../dist/index.js"],"sourcesContent":["/**\r\n * Fill a string with a repeated character\r\n *\r\n * @param character\r\n * @param repetition\r\n */\r\nconst fillStr = (s, n) => Array(Math.abs(n) + 1).join(s);\r\nfunction deprecate(original, alternative, fn) {\r\n return function (...args) {\r\n // tslint:disable-next-line\r\n console.warn(`${original} is deprecated. Use ${alternative}.`);\r\n return fn.apply(this, args);\r\n };\r\n}\n\nfunction isNamed(src) {\r\n return src !== null && typeof src === \"object\" && typeof src.name === \"string\"\r\n ? true\r\n : false;\r\n}\n\nfunction isPitch(pitch) {\r\n return pitch !== null &&\r\n typeof pitch === \"object\" &&\r\n typeof pitch.step === \"number\" &&\r\n typeof pitch.alt === \"number\"\r\n ? true\r\n : false;\r\n}\r\n// The number of fifths of [C, D, E, F, G, A, B]\r\nconst FIFTHS = [0, 2, 4, -1, 1, 3, 5];\r\n// The number of octaves it span each step\r\nconst STEPS_TO_OCTS = FIFTHS.map((fifths) => Math.floor((fifths * 7) / 12));\r\nfunction encode(pitch) {\r\n const { step, alt, oct, dir = 1 } = pitch;\r\n const f = FIFTHS[step] + 7 * alt;\r\n if (oct === undefined) {\r\n return [dir * f];\r\n }\r\n const o = oct - STEPS_TO_OCTS[step] - 4 * alt;\r\n return [dir * f, dir * o];\r\n}\r\n// We need to get the steps from fifths\r\n// Fifths for CDEFGAB are [ 0, 2, 4, -1, 1, 3, 5 ]\r\n// We add 1 to fifths to avoid negative numbers, so:\r\n// for [\"F\", \"C\", \"G\", \"D\", \"A\", \"E\", \"B\"] we have:\r\nconst FIFTHS_TO_STEPS = [3, 0, 4, 1, 5, 2, 6];\r\nfunction decode(coord) {\r\n const [f, o, dir] = coord;\r\n const step = FIFTHS_TO_STEPS[unaltered(f)];\r\n const alt = Math.floor((f + 1) / 7);\r\n if (o === undefined) {\r\n return { step, alt, dir };\r\n }\r\n const oct = o + 4 * alt + STEPS_TO_OCTS[step];\r\n return { step, alt, oct, dir };\r\n}\r\n// Return the number of fifths as if it were unaltered\r\nfunction unaltered(f) {\r\n const i = (f + 1) % 7;\r\n return i < 0 ? 7 + i : i;\r\n}\n\nconst NoNote = { empty: true, name: \"\", pc: \"\", acc: \"\" };\r\nconst cache = new Map();\r\nconst stepToLetter = (step) => \"CDEFGAB\".charAt(step);\r\nconst altToAcc = (alt) => alt < 0 ? fillStr(\"b\", -alt) : fillStr(\"#\", alt);\r\nconst accToAlt = (acc) => acc[0] === \"b\" ? -acc.length : acc.length;\r\n/**\r\n * Given a note literal (a note name or a note object), returns the Note object\r\n * @example\r\n * note('Bb4') // => { name: \"Bb4\", midi: 70, chroma: 10, ... }\r\n */\r\nfunction note(src) {\r\n const cached = cache.get(src);\r\n if (cached) {\r\n return cached;\r\n }\r\n const value = typeof src === \"string\"\r\n ? parse(src)\r\n : isPitch(src)\r\n ? note(pitchName(src))\r\n : isNamed(src)\r\n ? note(src.name)\r\n : NoNote;\r\n cache.set(src, value);\r\n return value;\r\n}\r\nconst REGEX = /^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)$/;\r\n/**\r\n * @private\r\n */\r\nfunction tokenizeNote(str) {\r\n const m = REGEX.exec(str);\r\n return [m[1].toUpperCase(), m[2].replace(/x/g, \"##\"), m[3], m[4]];\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction coordToNote(noteCoord) {\r\n return note(decode(noteCoord));\r\n}\r\nconst SEMI = [0, 2, 4, 5, 7, 9, 11];\r\nfunction parse(noteName) {\r\n const tokens = tokenizeNote(noteName);\r\n if (tokens[0] === \"\" || tokens[3] !== \"\") {\r\n return NoNote;\r\n }\r\n const letter = tokens[0];\r\n const acc = tokens[1];\r\n const octStr = tokens[2];\r\n const step = (letter.charCodeAt(0) + 3) % 7;\r\n const alt = accToAlt(acc);\r\n const oct = octStr.length ? +octStr : undefined;\r\n const coord = encode({ step, alt, oct });\r\n const name = letter + acc + octStr;\r\n const pc = letter + acc;\r\n const chroma = (SEMI[step] + alt + 120) % 12;\r\n const o = oct === undefined ? -100 : oct;\r\n const height = SEMI[step] + alt + 12 * (o + 1);\r\n const midi = height >= 0 && height <= 127 ? height : null;\r\n const freq = oct === undefined ? null : Math.pow(2, (height - 69) / 12) * 440;\r\n return {\r\n empty: false,\r\n acc,\r\n alt,\r\n chroma,\r\n coord,\r\n freq,\r\n height,\r\n letter,\r\n midi,\r\n name,\r\n oct,\r\n pc,\r\n step\r\n };\r\n}\r\nfunction pitchName(props) {\r\n const { step, alt, oct } = props;\r\n const letter = stepToLetter(step);\r\n if (!letter) {\r\n return \"\";\r\n }\r\n const pc = letter + altToAcc(alt);\r\n return oct || oct === 0 ? pc + oct : pc;\r\n}\n\nconst NoInterval = { empty: true, name: \"\", acc: \"\" };\r\n// shorthand tonal notation (with quality after number)\r\nconst INTERVAL_TONAL_REGEX = \"([-+]?\\\\d+)(d{1,4}|m|M|P|A{1,4})\";\r\n// standard shorthand notation (with quality before number)\r\nconst INTERVAL_SHORTHAND_REGEX = \"(AA|A|P|M|m|d|dd)([-+]?\\\\d+)\";\r\nconst REGEX$1 = new RegExp(\"^\" + INTERVAL_TONAL_REGEX + \"|\" + INTERVAL_SHORTHAND_REGEX + \"$\");\r\n/**\r\n * @private\r\n */\r\nfunction tokenizeInterval(str) {\r\n const m = REGEX$1.exec(`${str}`);\r\n if (m === null) {\r\n return [\"\", \"\"];\r\n }\r\n return m[1] ? [m[1], m[2]] : [m[4], m[3]];\r\n}\r\nconst cache$1 = {};\r\n/**\r\n * Get interval properties. It returns an object with:\r\n *\r\n * - name: the interval name\r\n * - num: the interval number\r\n * - type: 'perfectable' or 'majorable'\r\n * - q: the interval quality (d, m, M, A)\r\n * - dir: interval direction (1 ascending, -1 descending)\r\n * - simple: the simplified number\r\n * - semitones: the size in semitones\r\n * - chroma: the interval chroma\r\n *\r\n * @param {string} interval - the interval name\r\n * @return {Object} the interval properties\r\n *\r\n * @example\r\n * import { interval } from '@tonaljs/core'\r\n * interval('P5').semitones // => 7\r\n * interval('m3').type // => 'majorable'\r\n */\r\nfunction interval(src) {\r\n return typeof src === \"string\"\r\n ? cache$1[src] || (cache$1[src] = parse$1(src))\r\n : isPitch(src)\r\n ? interval(pitchName$1(src))\r\n : isNamed(src)\r\n ? interval(src.name)\r\n : NoInterval;\r\n}\r\nconst SIZES = [0, 2, 4, 5, 7, 9, 11];\r\nconst TYPES = \"PMMPPMM\";\r\nfunction parse$1(str) {\r\n const tokens = tokenizeInterval(str);\r\n if (tokens[0] === \"\") {\r\n return NoInterval;\r\n }\r\n const num = +tokens[0];\r\n const q = tokens[1];\r\n const step = (Math.abs(num) - 1) % 7;\r\n const t = TYPES[step];\r\n if (t === \"M\" && q === \"P\") {\r\n return NoInterval;\r\n }\r\n const type = t === \"M\" ? \"majorable\" : \"perfectable\";\r\n const name = \"\" + num + q;\r\n const dir = num < 0 ? -1 : 1;\r\n const simple = num === 8 || num === -8 ? num : dir * (step + 1);\r\n const alt = qToAlt(type, q);\r\n const oct = Math.floor((Math.abs(num) - 1) / 7);\r\n const semitones = dir * (SIZES[step] + alt + 12 * oct);\r\n const chroma = (((dir * (SIZES[step] + alt)) % 12) + 12) % 12;\r\n const coord = encode({ step, alt, oct, dir });\r\n return {\r\n empty: false,\r\n name,\r\n num,\r\n q,\r\n step,\r\n alt,\r\n dir,\r\n type,\r\n simple,\r\n semitones,\r\n chroma,\r\n coord,\r\n oct\r\n };\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction coordToInterval(coord) {\r\n const [f, o = 0] = coord;\r\n const isDescending = f * 7 + o * 12 < 0;\r\n const ivl = isDescending ? [-f, -o, -1] : [f, o, 1];\r\n return interval(decode(ivl));\r\n}\r\nfunction qToAlt(type, q) {\r\n return (q === \"M\" && type === \"majorable\") ||\r\n (q === \"P\" && type === \"perfectable\")\r\n ? 0\r\n : q === \"m\" && type === \"majorable\"\r\n ? -1\r\n : /^A+$/.test(q)\r\n ? q.length\r\n : /^d+$/.test(q)\r\n ? -1 * (type === \"perfectable\" ? q.length : q.length + 1)\r\n : 0;\r\n}\r\n// return the interval name of a pitch\r\nfunction pitchName$1(props) {\r\n const { step, alt, oct = 0, dir } = props;\r\n if (!dir) {\r\n return \"\";\r\n }\r\n const num = step + 1 + 7 * oct;\r\n const d = dir < 0 ? \"-\" : \"\";\r\n const type = TYPES[step] === \"M\" ? \"majorable\" : \"perfectable\";\r\n const name = d + num + altToQ(type, alt);\r\n return name;\r\n}\r\nfunction altToQ(type, alt) {\r\n if (alt === 0) {\r\n return type === \"majorable\" ? \"M\" : \"P\";\r\n }\r\n else if (alt === -1 && type === \"majorable\") {\r\n return \"m\";\r\n }\r\n else if (alt > 0) {\r\n return fillStr(\"A\", alt);\r\n }\r\n else {\r\n return fillStr(\"d\", type === \"perfectable\" ? alt : alt + 1);\r\n }\r\n}\n\n/**\r\n * Transpose a note by an interval.\r\n *\r\n * @param {string} note - the note or note name\r\n * @param {string} interval - the interval or interval name\r\n * @return {string} the transposed note name or empty string if not valid notes\r\n * @example\r\n * import { tranpose } from \"@tonaljs/core\"\r\n * transpose(\"d3\", \"3M\") // => \"F#3\"\r\n * transpose(\"D\", \"3M\") // => \"F#\"\r\n * [\"C\", \"D\", \"E\", \"F\", \"G\"].map(pc => transpose(pc, \"M3)) // => [\"E\", \"F#\", \"G#\", \"A\", \"B\"]\r\n */\r\nfunction transpose(noteName, intervalName) {\r\n const note$1 = note(noteName);\r\n const interval$1 = interval(intervalName);\r\n if (note$1.empty || interval$1.empty) {\r\n return \"\";\r\n }\r\n const noteCoord = note$1.coord;\r\n const intervalCoord = interval$1.coord;\r\n const tr = noteCoord.length === 1\r\n ? [noteCoord[0] + intervalCoord[0]]\r\n : [noteCoord[0] + intervalCoord[0], noteCoord[1] + intervalCoord[1]];\r\n return coordToNote(tr).name;\r\n}\r\n/**\r\n * Find the interval distance between two notes or coord classes.\r\n *\r\n * To find distance between coord classes, both notes must be coord classes and\r\n * the interval is always ascending\r\n *\r\n * @param {Note|string} from - the note or note name to calculate distance from\r\n * @param {Note|string} to - the note or note name to calculate distance to\r\n * @return {string} the interval name or empty string if not valid notes\r\n *\r\n */\r\nfunction distance(fromNote, toNote) {\r\n const from = note(fromNote);\r\n const to = note(toNote);\r\n if (from.empty || to.empty) {\r\n return \"\";\r\n }\r\n const fcoord = from.coord;\r\n const tcoord = to.coord;\r\n const fifths = tcoord[0] - fcoord[0];\r\n const octs = fcoord.length === 2 && tcoord.length === 2\r\n ? tcoord[1] - fcoord[1]\r\n : -Math.floor((fifths * 7) / 12);\r\n return coordToInterval([fifths, octs]).name;\r\n}\n\nexport { accToAlt, altToAcc, coordToInterval, coordToNote, decode, deprecate, distance, encode, fillStr, interval, isNamed, isPitch, note, stepToLetter, tokenizeInterval, tokenizeNote, transpose };\n//# sourceMappingURL=index.es.js.map\n","import { note, transpose as transpose$1, distance as distance$1 } from '@tonaljs/core';\n\nconst fillStr = (character, times) => Array(times + 1).join(character);\r\nconst REGEX = /^(_{1,}|=|\\^{1,}|)([abcdefgABCDEFG])([,']*)$/;\r\nfunction tokenize(str) {\r\n const m = REGEX.exec(str);\r\n if (!m) {\r\n return [\"\", \"\", \"\"];\r\n }\r\n return [m[1], m[2], m[3]];\r\n}\r\n/**\r\n * Convert a (string) note in ABC notation into a (string) note in scientific notation\r\n *\r\n * @example\r\n * abcToScientificNotation(\"c\") // => \"C5\"\r\n */\r\nfunction abcToScientificNotation(str) {\r\n const [acc, letter, oct] = tokenize(str);\r\n if (letter === \"\") {\r\n return \"\";\r\n }\r\n let o = 4;\r\n for (let i = 0; i < oct.length; i++) {\r\n o += oct.charAt(i) === \",\" ? -1 : 1;\r\n }\r\n const a = acc[0] === \"_\"\r\n ? acc.replace(/_/g, \"b\")\r\n : acc[0] === \"^\"\r\n ? acc.replace(/\\^/g, \"#\")\r\n : \"\";\r\n return letter.charCodeAt(0) > 96\r\n ? letter.toUpperCase() + a + (o + 1)\r\n : letter + a + o;\r\n}\r\n/**\r\n * Convert a (string) note in scientific notation into a (string) note in ABC notation\r\n *\r\n * @example\r\n * scientificToAbcNotation(\"C#4\") // => \"^C\"\r\n */\r\nfunction scientificToAbcNotation(str) {\r\n const n = note(str);\r\n if (n.empty || !n.oct) {\r\n return \"\";\r\n }\r\n const { letter, acc, oct } = n;\r\n const a = acc[0] === \"b\" ? acc.replace(/b/g, \"_\") : acc.replace(/#/g, \"^\");\r\n const l = oct > 4 ? letter.toLowerCase() : letter;\r\n const o = oct === 5 ? \"\" : oct > 4 ? fillStr(\"'\", oct - 5) : fillStr(\",\", 4 - oct);\r\n return a + l + o;\r\n}\r\nfunction transpose(note, interval) {\r\n return scientificToAbcNotation(transpose$1(abcToScientificNotation(note), interval));\r\n}\r\nfunction distance(from, to) {\r\n return distance$1(abcToScientificNotation(from), abcToScientificNotation(to));\r\n}\r\nvar index = {\r\n abcToScientificNotation,\r\n scientificToAbcNotation,\r\n tokenize,\r\n transpose,\r\n distance\r\n};\n\nexport default index;\nexport { abcToScientificNotation, distance, scientificToAbcNotation, tokenize, transpose };\n//# sourceMappingURL=index.es.js.map\n","import { note } from '@tonaljs/core';\n\n// ascending range\r\nfunction ascR(b, n) {\r\n const a = [];\r\n // tslint:disable-next-line:curly\r\n for (; n--; a[n] = n + b)\r\n ;\r\n return a;\r\n}\r\n// descending range\r\nfunction descR(b, n) {\r\n const a = [];\r\n // tslint:disable-next-line:curly\r\n for (; n--; a[n] = b - n)\r\n ;\r\n return a;\r\n}\r\n/**\r\n * Creates a numeric range\r\n *\r\n * @param {number} from\r\n * @param {number} to\r\n * @return {Array}\r\n *\r\n * @example\r\n * range(-2, 2) // => [-2, -1, 0, 1, 2]\r\n * range(2, -2) // => [2, 1, 0, -1, -2]\r\n */\r\nfunction range(from, to) {\r\n return from < to ? ascR(from, to - from + 1) : descR(from, from - to + 1);\r\n}\r\n/**\r\n * Rotates a list a number of times. It\"s completly agnostic about the\r\n * contents of the list.\r\n *\r\n * @param {Integer} times - the number of rotations\r\n * @param {Array} array\r\n * @return {Array} the rotated array\r\n *\r\n * @example\r\n * rotate(1, [1, 2, 3]) // => [2, 3, 1]\r\n */\r\nfunction rotate(times, arr) {\r\n const len = arr.length;\r\n const n = ((times % len) + len) % len;\r\n return arr.slice(n, len).concat(arr.slice(0, n));\r\n}\r\n/**\r\n * Return a copy of the array with the null values removed\r\n * @function\r\n * @param {Array} array\r\n * @return {Array}\r\n *\r\n * @example\r\n * compact([\"a\", \"b\", null, \"c\"]) // => [\"a\", \"b\", \"c\"]\r\n */\r\nfunction compact(arr) {\r\n return arr.filter(n => n === 0 || n);\r\n}\r\n/**\r\n * Sort an array of notes in ascending order. Pitch classes are listed\r\n * before notes. Any string that is not a note is removed.\r\n *\r\n * @param {string[]} notes\r\n * @return {string[]} sorted array of notes\r\n *\r\n * @example\r\n * sortedNoteNames(['c2', 'c5', 'c1', 'c0', 'c6', 'c'])\r\n * // => ['C', 'C0', 'C1', 'C2', 'C5', 'C6']\r\n * sortedNoteNames(['c', 'F', 'G', 'a', 'b', 'h', 'J'])\r\n * // => ['C', 'F', 'G', 'A', 'B']\r\n */\r\nfunction sortedNoteNames(notes) {\r\n const valid = notes.map(n => note(n)).filter(n => !n.empty);\r\n return valid.sort((a, b) => a.height - b.height).map(n => n.name);\r\n}\r\n/**\r\n * Get sorted notes with duplicates removed. Pitch classes are listed\r\n * before notes.\r\n *\r\n * @function\r\n * @param {string[]} array\r\n * @return {string[]} unique sorted notes\r\n *\r\n * @example\r\n * Array.sortedUniqNoteNames(['a', 'b', 'c2', '1p', 'p2', 'c2', 'b', 'c', 'c3' ])\r\n * // => [ 'C', 'A', 'B', 'C2', 'C3' ]\r\n */\r\nfunction sortedUniqNoteNames(arr) {\r\n return sortedNoteNames(arr).filter((n, i, a) => i === 0 || n !== a[i - 1]);\r\n}\r\n/**\r\n * Randomizes the order of the specified array in-place, using the Fisher–Yates shuffle.\r\n *\r\n * @function\r\n * @param {Array} array\r\n * @return {Array} the array shuffled\r\n *\r\n * @example\r\n * shuffle([\"C\", \"D\", \"E\", \"F\"]) // => [...]\r\n */\r\nfunction shuffle(arr, rnd = Math.random) {\r\n let i;\r\n let t;\r\n let m = arr.length;\r\n while (m) {\r\n i = Math.floor(rnd() * m--);\r\n t = arr[m];\r\n arr[m] = arr[i];\r\n arr[i] = t;\r\n }\r\n return arr;\r\n}\r\n/**\r\n * Get all permutations of an array\r\n *\r\n * @param {Array} array - the array\r\n * @return {Array} an array with all the permutations\r\n * @example\r\n * permutations([\"a\", \"b\", \"c\"])) // =>\r\n * [\r\n * [\"a\", \"b\", \"c\"],\r\n * [\"b\", \"a\", \"c\"],\r\n * [\"b\", \"c\", \"a\"],\r\n * [\"a\", \"c\", \"b\"],\r\n * [\"c\", \"a\", \"b\"],\r\n * [\"c\", \"b\", \"a\"]\r\n * ]\r\n */\r\nfunction permutations(arr) {\r\n if (arr.length === 0) {\r\n return [[]];\r\n }\r\n return permutations(arr.slice(1)).reduce((acc, perm) => {\r\n return acc.concat(arr.map((e, pos) => {\r\n const newPerm = perm.slice();\r\n newPerm.splice(pos, 0, arr[0]);\r\n return newPerm;\r\n }));\r\n }, []);\r\n}\n\nexport { compact, permutations, range, rotate, shuffle, sortedNoteNames, sortedUniqNoteNames };\n//# sourceMappingURL=index.es.js.map\n","// ascending range\r\nfunction ascR(b, n) {\r\n const a = [];\r\n // tslint:disable-next-line:curly\r\n for (; n--; a[n] = n + b)\r\n ;\r\n return a;\r\n}\r\n// descending range\r\nfunction descR(b, n) {\r\n const a = [];\r\n // tslint:disable-next-line:curly\r\n for (; n--; a[n] = b - n)\r\n ;\r\n return a;\r\n}\r\n/**\r\n * Creates a numeric range\r\n *\r\n * @param {number} from\r\n * @param {number} to\r\n * @return {Array}\r\n *\r\n * @example\r\n * range(-2, 2) // => [-2, -1, 0, 1, 2]\r\n * range(2, -2) // => [2, 1, 0, -1, -2]\r\n */\r\nfunction range(from, to) {\r\n return from < to ? ascR(from, to - from + 1) : descR(from, from - to + 1);\r\n}\r\n/**\r\n * Rotates a list a number of times. It\"s completly agnostic about the\r\n * contents of the list.\r\n *\r\n * @param {Integer} times - the number of rotations\r\n * @param {Array} collection\r\n * @return {Array} the rotated collection\r\n *\r\n * @example\r\n * rotate(1, [1, 2, 3]) // => [2, 3, 1]\r\n */\r\nfunction rotate(times, arr) {\r\n const len = arr.length;\r\n const n = ((times % len) + len) % len;\r\n return arr.slice(n, len).concat(arr.slice(0, n));\r\n}\r\n/**\r\n * Return a copy of the collection with the null values removed\r\n * @function\r\n * @param {Array} collection\r\n * @return {Array}\r\n *\r\n * @example\r\n * compact([\"a\", \"b\", null, \"c\"]) // => [\"a\", \"b\", \"c\"]\r\n */\r\nfunction compact(arr) {\r\n return arr.filter(n => n === 0 || n);\r\n}\r\n/**\r\n * Randomizes the order of the specified collection in-place, using the Fisher–Yates shuffle.\r\n *\r\n * @function\r\n * @param {Array} collection\r\n * @return {Array} the collection shuffled\r\n *\r\n * @example\r\n * shuffle([\"C\", \"D\", \"E\", \"F\"]) // => [...]\r\n */\r\nfunction shuffle(arr, rnd = Math.random) {\r\n let i;\r\n let t;\r\n let m = arr.length;\r\n while (m) {\r\n i = Math.floor(rnd() * m--);\r\n t = arr[m];\r\n arr[m] = arr[i];\r\n arr[i] = t;\r\n }\r\n return arr;\r\n}\r\n/**\r\n * Get all permutations of an collection\r\n *\r\n * @param {Array} collection - the collection\r\n * @return {Array} an collection with all the permutations\r\n * @example\r\n * permutations([\"a\", \"b\", \"c\"])) // =>\r\n * [\r\n * [\"a\", \"b\", \"c\"],\r\n * [\"b\", \"a\", \"c\"],\r\n * [\"b\", \"c\", \"a\"],\r\n * [\"a\", \"c\", \"b\"],\r\n * [\"c\", \"a\", \"b\"],\r\n * [\"c\", \"b\", \"a\"]\r\n * ]\r\n */\r\nfunction permutations(arr) {\r\n if (arr.length === 0) {\r\n return [[]];\r\n }\r\n return permutations(arr.slice(1)).reduce((acc, perm) => {\r\n return acc.concat(arr.map((e, pos) => {\r\n const newPerm = perm.slice();\r\n newPerm.splice(pos, 0, arr[0]);\r\n return newPerm;\r\n }));\r\n }, []);\r\n}\r\nvar index = {\r\n compact,\r\n permutations,\r\n range,\r\n rotate,\r\n shuffle\r\n};\n\nexport default index;\nexport { compact, permutations, range, rotate, shuffle };\n//# sourceMappingURL=index.es.js.map\n","import { range, compact, rotate } from '@tonaljs/collection';\nimport { deprecate, note, interval } from '@tonaljs/core';\n\nconst EmptyPcset = {\r\n empty: true,\r\n name: \"\",\r\n setNum: 0,\r\n chroma: \"000000000000\",\r\n normalized: \"000000000000\",\r\n intervals: []\r\n};\r\n// UTILITIES\r\nconst setNumToChroma = (num) => Number(num).toString(2);\r\nconst chromaToNumber = (chroma) => parseInt(chroma, 2);\r\nconst REGEX = /^[01]{12}$/;\r\nfunction isChroma(set) {\r\n return REGEX.test(set);\r\n}\r\nconst isPcsetNum = (set) => typeof set === \"number\" && set >= 0 && set <= 4095;\r\nconst isPcset = (set) => set && isChroma(set.chroma);\r\nconst cache = { [EmptyPcset.chroma]: EmptyPcset };\r\n/**\r\n * Get the pitch class set of a collection of notes or set number or chroma\r\n */\r\nfunction get(src) {\r\n const chroma = isChroma(src)\r\n ? src\r\n : isPcsetNum(src)\r\n ? setNumToChroma(src)\r\n : Array.isArray(src)\r\n ? listToChroma(src)\r\n : isPcset(src)\r\n ? src.chroma\r\n : EmptyPcset.chroma;\r\n return (cache[chroma] = cache[chroma] || chromaToPcset(chroma));\r\n}\r\n/**\r\n * Use Pcset.properties\r\n * @function\r\n * @deprecated\r\n */\r\nconst pcset = deprecate(\"Pcset.pcset\", \"Pcset.get\", get);\r\n/**\r\n * Get pitch class set chroma\r\n * @function\r\n * @example\r\n * Pcset.chroma([\"c\", \"d\", \"e\"]); //=> \"101010000000\"\r\n */\r\nconst chroma = (set) => get(set).chroma;\r\n/**\r\n * Get intervals (from C) of a set\r\n * @function\r\n * @example\r\n * Pcset.intervals([\"c\", \"d\", \"e\"]); //=>\r\n */\r\nconst intervals = (set) => get(set).intervals;\r\n/**\r\n * Get pitch class set number\r\n * @function\r\n * @example\r\n * Pcset.num([\"c\", \"d\", \"e\"]); //=> 2192\r\n */\r\nconst num = (set) => get(set).setNum;\r\nconst IVLS = [\r\n \"1P\",\r\n \"2m\",\r\n \"2M\",\r\n \"3m\",\r\n \"3M\",\r\n \"4P\",\r\n \"5d\",\r\n \"5P\",\r\n \"6m\",\r\n \"6M\",\r\n \"7m\",\r\n \"7M\"\r\n];\r\n/**\r\n * @private\r\n * Get the intervals of a pcset *starting from C*\r\n * @param {Set} set - the pitch class set\r\n * @return {IntervalName[]} an array of interval names or an empty array\r\n * if not a valid pitch class set\r\n */\r\nfunction chromaToIntervals(chroma) {\r\n const intervals = [];\r\n for (let i = 0; i < 12; i++) {\r\n // tslint:disable-next-line:curly\r\n if (chroma.charAt(i) === \"1\")\r\n intervals.push(IVLS[i]);\r\n }\r\n return intervals;\r\n}\r\n/**\r\n * Get a list of all possible pitch class sets (all possible chromas) *having\r\n * C as root*. There are 2048 different chromas. If you want them with another\r\n * note you have to transpose it\r\n *\r\n * @see http://allthescales.org/\r\n * @return {Array} an array of possible chromas from '10000000000' to '11111111111'\r\n */\r\nfunction chromas() {\r\n return range(2048, 4095).map(setNumToChroma);\r\n}\r\n/**\r\n * Given a a list of notes or a pcset chroma, produce the rotations\r\n * of the chroma discarding the ones that starts with \"0\"\r\n *\r\n * This is used, for example, to get all the modes of a scale.\r\n *\r\n * @param {Array|string} set - the list of notes or pitchChr of the set\r\n * @param {boolean} normalize - (Optional, true by default) remove all\r\n * the rotations that starts with \"0\"\r\n * @return {Array} an array with all the modes of the chroma\r\n *\r\n * @example\r\n * Pcset.modes([\"C\", \"D\", \"E\"]).map(Pcset.intervals)\r\n */\r\nfunction modes(set, normalize = true) {\r\n const pcs = get(set);\r\n const binary = pcs.chroma.split(\"\");\r\n return compact(binary.map((_, i) => {\r\n const r = rotate(i, binary);\r\n return normalize && r[0] === \"0\" ? null : r.join(\"\");\r\n }));\r\n}\r\n/**\r\n * Test if two pitch class sets are numentical\r\n *\r\n * @param {Array|string} set1 - one of the pitch class sets\r\n * @param {Array|string} set2 - the other pitch class set\r\n * @return {boolean} true if they are equal\r\n * @example\r\n * Pcset.isEqual([\"c2\", \"d3\"], [\"c5\", \"d2\"]) // => true\r\n */\r\nfunction isEqual(s1, s2) {\r\n return get(s1).setNum === get(s2).setNum;\r\n}\r\n/**\r\n * Create a function that test if a collection of notes is a\r\n * subset of a given set\r\n *\r\n * The function is curryfied.\r\n *\r\n * @param {PcsetChroma|NoteName[]} set - the superset to test against (chroma or\r\n * list of notes)\r\n * @return{function(PcsetChroma|NoteNames[]): boolean} a function accepting a set\r\n * to test against (chroma or list of notes)\r\n * @example\r\n * const inCMajor = Pcset.isSubsetOf([\"C\", \"E\", \"G\"])\r\n * inCMajor([\"e6\", \"c4\"]) // => true\r\n * inCMajor([\"e6\", \"c4\", \"d3\"]) // => false\r\n */\r\nfunction isSubsetOf(set) {\r\n const s = get(set).setNum;\r\n return (notes) => {\r\n const o = get(notes).setNum;\r\n // tslint:disable-next-line: no-bitwise\r\n return s && s !== o && (o & s) === o;\r\n };\r\n}\r\n/**\r\n * Create a function that test if a collection of notes is a\r\n * superset of a given set (it contains all notes and at least one more)\r\n *\r\n * @param {Set} set - an array of notes or a chroma set string to test against\r\n * @return {(subset: Set): boolean} a function that given a set\r\n * returns true if is a subset of the first one\r\n * @example\r\n * const extendsCMajor = Pcset.isSupersetOf([\"C\", \"E\", \"G\"])\r\n * extendsCMajor([\"e6\", \"a\", \"c4\", \"g2\"]) // => true\r\n * extendsCMajor([\"c6\", \"e4\", \"g3\"]) // => false\r\n */\r\nfunction isSupersetOf(set) {\r\n const s = get(set).setNum;\r\n return (notes) => {\r\n const o = get(notes).setNum;\r\n // tslint:disable-next-line: no-bitwise\r\n return s && s !== o && (o | s) === o;\r\n };\r\n}\r\n/**\r\n * Test if a given pitch class set includes a note\r\n *\r\n * @param {Array} set - the base set to test against\r\n * @param {string} note - the note to test\r\n * @return {boolean} true if the note is included in the pcset\r\n *\r\n * Can be partially applied\r\n *\r\n * @example\r\n * const isNoteInCMajor = isNoteIncludedIn(['C', 'E', 'G'])\r\n * isNoteInCMajor('C4') // => true\r\n * isNoteInCMajor('C#4') // => false\r\n */\r\nfunction isNoteIncludedIn(set) {\r\n const s = get(set);\r\n return (noteName) => {\r\n const n = note(noteName);\r\n return s && !n.empty && s.chroma.charAt(n.chroma) === \"1\";\r\n };\r\n}\r\n/** @deprecated use: isNoteIncludedIn */\r\nconst includes = isNoteIncludedIn;\r\n/**\r\n * Filter a list with a pitch class set\r\n *\r\n * @param {Array|string} set - the pitch class set notes\r\n * @param {Array|string} notes - the note list to be filtered\r\n * @return {Array} the filtered notes\r\n *\r\n * @example\r\n * Pcset.filter([\"C\", \"D\", \"E\"], [\"c2\", \"c#2\", \"d2\", \"c3\", \"c#3\", \"d3\"]) // => [ \"c2\", \"d2\", \"c3\", \"d3\" ])\r\n * Pcset.filter([\"C2\"], [\"c2\", \"c#2\", \"d2\", \"c3\", \"c#3\", \"d3\"]) // => [ \"c2\", \"c3\" ])\r\n */\r\nfunction filter(set) {\r\n const isIncluded = isNoteIncludedIn(set);\r\n return (notes) => {\r\n return notes.filter(isIncluded);\r\n };\r\n}\r\nvar index = {\r\n get,\r\n chroma,\r\n num,\r\n intervals,\r\n chromas,\r\n isSupersetOf,\r\n isSubsetOf,\r\n isNoteIncludedIn,\r\n isEqual,\r\n filter,\r\n modes,\r\n // deprecated\r\n pcset\r\n};\r\n//// PRIVATE ////\r\nfunction chromaRotations(chroma) {\r\n const binary = chroma.split(\"\");\r\n return binary.map((_, i) => rotate(i, binary).join(\"\"));\r\n}\r\nfunction chromaToPcset(chroma) {\r\n const setNum = chromaToNumber(chroma);\r\n const normalizedNum = chromaRotations(chroma)\r\n .map(chromaToNumber)\r\n .filter(n => n >= 2048)\r\n .sort()[0];\r\n const normalized = setNumToChroma(normalizedNum);\r\n const intervals = chromaToIntervals(chroma);\r\n return {\r\n empty: false,\r\n name: \"\",\r\n setNum,\r\n chroma,\r\n normalized,\r\n intervals\r\n };\r\n}\r\nfunction listToChroma(set) {\r\n if (set.length === 0) {\r\n return EmptyPcset.chroma;\r\n }\r\n let pitch;\r\n const binary = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n // tslint:disable-next-line:prefer-for-of\r\n for (let i = 0; i < set.length; i++) {\r\n pitch = note(set[i]);\r\n // tslint:disable-next-line: curly\r\n if (pitch.empty)\r\n pitch = interval(set[i]);\r\n // tslint:disable-next-line: curly\r\n if (!pitch.empty)\r\n binary[pitch.chroma] = 1;\r\n }\r\n return binary.join(\"\");\r\n}\n\nexport default index;\nexport { EmptyPcset, chromaToIntervals, chromas, filter, get, includes, isEqual, isNoteIncludedIn, isSubsetOf, isSupersetOf, modes, pcset };\n//# sourceMappingURL=index.es.js.map\n","import { deprecate } from '@tonaljs/core';\nimport { get as get$1, EmptyPcset } from '@tonaljs/pcset';\n\n/**\r\n * @private\r\n * Chord List\r\n * Source: https://en.wikibooks.org/wiki/Music_Theory/Complete_List_of_Chord_Patterns\r\n * Format: [\"intervals\", \"full name\", \"abrv1 abrv2\"]\r\n */\r\nconst CHORDS = [\r\n // ==Major==\r\n [\"1P 3M 5P\", \"major\", \"M \"],\r\n [\"1P 3M 5P 7M\", \"major seventh\", \"maj7 Δ ma7 M7 Maj7\"],\r\n [\"1P 3M 5P 7M 9M\", \"major ninth\", \"maj9 Δ9\"],\r\n [\"1P 3M 5P 7M 9M 13M\", \"major thirteenth\", \"maj13 Maj13\"],\r\n [\"1P 3M 5P 6M\", \"sixth\", \"6 add6 add13 M6\"],\r\n [\"1P 3M 5P 6M 9M\", \"sixth/ninth\", \"6/9 69\"],\r\n [\"1P 3M 5P 7M 11A\", \"lydian\", \"maj#4 Δ#4 Δ#11\"],\r\n [\"1P 3M 6m 7M\", \"major seventh b6\", \"M7b6\"],\r\n // ==Minor==\r\n // '''Normal'''\r\n [\"1P 3m 5P\", \"minor\", \"m min -\"],\r\n [\"1P 3m 5P 7m\", \"minor seventh\", \"m7 min7 mi7 -7\"],\r\n [\"1P 3m 5P 7M\", \"minor/major seventh\", \"m/ma7 m/maj7 mM7 m/M7 -Δ7 mΔ\"],\r\n [\"1P 3m 5P 6M\", \"minor sixth\", \"m6\"],\r\n [\"1P 3m 5P 7m 9M\", \"minor ninth\", \"m9\"],\r\n [\"1P 3m 5P 7m 9M 11P\", \"minor eleventh\", \"m11\"],\r\n [\"1P 3m 5P 7m 9M 13M\", \"minor thirteenth\", \"m13\"],\r\n // '''Diminished'''\r\n [\"1P 3m 5d\", \"diminished\", \"dim ° o\"],\r\n [\"1P 3m 5d 7d\", \"diminished seventh\", \"dim7 °7 o7\"],\r\n [\"1P 3m 5d 7m\", \"half-diminished\", \"m7b5 ø\"],\r\n // ==Dominant/Seventh==\r\n // '''Normal'''\r\n [\"1P 3M 5P 7m\", \"dominant seventh\", \"7 dom\"],\r\n [\"1P 3M 5P 7m 9M\", \"dominant ninth\", \"9\"],\r\n [\"1P 3M 5P 7m 9M 13M\", \"dominant thirteenth\", \"13\"],\r\n [\"1P 3M 5P 7m 11A\", \"lydian dominant seventh\", \"7#11 7#4\"],\r\n // '''Altered'''\r\n [\"1P 3M 5P 7m 9m\", \"dominant b9\", \"7b9\"],\r\n [\"1P 3M 5P 7m 9A\", \"dominant #9\", \"7#9\"],\r\n [\"1P 3M 7m 9m\", \"altered\", \"alt7\"],\r\n // '''Suspended'''\r\n [\"1P 4P 5P\", \"suspended 4th\", \"sus4\"],\r\n [\"1P 2M 5P\", \"suspended 2nd\", \"sus2\"],\r\n [\"1P 4P 5P 7m\", \"suspended 4th seventh\", \"7sus4\"],\r\n [\"1P 5P 7m 9M 11P\", \"eleventh\", \"11\"],\r\n [\"1P 4P 5P 7m 9m\", \"suspended 4th b9\", \"b9sus phryg\"],\r\n // ==Other==\r\n [\"1P 5P\", \"fifth\", \"5\"],\r\n [\"1P 3M 5A\", \"augmented\", \"aug + +5\"],\r\n [\"1P 3M 5A 7M\", \"augmented seventh\", \"maj7#5 maj7+5\"],\r\n [\"1P 3M 5P 7M 9M 11A\", \"major #11 (lydian)\", \"maj9#11 Δ9#11\"],\r\n // ==Legacy==\r\n [\"1P 2M 4P 5P\", \"\", \"sus24 sus4add9\"],\r\n [\"1P 3M 13m\", \"\", \"Mb6\"],\r\n [\"1P 3M 5A 7M 9M\", \"\", \"maj9#5 Maj9#5\"],\r\n [\"1P 3M 5A 7m\", \"\", \"7#5 +7 7aug aug7\"],\r\n [\"1P 3M 5A 7m 9A\", \"\", \"7#5#9 7alt\"],\r\n [\"1P 3M 5A 7m 9M\", \"\", \"9#5 9+\"],\r\n [\"1P 3M 5A 7m 9M 11A\", \"\", \"9#5#11\"],\r\n [\"1P 3M 5A 7m 9m\", \"\", \"7#5b9\"],\r\n [\"1P 3M 5A 7m 9m 11A\", \"\", \"7#5b9#11\"],\r\n [\"1P 3M 5A 9A\", \"\", \"+add#9\"],\r\n [\"1P 3M 5A 9M\", \"\", \"M#5add9 +add9\"],\r\n [\"1P 3M 5P 6M 11A\", \"\", \"M6#11 M6b5 6#11 6b5\"],\r\n [\"1P 3M 5P 6M 7M 9M\", \"\", \"M7add13\"],\r\n [\"1P 3M 5P 6M 9M 11A\", \"\", \"69#11\"],\r\n [\"1P 3M 5P 6m 7m\", \"\", \"7b6\"],\r\n [\"1P 3M 5P 7M 9A 11A\", \"\", \"maj7#9#11\"],\r\n [\"1P 3M 5P 7M 9M 11A 13M\", \"\", \"M13#11 maj13#11 M13+4 M13#4\"],\r\n [\"1P 3M 5P 7M 9m\", \"\", \"M7b9\"],\r\n [\"1P 3M 5P 7m 11A 13m\", \"\", \"7#11b13 7b5b13\"],\r\n [\"1P 3M 5P 7m 13M\", \"\", \"7add6 67 7add13\"],\r\n [\"1P 3M 5P 7m 9A 11A\", \"\", \"7#9#11 7b5#9\"],\r\n [\"1P 3M 5P 7m 9A 11A 13M\", \"\", \"13#9#11\"],\r\n [\"1P 3M 5P 7m 9A 11A 13m\", \"\", \"7#9#11b13\"],\r\n [\"1P 3M 5P 7m 9A 13M\", \"\", \"13#9\"],\r\n [\"1P 3M 5P 7m 9A 13m\", \"\", \"7#9b13\"],\r\n [\"1P 3M 5P 7m 9M 11A\", \"\", \"9#11 9+4 9#4\"],\r\n [\"1P 3M 5P 7m 9M 11A 13M\", \"\", \"13#11 13+4 13#4\"],\r\n [\"1P 3M 5P 7m 9M 11A 13m\", \"\", \"9#11b13 9b5b13\"],\r\n [\"1P 3M 5P 7m 9m 11A\", \"\", \"7b9#11 7b5b9\"],\r\n [\"1P 3M 5P 7m 9m 11A 13M\", \"\", \"13b9#11\"],\r\n [\"1P 3M 5P 7m 9m 11A 13m\", \"\", \"7b9b13#11 7b9#11b13 7b5b9b13\"],\r\n [\"1P 3M 5P 7m 9m 13M\", \"\", \"13b9\"],\r\n [\"1P 3M 5P 7m 9m 13m\", \"\", \"7b9b13\"],\r\n [\"1P 3M 5P 7m 9m 9A\", \"\", \"7b9#9\"],\r\n [\"1P 3M 5P 9M\", \"\", \"Madd9 2 add9 add2\"],\r\n [\"1P 3M 5P 9m\", \"\", \"Maddb9\"],\r\n [\"1P 3M 5d\", \"\", \"Mb5\"],\r\n [\"1P 3M 5d 6M 7m 9M\", \"\", \"13b5\"],\r\n [\"1P 3M 5d 7M\", \"\", \"M7b5\"],\r\n [\"1P 3M 5d 7M 9M\", \"\", \"M9b5\"],\r\n [\"1P 3M 5d 7m\", \"\", \"7b5\"],\r\n [\"1P 3M 5d 7m 9M\", \"\", \"9b5\"],\r\n [\"1P 3M 7m\", \"\", \"7no5\"],\r\n [\"1P 3M 7m 13m\", \"\", \"7b13\"],\r\n [\"1P 3M 7m 9M\", \"\", \"9no5\"],\r\n [\"1P 3M 7m 9M 13M\", \"\", \"13no5\"],\r\n [\"1P 3M 7m 9M 13m\", \"\", \"9b13\"],\r\n [\"1P 3m 4P 5P\", \"\", \"madd4\"],\r\n [\"1P 3m 5A\", \"\", \"m#5 m+ mb6\"],\r\n [\"1P 3m 5P 6M 9M\", \"\", \"m69\"],\r\n [\"1P 3m 5P 6m 7M\", \"\", \"mMaj7b6\"],\r\n [\"1P 3m 5P 6m 7M 9M\", \"\", \"mMaj9b6\"],\r\n [\"1P 3m 5P 7M 9M\", \"\", \"mMaj9\"],\r\n [\"1P 3m 5P 7m 11P\", \"\", \"m7add11 m7add4\"],\r\n [\"1P 3m 5P 9M\", \"\", \"madd9\"],\r\n [\"1P 3m 5d 6M 7M\", \"\", \"o7M7\"],\r\n [\"1P 3m 5d 7M\", \"\", \"oM7\"],\r\n [\"1P 3m 6m 7M\", \"\", \"mb6M7\"],\r\n [\"1P 3m 6m 7m\", \"\", \"m7#5\"],\r\n [\"1P 3m 6m 7m 9M\", \"\", \"m9#5\"],\r\n [\"1P 3m 6m 7m 9M 11P\", \"\", \"m11A\"],\r\n [\"1P 3m 6m 9m\", \"\", \"mb6b9\"],\r\n [\"1P 3m 7m 12d 2M\", \"\", \"m9b5 h9\"],\r\n [\"1P 3m 7m 12d 2M 4P\", \"\", \"m11b5 h11\"],\r\n [\"1P 4P 5A 7M\", \"\", \"M7#5sus4\"],\r\n [\"1P 4P 5A 7M 9M\", \"\", \"M9#5sus4\"],\r\n [\"1P 4P 5A 7m\", \"\", \"7#5sus4\"],\r\n [\"1P 4P 5P 7M\", \"\", \"M7sus4\"],\r\n [\"1P 4P 5P 7M 9M\", \"\", \"M9sus4\"],\r\n [\"1P 4P 5P 7m 9M\", \"\", \"9sus4 9sus\"],\r\n [\"1P 4P 5P 7m 9M 13M\", \"\", \"13sus4 13sus\"],\r\n [\"1P 4P 5P 7m 9m 13m\", \"\", \"7sus4b9b13 7b9b13sus4\"],\r\n [\"1P 4P 7m 10m\", \"\", \"4 quartal\"],\r\n [\"1P 5P 7m 9m 11P\", \"\", \"11b9\"]\r\n];\n\nconst NoChordType = {\r\n ...EmptyPcset,\r\n name: \"\",\r\n quality: \"Unknown\",\r\n intervals: [],\r\n aliases: []\r\n};\r\nlet dictionary = [];\r\nlet index = {};\r\n/**\r\n * Given a chord name or chroma, return the chord properties\r\n * @param {string} source - chord name or pitch class set chroma\r\n * @example\r\n * import { get } from 'tonaljs/chord-type'\r\n * get('major') // => { name: 'major', ... }\r\n */\r\nfunction get(type) {\r\n return index[type] || NoChordType;\r\n}\r\nconst chordType = deprecate(\"ChordType.chordType\", \"ChordType.get\", get);\r\n/**\r\n * Get all chord (long) names\r\n */\r\nfunction names() {\r\n return dictionary.map(chord => chord.name).filter(x => x);\r\n}\r\n/**\r\n * Get all chord symbols\r\n */\r\nfunction symbols() {\r\n return dictionary.map(chord => chord.aliases[0]).filter(x => x);\r\n}\r\n/**\r\n * Keys used to reference chord types\r\n */\r\nfunction keys() {\r\n return Object.keys(index);\r\n}\r\n/**\r\n * Return a list of all chord types\r\n */\r\nfunction all() {\r\n return dictionary.slice();\r\n}\r\nconst entries = deprecate(\"ChordType.entries\", \"ChordType.all\", all);\r\n/**\r\n * Clear the dictionary\r\n */\r\nfunction removeAll() {\r\n dictionary = [];\r\n index = {};\r\n}\r\n/**\r\n * Add a chord to the dictionary.\r\n * @param intervals\r\n * @param aliases\r\n * @param [fullName]\r\n */\r\nfunction add(intervals, aliases, fullName) {\r\n const quality = getQuality(intervals);\r\n const chord = {\r\n ...get$1(intervals),\r\n name: fullName || \"\",\r\n quality,\r\n intervals,\r\n aliases\r\n };\r\n dictionary.push(chord);\r\n if (chord.name) {\r\n index[chord.name] = chord;\r\n }\r\n index[chord.setNum] = chord;\r\n index[chord.chroma] = chord;\r\n chord.aliases.forEach(alias => addAlias(chord, alias));\r\n}\r\nfunction addAlias(chord, alias) {\r\n index[alias] = chord;\r\n}\r\nfunction getQuality(intervals) {\r\n const has = (interval) => intervals.indexOf(interval) !== -1;\r\n return has(\"5A\")\r\n ? \"Augmented\"\r\n : has(\"3M\")\r\n ? \"Major\"\r\n : has(\"5d\")\r\n ? \"Diminished\"\r\n : has(\"3m\")\r\n ? \"Minor\"\r\n : \"Unknown\";\r\n}\r\nCHORDS.forEach(([ivls, fullName, names]) => add(ivls.split(\" \"), names.split(\" \"), fullName));\r\ndictionary.sort((a, b) => a.setNum - b.setNum);\r\nvar index$1 = {\r\n names,\r\n symbols,\r\n get,\r\n all,\r\n add,\r\n removeAll,\r\n keys,\r\n // deprecated\r\n entries,\r\n chordType\r\n};\n\nexport default index$1;\nexport { add, addAlias, all, chordType, entries, get, keys, names, removeAll, symbols };\n//# sourceMappingURL=index.es.js.map\n","import { get } from '@tonaljs/chord-type';\nimport { note } from '@tonaljs/core';\nimport { modes } from '@tonaljs/pcset';\n\nconst NotFound = { weight: 0, name: \"\" };\r\nconst namedSet = (notes) => {\r\n const pcToName = notes.reduce((record, n) => {\r\n const chroma = note(n).chroma;\r\n if (chroma !== undefined) {\r\n record[chroma] = record[chroma] || note(n).name;\r\n }\r\n return record;\r\n }, {});\r\n return (chroma) => pcToName[chroma];\r\n};\r\nfunction detect(source) {\r\n const notes = source.map(n => note(n).pc).filter(x => x);\r\n if (note.length === 0) {\r\n return [];\r\n }\r\n const found = findExactMatches(notes, 1);\r\n return found\r\n .filter(chord => chord.weight)\r\n .sort((a, b) => b.weight - a.weight)\r\n .map(chord => chord.name);\r\n}\r\nfunction findExactMatches(notes, weight) {\r\n const tonic = notes[0];\r\n const tonicChroma = note(tonic).chroma;\r\n const noteName = namedSet(notes);\r\n const allModes = modes(notes, false);\r\n const found = allModes.map((mode, chroma) => {\r\n const chordName = get(mode).aliases[0];\r\n if (!chordName) {\r\n return NotFound;\r\n }\r\n const baseNote = noteName(chroma);\r\n const isInversion = chroma !== tonicChroma;\r\n if (isInversion) {\r\n return { weight: 0.5 * weight, name: `${baseNote}${chordName}/${tonic}` };\r\n }\r\n else {\r\n return { weight: 1 * weight, name: `${baseNote}${chordName}` };\r\n }\r\n });\r\n return found;\r\n}\r\nvar index = { detect };\n\nexport default index;\nexport { detect };\n//# sourceMappingURL=index.es.js.map\n","import { deprecate } from '@tonaljs/core';\nimport { EmptyPcset, get as get$1 } from '@tonaljs/pcset';\n\n// SCALES\r\n// Format: [\"intervals\", \"name\", \"alias1\", \"alias2\", ...]\r\nconst SCALES = [\r\n // 5-note scales\r\n [\"1P 2M 3M 5P 6M\", \"major pentatonic\", \"pentatonic\"],\r\n [\"1P 3M 4P 5P 7M\", \"ionian pentatonic\"],\r\n [\"1P 3M 4P 5P 7m\", \"mixolydian pentatonic\", \"indian\"],\r\n [\"1P 2M 4P 5P 6M\", \"ritusen\"],\r\n [\"1P 2M 4P 5P 7m\", \"egyptian\"],\r\n [\"1P 3M 4P 5d 7m\", \"neopolitan major pentatonic\"],\r\n [\"1P 3m 4P 5P 6m\", \"vietnamese 1\"],\r\n [\"1P 2m 3m 5P 6m\", \"pelog\"],\r\n [\"1P 2m 4P 5P 6m\", \"kumoijoshi\"],\r\n [\"1P 2M 3m 5P 6m\", \"hirajoshi\"],\r\n [\"1P 2m 4P 5d 7m\", \"iwato\"],\r\n [\"1P 2m 4P 5P 7m\", \"in-sen\"],\r\n [\"1P 3M 4A 5P 7M\", \"lydian pentatonic\", \"chinese\"],\r\n [\"1P 3m 4P 6m 7m\", \"malkos raga\"],\r\n [\"1P 3m 4P 5d 7m\", \"locrian pentatonic\", \"minor seven flat five pentatonic\"],\r\n [\"1P 3m 4P 5P 7m\", \"minor pentatonic\", \"vietnamese 2\"],\r\n [\"1P 3m 4P 5P 6M\", \"minor six pentatonic\"],\r\n [\"1P 2M 3m 5P 6M\", \"flat three pentatonic\", \"kumoi\"],\r\n [\"1P 2M 3M 5P 6m\", \"flat six pentatonic\"],\r\n [\"1P 2m 3M 5P 6M\", \"scriabin\"],\r\n [\"1P 3M 5d 6m 7m\", \"whole tone pentatonic\"],\r\n [\"1P 3M 4A 5A 7M\", \"lydian #5P pentatonic\"],\r\n [\"1P 3M 4A 5P 7m\", \"lydian dominant pentatonic\"],\r\n [\"1P 3m 4P 5P 7M\", \"minor #7M pentatonic\"],\r\n [\"1P 3m 4d 5d 7m\", \"super locrian pentatonic\"],\r\n // 6-note scales\r\n [\"1P 2M 3m 4P 5P 7M\", \"minor hexatonic\"],\r\n [\"1P 2A 3M 5P 5A 7M\", \"augmented\"],\r\n [\"1P 3m 4P 5d 5P 7m\", \"minor blues\", \"blues\"],\r\n [\"1P 2M 3m 3M 5P 6M\", \"major blues\"],\r\n [\"1P 2M 4P 5P 6M 7m\", \"piongio\"],\r\n [\"1P 2m 3M 4A 6M 7m\", \"prometheus neopolitan\"],\r\n [\"1P 2M 3M 4A 6M 7m\", \"prometheus\"],\r\n [\"1P 2m 3M 5d 6m 7m\", \"mystery #1\"],\r\n [\"1P 2m 3M 4P 5A 6M\", \"six tone symmetric\"],\r\n [\"1P 2M 3M 4A 5A 7m\", \"whole tone\"],\r\n // 7-note scales\r\n [\"1P 2M 3M 4P 5d 6m 7m\", \"locrian major\", \"arabian\"],\r\n [\"1P 2m 3M 4A 5P 6m 7M\", \"double harmonic lydian\"],\r\n [\"1P 2M 3m 4P 5P 6m 7M\", \"harmonic minor\"],\r\n [\r\n \"1P 2m 3m 3M 5d 6m 7m\",\r\n \"altered\",\r\n \"super locrian\",\r\n \"diminished whole tone\",\r\n \"pomeroy\"\r\n ],\r\n [\"1P 2M 3m 4P 5d 6m 7m\", \"locrian #2\", \"half-diminished\", '\"aeolian b5'],\r\n [\r\n \"1P 2M 3M 4P 5P 6m 7m\",\r\n \"mixolydian b6\",\r\n \"melodic minor fifth mode\",\r\n \"hindu\"\r\n ],\r\n [\"1P 2M 3M 4A 5P 6M 7m\", \"lydian dominant\", \"lydian b7\", \"overtone\"],\r\n [\"1P 2M 3M 4A 5P 6M 7M\", \"lydian\"],\r\n [\"1P 2M 3M 4A 5A 6M 7M\", \"lydian augmented\"],\r\n [\r\n \"1P 2m 3m 4P 5P 6M 7m\",\r\n \"dorian b2\",\r\n \"phrygian #6\",\r\n \"melodic minor second mode\"\r\n ],\r\n [\"1P 2M 3m 4P 5P 6M 7M\", \"melodic minor\"],\r\n [\"1P 2m 3m 4P 5d 6m 7m\", \"locrian\"],\r\n [\r\n \"1P 2m 3m 4d 5d 6m 7d\",\r\n \"ultralocrian\",\r\n \"superlocrian bb7\",\r\n \"·superlocrian diminished\"\r\n ],\r\n [\"1P 2m 3m 4P 5d 6M 7m\", \"locrian 6\", \"locrian natural 6\", \"locrian sharp 6\"],\r\n [\"1P 2A 3M 4P 5P 5A 7M\", \"augmented heptatonic\"],\r\n [\"1P 2M 3m 5d 5P 6M 7m\", \"romanian minor\"],\r\n [\"1P 2M 3m 4A 5P 6M 7m\", \"dorian #4\"],\r\n [\"1P 2M 3m 4A 5P 6M 7M\", \"lydian diminished\"],\r\n [\"1P 2m 3m 4P 5P 6m 7m\", \"phrygian\"],\r\n [\"1P 2M 3M 4A 5A 7m 7M\", \"leading whole tone\"],\r\n [\"1P 2M 3M 4A 5P 6m 7m\", \"lydian minor\"],\r\n [\"1P 2m 3M 4P 5P 6m 7m\", \"phrygian dominant\", \"spanish\", \"phrygian major\"],\r\n [\"1P 2m 3m 4P 5P 6m 7M\", \"balinese\"],\r\n [\"1P 2m 3m 4P 5P 6M 7M\", \"neopolitan major\"],\r\n [\"1P 2M 3m 4P 5P 6m 7m\", \"aeolian\", \"minor\"],\r\n [\"1P 2M 3M 4P 5P 6m 7M\", \"harmonic major\"],\r\n [\"1P 2m 3M 4P 5P 6m 7M\", \"double harmonic major\", \"gypsy\"],\r\n [\"1P 2M 3m 4P 5P 6M 7m\", \"dorian\"],\r\n [\"1P 2M 3m 4A 5P 6m 7M\", \"hungarian minor\"],\r\n [\"1P 2A 3M 4A 5P 6M 7m\", \"hungarian major\"],\r\n [\"1P 2m 3M 4P 5d 6M 7m\", \"oriental\"],\r\n [\"1P 2m 3m 3M 4A 5P 7m\", \"flamenco\"],\r\n [\"1P 2m 3m 4A 5P 6m 7M\", \"todi raga\"],\r\n [\"1P 2M 3M 4P 5P 6M 7m\", \"mixolydian\", \"dominant\"],\r\n [\"1P 2m 3M 4P 5d 6m 7M\", \"persian\"],\r\n [\"1P 2M 3M 4P 5P 6M 7M\", \"major\", \"ionian\"],\r\n [\"1P 2m 3M 5d 6m 7m 7M\", \"enigmatic\"],\r\n [\r\n \"1P 2M 3M 4P 5A 6M 7M\",\r\n \"major augmented\",\r\n \"major #5\",\r\n \"ionian augmented\",\r\n \"ionian #5\"\r\n ],\r\n [\"1P 2A 3M 4A 5P 6M 7M\", \"lydian #9\"],\r\n // 8-note scales\r\n [\"1P 2m 3M 4P 4A 5P 6m 7M\", \"purvi raga\"],\r\n [\"1P 2m 3m 3M 4P 5P 6m 7m\", \"spanish heptatonic\"],\r\n [\"1P 2M 3M 4P 5P 6M 7m 7M\", \"bebop\"],\r\n [\"1P 2M 3m 3M 4P 5P 6M 7m\", \"bebop minor\"],\r\n [\"1P 2M 3M 4P 5P 5A 6M 7M\", \"bebop major\"],\r\n [\"1P 2m 3m 4P 5d 5P 6m 7m\", \"bebop locrian\"],\r\n [\"1P 2M 3m 4P 5P 6m 7m 7M\", \"minor bebop\"],\r\n [\"1P 2M 3m 4P 5d 6m 6M 7M\", \"diminished\", \"whole-half diminished\"],\r\n [\"1P 2M 3M 4P 5d 5P 6M 7M\", \"ichikosucho\"],\r\n [\"1P 2M 3m 4P 5P 6m 6M 7M\", \"minor six diminished\"],\r\n [\"1P 2m 3m 3M 4A 5P 6M 7m\", \"half-whole diminished\", \"dominant diminished\"],\r\n [\"1P 3m 3M 4P 5P 6M 7m 7M\", \"kafi raga\"],\r\n // 9-note scales\r\n [\"1P 2M 3m 3M 4P 5d 5P 6M 7m\", \"composite blues\"],\r\n // 12-note scales\r\n [\"1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M\", \"chromatic\"]\r\n];\n\nconst NoScaleType = {\r\n ...EmptyPcset,\r\n intervals: [],\r\n aliases: []\r\n};\r\nlet dictionary = [];\r\nlet index = {};\r\nfunction names() {\r\n return dictionary.map(scale => scale.name);\r\n}\r\n/**\r\n * Given a scale name or chroma, return the scale properties\r\n *\r\n * @param {string} type - scale name or pitch class set chroma\r\n * @example\r\n * import { get } from 'tonaljs/scale-type'\r\n * get('major') // => { name: 'major', ... }\r\n */\r\nfunction get(type) {\r\n return index[type] || NoScaleType;\r\n}\r\nconst scaleType = deprecate(\"ScaleDictionary.scaleType\", \"ScaleType.get\", get);\r\n/**\r\n * Return a list of all scale types\r\n */\r\nfunction all() {\r\n return dictionary.slice();\r\n}\r\nconst entries = deprecate(\"ScaleDictionary.entries\", \"ScaleType.all\", all);\r\n/**\r\n * Keys used to reference scale types\r\n */\r\nfunction keys() {\r\n return Object.keys(index);\r\n}\r\n/**\r\n * Clear the dictionary\r\n */\r\nfunction removeAll() {\r\n dictionary = [];\r\n index = {};\r\n}\r\n/**\r\n * Add a scale into dictionary\r\n * @param intervals\r\n * @param name\r\n * @param aliases\r\n */\r\nfunction add(intervals, name, aliases = []) {\r\n const scale = { ...get$1(intervals), name, intervals, aliases };\r\n dictionary.push(scale);\r\n index[scale.name] = scale;\r\n index[scale.setNum] = scale;\r\n index[scale.chroma] = scale;\r\n scale.aliases.forEach(alias => addAlias(scale, alias));\r\n return scale;\r\n}\r\nfunction addAlias(scale, alias) {\r\n index[alias] = scale;\r\n}\r\nSCALES.forEach(([ivls, name, ...aliases]) => add(ivls.split(\" \"), name, aliases));\r\nvar index$1 = {\r\n names,\r\n get,\r\n all,\r\n add,\r\n removeAll,\r\n keys,\r\n // deprecated\r\n entries,\r\n scaleType\r\n};\n\nexport default index$1;\nexport { NoScaleType, add, addAlias, all, entries, get, keys, names, removeAll, scaleType };\n//# sourceMappingURL=index.es.js.map\n","import { detect } from '@tonaljs/chord-detect';\nexport { detect } from '@tonaljs/chord-detect';\nimport { get as get$1, all as all$1 } from '@tonaljs/chord-type';\nimport { tokenizeNote, transpose as transpose$1, deprecate, note } from '@tonaljs/core';\nimport { isSupersetOf, isSubsetOf } from '@tonaljs/pcset';\nimport { all } from '@tonaljs/scale-type';\n\nconst NoChord = {\r\n empty: true,\r\n name: \"\",\r\n type: \"\",\r\n tonic: null,\r\n setNum: NaN,\r\n quality: \"Unknown\",\r\n chroma: \"\",\r\n normalized: \"\",\r\n aliases: [],\r\n notes: [],\r\n intervals: []\r\n};\r\n// 6, 64, 7, 9, 11 and 13 are consider part of the chord\r\n// (see https://github.com/danigb/tonal/issues/55)\r\nconst NUM_TYPES = /^(6|64|7|9|11|13)$/;\r\n/**\r\n * Tokenize a chord name. It returns an array with the tonic and chord type\r\n * If not tonic is found, all the name is considered the chord name.\r\n *\r\n * This function does NOT check if the chord type exists or not. It only tries\r\n * to split the tonic and chord type.\r\n *\r\n * @function\r\n * @param {string} name - the chord name\r\n * @return {Array} an array with [tonic, type]\r\n * @example\r\n * tokenize(\"Cmaj7\") // => [ \"C\", \"maj7\" ]\r\n * tokenize(\"C7\") // => [ \"C\", \"7\" ]\r\n * tokenize(\"mMaj7\") // => [ null, \"mMaj7\" ]\r\n * tokenize(\"Cnonsense\") // => [ null, \"nonsense\" ]\r\n */\r\nfunction tokenize(name) {\r\n const [letter, acc, oct, type] = tokenizeNote(name);\r\n if (letter === \"\") {\r\n return [\"\", name];\r\n }\r\n // aug is augmented (see https://github.com/danigb/tonal/issues/55)\r\n if (letter === \"A\" && type === \"ug\") {\r\n return [\"\", \"aug\"];\r\n }\r\n // see: https://github.com/tonaljs/tonal/issues/70\r\n if (!type && (oct === \"4\" || oct === \"5\")) {\r\n return [letter + acc, oct];\r\n }\r\n if (NUM_TYPES.test(oct)) {\r\n return [letter + acc, oct + type];\r\n }\r\n else {\r\n return [letter + acc + oct, type];\r\n }\r\n}\r\n/**\r\n * Get a Chord from a chord name.\r\n */\r\nfunction get(src) {\r\n const { type, tonic } = findChord(src);\r\n if (!type || type.empty) {\r\n return NoChord;\r\n }\r\n const notes = tonic\r\n ? type.intervals.map(i => transpose$1(tonic, i))\r\n : [];\r\n const name = tonic ? tonic + \" \" + type.name : type.name;\r\n return { ...type, name, type: type.name, tonic: tonic || \"\", notes };\r\n}\r\nconst chord = deprecate(\"Chord.chord\", \"Chord.get\", get);\r\nfunction findChord(src) {\r\n if (!src || !src.length) {\r\n return {};\r\n }\r\n const tokens = Array.isArray(src) ? src : tokenize(src);\r\n const tonic = note(tokens[0]).name;\r\n const type = get$1(tokens[1]);\r\n if (!type.empty) {\r\n return { tonic, type };\r\n }\r\n else if (tonic && typeof src === \"string\") {\r\n return { tonic: \"\", type: get$1(src) };\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\n/**\r\n * Transpose a chord name\r\n *\r\n * @param {string} chordName - the chord name\r\n * @return {string} the transposed chord\r\n *\r\n * @example\r\n * transpose('Dm7', 'P4') // => 'Gm7\r\n */\r\nfunction transpose(chordName, interval) {\r\n const [tonic, type] = tokenize(chordName);\r\n if (!tonic) {\r\n return name;\r\n }\r\n return transpose$1(tonic, interval) + type;\r\n}\r\n/**\r\n * Get all scales where the given chord fits\r\n *\r\n * @example\r\n * chordScales('C7b9')\r\n * // => [\"phrygian dominant\", \"flamenco\", \"spanish heptatonic\", \"half-whole diminished\", \"chromatic\"]\r\n */\r\nfunction chordScales(name) {\r\n const s = get(name);\r\n const isChordIncluded = isSupersetOf(s.chroma);\r\n return all()\r\n .filter(scale => isChordIncluded(scale.chroma))\r\n .map(scale => scale.name);\r\n}\r\n/**\r\n * Get all chords names that are a superset of the given one\r\n * (has the same notes and at least one more)\r\n *\r\n * @function\r\n * @example\r\n * extended(\"CMaj7\")\r\n * // => [ 'Cmaj#4', 'Cmaj7#9#11', 'Cmaj9', 'CM7add13', 'Cmaj13', 'Cmaj9#11', 'CM13#11', 'CM7b9' ]\r\n */\r\nfunction extended(chordName) {\r\n const s = get(chordName);\r\n const isSuperset = isSupersetOf(s.chroma);\r\n return all$1()\r\n .filter(chord => isSuperset(chord.chroma))\r\n .map(chord => s.tonic + chord.aliases[0]);\r\n}\r\n/**\r\n * Find all chords names that are a subset of the given one\r\n * (has less notes but all from the given chord)\r\n *\r\n * @example\r\n */\r\nfunction reduced(chordName) {\r\n const s = get(chordName);\r\n const isSubset = isSubsetOf(s.chroma);\r\n return all$1()\r\n .filter(chord => isSubset(chord.chroma))\r\n .map(chord => s.tonic + chord.aliases[0]);\r\n}\r\nvar index = {\r\n get,\r\n detect,\r\n chordScales,\r\n extended,\r\n reduced,\r\n tokenize,\r\n transpose,\r\n // deprecate\r\n chord\r\n};\n\nexport default index;\nexport { chord, chordScales, extended, get, reduced, tokenize, transpose };\n//# sourceMappingURL=index.es.js.map\n","// source: https://en.wikipedia.org/wiki/Note_value\r\nconst DATA = [\r\n [\r\n 0.125,\r\n \"dl\",\r\n [\"large\", \"duplex longa\", \"maxima\", \"octuple\", \"octuple whole\"]\r\n ],\r\n [0.25, \"l\", [\"long\", \"longa\"]],\r\n [0.5, \"d\", [\"double whole\", \"double\", \"breve\"]],\r\n [1, \"w\", [\"whole\", \"semibreve\"]],\r\n [2, \"h\", [\"half\", \"minim\"]],\r\n [4, \"q\", [\"quarter\", \"crotchet\"]],\r\n [8, \"e\", [\"eighth\", \"quaver\"]],\r\n [16, \"s\", [\"sixteenth\", \"semiquaver\"]],\r\n [32, \"t\", [\"thirty-second\", \"demisemiquaver\"]],\r\n [64, \"sf\", [\"sixty-fourth\", \"hemidemisemiquaver\"]],\r\n [128, \"h\", [\"hundred twenty-eighth\"]],\r\n [256, \"th\", [\"two hundred fifty-sixth\"]]\r\n];\n\nconst VALUES = [];\r\nDATA.forEach(([denominator, shorthand, names]) => add(denominator, shorthand, names));\r\nconst NoDuration = {\r\n empty: true,\r\n name: \"\",\r\n value: 0,\r\n fraction: [0, 0],\r\n shorthand: \"\",\r\n dots: \"\",\r\n names: []\r\n};\r\nfunction names() {\r\n return VALUES.reduce((names, duration) => {\r\n duration.names.forEach(name => names.push(name));\r\n return names;\r\n }, []);\r\n}\r\nfunction shorthands() {\r\n return VALUES.map(dur => dur.shorthand);\r\n}\r\nconst REGEX = /^([^.]+)(\\.*)$/;\r\nfunction get(name) {\r\n const [_, simple, dots] = REGEX.exec(name) || [];\r\n const base = VALUES.find(dur => dur.shorthand === simple || dur.names.includes(simple));\r\n if (!base) {\r\n return NoDuration;\r\n }\r\n const fraction = calcDots(base.fraction, dots.length);\r\n const value = fraction[0] / fraction[1];\r\n return { ...base, name, dots, value, fraction };\r\n}\r\nconst value = (name) => get(name).value;\r\nconst fraction = (name) => get(name).fraction;\r\nvar index = { names, shorthands, get, value, fraction };\r\n//// PRIVATE ////\r\nfunction add(denominator, shorthand, names) {\r\n VALUES.push({\r\n empty: false,\r\n dots: \"\",\r\n name: \"\",\r\n value: 1 / denominator,\r\n fraction: denominator < 1 ? [1 / denominator, 1] : [1, denominator],\r\n shorthand,\r\n names\r\n });\r\n}\r\nfunction calcDots(fraction, dots) {\r\n const pow = Math.pow(2, dots);\r\n let numerator = fraction[0] * pow;\r\n let denominator = fraction[1] * pow;\r\n const base = numerator;\r\n // add fractions\r\n for (let i = 0; i < dots; i++) {\r\n numerator += base / Math.pow(2, i + 1);\r\n }\r\n // simplify\r\n while (numerator % 2 === 0 && denominator % 2 === 0) {\r\n numerator /= 2;\r\n denominator /= 2;\r\n }\r\n return [numerator, denominator];\r\n}\n\nexport default index;\nexport { fraction, get, names, shorthands, value };\n//# sourceMappingURL=index.es.js.map\n","import { interval, distance as distance$1, coordToInterval } from '@tonaljs/core';\n\n/**\r\n * Get the natural list of names\r\n */\r\nfunction names() {\r\n return \"1P 2M 3M 4P 5P 6m 7m\".split(\" \");\r\n}\r\n/**\r\n * Get properties of an interval\r\n *\r\n * @function\r\n * @example\r\n * Interval.get('P4') // => {\"alt\": 0, \"dir\": 1, \"name\": \"4P\", \"num\": 4, \"oct\": 0, \"q\": \"P\", \"semitones\": 5, \"simple\": 4, \"step\": 3, \"type\": \"perfectable\"}\r\n */\r\nconst get = interval;\r\n/**\r\n * Get name of an interval\r\n *\r\n * @function\r\n * @example\r\n * Interval.name('4P') // => \"4P\"\r\n * Interval.name('P4') // => \"4P\"\r\n * Interval.name('C4') // => \"\"\r\n */\r\nconst name = (name) => interval(name).name;\r\n/**\r\n * Get semitones of an interval\r\n * @function\r\n * @example\r\n * Interval.semitones('P4') // => 5\r\n */\r\nconst semitones = (name) => interval(name).semitones;\r\n/**\r\n * Get quality of an interval\r\n * @function\r\n * @example\r\n * Interval.quality('P4') // => \"P\"\r\n */\r\nconst quality = (name) => interval(name).q;\r\n/**\r\n * Get number of an interval\r\n * @function\r\n * @example\r\n * Interval.num('P4') // => 4\r\n */\r\nconst num = (name) => interval(name).num;\r\n/**\r\n * Get the simplified version of an interval.\r\n *\r\n * @function\r\n * @param {string} interval - the interval to simplify\r\n * @return {string} the simplified interval\r\n *\r\n * @example\r\n * Interval.simplify(\"9M\") // => \"2M\"\r\n * Interval.simplify(\"2M\") // => \"2M\"\r\n * Interval.simplify(\"-2M\") // => \"7m\"\r\n * [\"8P\", \"9M\", \"10M\", \"11P\", \"12P\", \"13M\", \"14M\", \"15P\"].map(Interval.simplify)\r\n * // => [ \"8P\", \"2M\", \"3M\", \"4P\", \"5P\", \"6M\", \"7M\", \"8P\" ]\r\n */\r\nfunction simplify(name) {\r\n const i = interval(name);\r\n return i.empty ? \"\" : i.simple + i.q;\r\n}\r\n/**\r\n * Get the inversion (https://en.wikipedia.org/wiki/Inversion_(music)#Intervals)\r\n * of an interval.\r\n *\r\n * @function\r\n * @param {string} interval - the interval to invert in interval shorthand\r\n * notation or interval array notation\r\n * @return {string} the inverted interval\r\n *\r\n * @example\r\n * Interval.invert(\"3m\") // => \"6M\"\r\n * Interval.invert(\"2M\") // => \"7m\"\r\n */\r\nfunction invert(name) {\r\n const i = interval(name);\r\n if (i.empty) {\r\n return \"\";\r\n }\r\n const step = (7 - i.step) % 7;\r\n const alt = i.type === \"perfectable\" ? -i.alt : -(i.alt + 1);\r\n return interval({ step, alt, oct: i.oct, dir: i.dir }).name;\r\n}\r\n// interval numbers\r\nconst IN = [1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7];\r\n// interval qualities\r\nconst IQ = \"P m M m M P d P m M m M\".split(\" \");\r\n/**\r\n * Get interval name from semitones number. Since there are several interval\r\n * names for the same number, the name it's arbitrary, but deterministic.\r\n *\r\n * @param {Integer} num - the number of semitones (can be negative)\r\n * @return {string} the interval name\r\n * @example\r\n * Interval.fromSemitones(7) // => \"5P\"\r\n * Interval.fromSemitones(-7) // => \"-5P\"\r\n */\r\nfunction fromSemitones(semitones) {\r\n const d = semitones < 0 ? -1 : 1;\r\n const n = Math.abs(semitones);\r\n const c = n % 12;\r\n const o = Math.floor(n / 12);\r\n return d * (IN[c] + 7 * o) + IQ[c];\r\n}\r\n/**\r\n * Find interval between two notes\r\n *\r\n * @example\r\n * Interval.distance(\"C4\", \"G4\"); // => \"5P\"\r\n */\r\nconst distance = distance$1;\r\n/**\r\n * Adds two intervals\r\n *\r\n * @function\r\n * @param {string} interval1\r\n * @param {string} interval2\r\n * @return {string} the added interval name\r\n * @example\r\n * Interval.add(\"3m\", \"5P\") // => \"7m\"\r\n */\r\nconst add = combinator((a, b) => [a[0] + b[0], a[1] + b[1]]);\r\n/**\r\n * Returns a function that adds an interval\r\n *\r\n * @function\r\n * @example\r\n * ['1P', '2M', '3M'].map(Interval.addTo('5P')) // => [\"5P\", \"6M\", \"7M\"]\r\n */\r\nconst addTo = (interval) => (other) => add(interval, other);\r\n/**\r\n * Subtracts two intervals\r\n *\r\n * @function\r\n * @param {string} minuendInterval\r\n * @param {string} subtrahendInterval\r\n * @return {string} the substracted interval name\r\n * @example\r\n * Interval.substract('5P', '3M') // => '3m'\r\n * Interval.substract('3M', '5P') // => '-3m'\r\n */\r\nconst substract = combinator((a, b) => [a[0] - b[0], a[1] - b[1]]);\r\nvar index = {\r\n names,\r\n get,\r\n name,\r\n num,\r\n semitones,\r\n quality,\r\n fromSemitones,\r\n distance,\r\n invert,\r\n simplify,\r\n add,\r\n addTo,\r\n substract\r\n};\r\nfunction combinator(fn) {\r\n return (a, b) => {\r\n const coordA = interval(a).coord;\r\n const coordB = interval(b).coord;\r\n if (coordA && coordB) {\r\n const coord = fn(coordA, coordB);\r\n return coordToInterval(coord).name;\r\n }\r\n };\r\n}\n\nexport default index;\nexport { add, addTo, distance, fromSemitones, get, invert, name, names, num, quality, semitones, simplify, substract };\n//# sourceMappingURL=index.es.js.map\n","import { note } from '@tonaljs/core';\n\nfunction isMidi(arg) {\r\n return +arg >= 0 && +arg <= 127;\r\n}\r\n/**\r\n * Get the note midi number (a number between 0 and 127)\r\n *\r\n * It returns undefined if not valid note name\r\n *\r\n * @function\r\n * @param {string|number} note - the note name or midi number\r\n * @return {Integer} the midi number or undefined if not valid note\r\n * @example\r\n * import { toMidi } from '@tonaljs/midi'\r\n * toMidi(\"C4\") // => 60\r\n * toMidi(60) // => 60\r\n * toMidi('60') // => 60\r\n */\r\nfunction toMidi(note$1) {\r\n if (isMidi(note$1)) {\r\n return +note$1;\r\n }\r\n const n = note(note$1);\r\n return n.empty ? null : n.midi;\r\n}\r\n/**\r\n * Get the frequency in hertzs from midi number\r\n *\r\n * @param {number} midi - the note midi number\r\n * @param {number} [tuning = 440] - A4 tuning frequency in Hz (440 by default)\r\n * @return {number} the frequency or null if not valid note midi\r\n * @example\r\n * import { midiToFreq} from '@tonaljs/midi'\r\n * midiToFreq(69) // => 440\r\n */\r\nfunction midiToFreq(midi, tuning = 440) {\r\n return Math.pow(2, (midi - 69) / 12) * tuning;\r\n}\r\nconst L2 = Math.log(2);\r\nconst L440 = Math.log(440);\r\n/**\r\n * Get the midi number from a frequency in hertz. The midi number can\r\n * contain decimals (with two digits precission)\r\n *\r\n * @param {number} frequency\r\n * @return {number}\r\n * @example\r\n * import { freqToMidi} from '@tonaljs/midi'\r\n * freqToMidi(220)); //=> 57\r\n * freqToMidi(261.62)); //=> 60\r\n * freqToMidi(261)); //=> 59.96\r\n */\r\nfunction freqToMidi(freq) {\r\n const v = (12 * (Math.log(freq) - L440)) / L2 + 69;\r\n return Math.round(v * 100) / 100;\r\n}\r\nconst SHARPS = \"C C# D D# E F F# G G# A A# B\".split(\" \");\r\nconst FLATS = \"C Db D Eb E F Gb G Ab A Bb B\".split(\" \");\r\n/**\r\n * Given a midi number, returns a note name. The altered notes will have\r\n * flats unless explicitly set with the optional `useSharps` parameter.\r\n *\r\n * @function\r\n * @param {number} midi - the midi note number\r\n * @param {Object} options = default: `{ sharps: false, pitchClass: false }`\r\n * @param {boolean} useSharps - (Optional) set to true to use sharps instead of flats\r\n * @return {string} the note name\r\n * @example\r\n * import { midiToNoteName } from '@tonaljs/midi'\r\n * midiToNoteName(61) // => \"Db4\"\r\n * midiToNoteName(61, { pitchClass: true }) // => \"Db\"\r\n * midiToNoteName(61, { sharps: true }) // => \"C#4\"\r\n * midiToNoteName(61, { pitchClass: true, sharps: true }) // => \"C#\"\r\n * // it rounds to nearest note\r\n * midiToNoteName(61.7) // => \"D4\"\r\n */\r\nfunction midiToNoteName(midi, options = {}) {\r\n midi = Math.round(midi);\r\n const pcs = options.sharps === true ? SHARPS : FLATS;\r\n const pc = pcs[midi % 12];\r\n if (options.pitchClass) {\r\n return pc;\r\n }\r\n const o = Math.floor(midi / 12) - 1;\r\n return pc + o;\r\n}\r\nvar index = { isMidi, toMidi, midiToFreq, midiToNoteName, freqToMidi };\n\nexport default index;\nexport { freqToMidi, isMidi, midiToFreq, midiToNoteName, toMidi };\n//# sourceMappingURL=index.es.js.map\n","import { note, transpose as transpose$1, coordToNote } from '@tonaljs/core';\nimport { midiToNoteName } from '@tonaljs/midi';\n\nconst NAMES = [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"];\r\nconst toName = (n) => n.name;\r\nconst onlyNotes = (array) => array.map(note).filter(n => !n.empty);\r\n/**\r\n * Return the natural note names without octave\r\n * @function\r\n * @example\r\n * Note.names(); // => [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"]\r\n */\r\nfunction names(array) {\r\n if (array === undefined) {\r\n return NAMES.slice();\r\n }\r\n else if (!Array.isArray(array)) {\r\n return [];\r\n }\r\n else {\r\n return onlyNotes(array).map(toName);\r\n }\r\n}\r\n/**\r\n * Get a note from a note name\r\n *\r\n * @function\r\n * @example\r\n * Note.get('Bb4') // => { name: \"Bb4\", midi: 70, chroma: 10, ... }\r\n */\r\nconst get = note;\r\n/**\r\n * Get the note name\r\n * @function\r\n */\r\nconst name = (note) => get(note).name;\r\n/**\r\n * Get the note pitch class name\r\n * @function\r\n */\r\nconst pitchClass = (note) => get(note).pc;\r\n/**\r\n * Get the note accidentals\r\n * @function\r\n */\r\nconst accidentals = (note) => get(note).acc;\r\n/**\r\n * Get the note octave\r\n * @function\r\n */\r\nconst octave = (note) => get(note).oct;\r\n/**\r\n * Get the note midi\r\n * @function\r\n */\r\nconst midi = (note) => get(note).midi;\r\n/**\r\n * Get the note midi\r\n * @function\r\n */\r\nconst freq = (note) => get(note).freq;\r\n/**\r\n * Get the note chroma\r\n * @function\r\n */\r\nconst chroma = (note) => get(note).chroma;\r\n/**\r\n * Given a midi number, returns a note name. Uses flats for altered notes.\r\n *\r\n * @function\r\n * @param {number} midi - the midi note number\r\n * @return {string} the note name\r\n * @example\r\n * Note.fromMidi(61) // => \"Db4\"\r\n * Note.fromMidi(61.7) // => \"D4\"\r\n */\r\nfunction fromMidi(midi) {\r\n return midiToNoteName(midi);\r\n}\r\n/**\r\n * Given a midi number, returns a note name. Uses flats for altered notes.\r\n *\r\n * @function\r\n * @param {number} midi - the midi note number\r\n * @return {string} the note name\r\n * @example\r\n * Note.fromMidiSharps(61) // => \"C#4\"\r\n */\r\nfunction fromMidiSharps(midi) {\r\n return midiToNoteName(midi, { sharps: true });\r\n}\r\n/**\r\n * Transpose a note by an interval\r\n */\r\nconst transpose = transpose$1;\r\nconst tr = transpose$1;\r\n/**\r\n * Transpose by an interval.\r\n * @function\r\n * @param {string} interval\r\n * @return {function} a function that transposes by the given interval\r\n * @example\r\n * [\"C\", \"D\", \"E\"].map(Note.transposeBy(\"5P\"));\r\n * // => [\"G\", \"A\", \"B\"]\r\n */\r\nconst transposeBy = (interval) => (note) => transpose(note, interval);\r\nconst trBy = transposeBy;\r\n/**\r\n * Transpose from a note\r\n * @function\r\n * @param {string} note\r\n * @return {function} a function that transposes the the note by an interval\r\n * [\"1P\", \"3M\", \"5P\"].map(Note.transposeFrom(\"C\"));\r\n * // => [\"C\", \"E\", \"G\"]\r\n */\r\nconst transposeFrom = (note) => (interval) => transpose(note, interval);\r\nconst trFrom = transposeFrom;\r\n/**\r\n * Transpose a note by a number of perfect fifths.\r\n *\r\n * @function\r\n * @param {string} note - the note name\r\n * @param {number} fifhts - the number of fifths\r\n * @return {string} the transposed note name\r\n *\r\n * @example\r\n * import { transposeFifths } from \"@tonaljs/note\"\r\n * transposeFifths(\"G4\", 1) // => \"D\"\r\n * [0, 1, 2, 3, 4].map(fifths => transposeFifths(\"C\", fifths)) // => [\"C\", \"G\", \"D\", \"A\", \"E\"]\r\n */\r\nfunction transposeFifths(noteName, fifths) {\r\n const note = get(noteName);\r\n if (note.empty) {\r\n return \"\";\r\n }\r\n const [nFifths, nOcts] = note.coord;\r\n const transposed = nOcts === undefined\r\n ? coordToNote([nFifths + fifths])\r\n : coordToNote([nFifths + fifths, nOcts]);\r\n return transposed.name;\r\n}\r\nconst trFifths = transposeFifths;\r\nconst ascending = (a, b) => a.height - b.height;\r\nconst descending = (a, b) => b.height - a.height;\r\nfunction sortedNames(notes, comparator) {\r\n comparator = comparator || ascending;\r\n return onlyNotes(notes)\r\n .sort(comparator)\r\n .map(toName);\r\n}\r\nfunction sortedUniqNames(notes) {\r\n return sortedNames(notes, ascending).filter((n, i, a) => i === 0 || n !== a[i - 1]);\r\n}\r\n/**\r\n * Simplify a note\r\n *\r\n * @function\r\n * @param {string} note - the note to be simplified\r\n * - sameAccType: default true. Use same kind of accidentals that source\r\n * @return {string} the simplified note or '' if not valid note\r\n * @example\r\n * simplify(\"C##\") // => \"D\"\r\n * simplify(\"C###\") // => \"D#\"\r\n * simplify(\"C###\")\r\n * simplify(\"B#4\") // => \"C5\"\r\n */\r\nconst simplify = nameBuilder(true);\r\n/**\r\n * Get enharmonic of a note\r\n *\r\n * @function\r\n * @param {string} note\r\n * @return {string} the enharmonic note or '' if not valid note\r\n * @example\r\n * Note.enharmonic(\"Db\") // => \"C#\"\r\n * Note.enharmonic(\"C\") // => \"C\"\r\n */\r\nconst enharmonic = nameBuilder(false);\r\nfunction nameBuilder(sameAccidentals) {\r\n return (noteName) => {\r\n const note = get(noteName);\r\n if (note.empty) {\r\n return \"\";\r\n }\r\n const sharps = sameAccidentals ? note.alt > 0 : note.alt < 0;\r\n const pitchClass = note.midi === null;\r\n return midiToNoteName(note.midi || note.chroma, { sharps, pitchClass });\r\n };\r\n}\r\nvar index = {\r\n names,\r\n get,\r\n name,\r\n pitchClass,\r\n accidentals,\r\n octave,\r\n midi,\r\n ascending,\r\n descending,\r\n sortedNames,\r\n sortedUniqNames,\r\n fromMidi,\r\n fromMidiSharps,\r\n freq,\r\n chroma,\r\n transpose,\r\n tr,\r\n transposeBy,\r\n trBy,\r\n transposeFrom,\r\n trFrom,\r\n transposeFifths,\r\n trFifths,\r\n simplify,\r\n enharmonic\r\n};\n\nexport default index;\nexport { accidentals, ascending, chroma, descending, enharmonic, freq, fromMidi, fromMidiSharps, get, midi, name, names, octave, pitchClass, simplify, sortedNames, sortedUniqNames, tr, trBy, trFifths, trFrom, transpose, transposeBy, transposeFifths, transposeFrom };\n//# sourceMappingURL=index.es.js.map\n","import { isPitch, altToAcc, isNamed, deprecate, accToAlt, interval } from '@tonaljs/core';\n\nconst NoRomanNumeral = { empty: true, name: \"\", chordType: \"\" };\r\nconst cache = {};\r\n/**\r\n * Get properties of a roman numeral string\r\n *\r\n * @function\r\n * @param {string} - the roman numeral string (can have type, like: Imaj7)\r\n * @return {Object} - the roman numeral properties\r\n * @param {string} name - the roman numeral (tonic)\r\n * @param {string} type - the chord type\r\n * @param {string} num - the number (1 = I, 2 = II...)\r\n * @param {boolean} major - major or not\r\n *\r\n * @example\r\n * romanNumeral(\"VIIb5\") // => { name: \"VII\", type: \"b5\", num: 7, major: true }\r\n */\r\nfunction get(src) {\r\n return typeof src === \"string\"\r\n ? cache[src] || (cache[src] = parse(src))\r\n : typeof src === \"number\"\r\n ? get(NAMES[src] || \"\")\r\n : isPitch(src)\r\n ? fromPitch(src)\r\n : isNamed(src)\r\n ? get(src.name)\r\n : NoRomanNumeral;\r\n}\r\nconst romanNumeral = deprecate(\"RomanNumeral.romanNumeral\", \"RomanNumeral.get\", get);\r\n/**\r\n * Get roman numeral names\r\n *\r\n * @function\r\n * @param {boolean} [isMajor=true]\r\n * @return {Array}\r\n *\r\n * @example\r\n * names() // => [\"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\"]\r\n */\r\nfunction names(major = true) {\r\n return (major ? NAMES : NAMES_MINOR).slice();\r\n}\r\nfunction fromPitch(pitch) {\r\n return get(altToAcc(pitch.alt) + NAMES[pitch.step]);\r\n}\r\nconst REGEX = /^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;\r\nfunction tokenize(str) {\r\n return (REGEX.exec(str) || [\"\", \"\", \"\", \"\"]);\r\n}\r\nconst ROMANS = \"I II III IV V VI VII\";\r\nconst NAMES = ROMANS.split(\" \");\r\nconst NAMES_MINOR = ROMANS.toLowerCase().split(\" \");\r\nfunction parse(src) {\r\n const [name, acc, roman, chordType] = tokenize(src);\r\n if (!roman) {\r\n return NoRomanNumeral;\r\n }\r\n const upperRoman = roman.toUpperCase();\r\n const step = NAMES.indexOf(upperRoman);\r\n const alt = accToAlt(acc);\r\n const dir = 1;\r\n return {\r\n empty: false,\r\n name,\r\n roman,\r\n interval: interval({ step, alt, dir }).name,\r\n acc,\r\n chordType,\r\n alt,\r\n step,\r\n major: roman === upperRoman,\r\n oct: 0,\r\n dir\r\n };\r\n}\r\nvar index = {\r\n names,\r\n get,\r\n // deprecated\r\n romanNumeral\r\n};\n\nexport default index;\nexport { get, names, tokenize };\n//# sourceMappingURL=index.es.js.map\n","import { transpose, altToAcc, accToAlt, note } from '@tonaljs/core';\nimport { transposeFifths } from '@tonaljs/note';\nimport { get } from '@tonaljs/roman-numeral';\n\nconst mapToScale = (scale) => (symbols, sep = \"\") => symbols.map((symbol, index) => symbol !== \"-\" ? scale[index] + sep + symbol : \"\");\r\nfunction keyScale(gradesLiteral, chordsLiteral, hfLiteral, chordScalesLiteral) {\r\n return (tonic) => {\r\n const grades = gradesLiteral.split(\" \");\r\n const intervals = grades.map(gr => get(gr).interval || \"\");\r\n const scale = intervals.map(interval => transpose(tonic, interval));\r\n const map = mapToScale(scale);\r\n return {\r\n tonic,\r\n grades,\r\n intervals,\r\n scale,\r\n chords: map(chordsLiteral.split(\" \")),\r\n chordsHarmonicFunction: hfLiteral.split(\" \"),\r\n chordScales: map(chordScalesLiteral.split(\",\"), \" \")\r\n };\r\n };\r\n}\r\nconst distInFifths = (from, to) => {\r\n const f = note(from);\r\n const t = note(to);\r\n return f.empty || t.empty ? 0 : t.coord[0] - f.coord[0];\r\n};\r\nconst MajorScale = keyScale(\"I II III IV V VI VII\", \"maj7 m7 m7 maj7 7 m7 m7b5\", \"T SD T SD D T D\", \"major,dorian,phrygian,lydian,mixolydian,minor,locrian\");\r\nconst NaturalScale = keyScale(\"I II bIII IV V bVI bVII\", \"m7 m7b5 maj7 m7 m7 maj7 7\", \"T SD T SD D SD SD\", \"minor,locrian,major,dorian,phrygian,lydian,mixolydian\");\r\nconst HarmonicScale = keyScale(\"I II bIII IV V bVI VII\", \"mmaj7 m7b5 +maj7 m7 7 maj7 mo7\", \"T SD T SD D SD D\", \"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian\");\r\nconst MelodicScale = keyScale(\"I II bIII IV V VI VII\", \"m6 m7 +maj7 7 7 m7b5 m7b5\", \"T SD T SD D - -\", \"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered\");\r\n/**\r\n * Get a major key properties in a given tonic\r\n * @param tonic\r\n */\r\nfunction majorKey(tonic) {\r\n const keyScale = MajorScale(tonic);\r\n const alteration = distInFifths(\"C\", tonic);\r\n const map = mapToScale(keyScale.scale);\r\n return {\r\n ...keyScale,\r\n type: \"major\",\r\n minorRelative: transpose(tonic, \"-3m\"),\r\n alteration,\r\n keySignature: altToAcc(alteration),\r\n secondaryDominants: map(\"- VI7 VII7 I7 II7 III7 -\".split(\" \")),\r\n secondaryDominantsMinorRelative: map(\"- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -\".split(\" \")),\r\n substituteDominants: map(\"- bIII7 IV7 bV7 bVI7 bVII7 -\".split(\" \")),\r\n substituteDominantsMinorRelative: map(\"- IIIm7 Im7 IIbm7 VIm7 IVm7 -\".split(\" \"))\r\n };\r\n}\r\n/**\r\n * Get minor key properties in a given tonic\r\n * @param tonic\r\n */\r\nfunction minorKey(tonic) {\r\n const alteration = distInFifths(\"C\", tonic) - 3;\r\n return {\r\n type: \"minor\",\r\n tonic,\r\n relativeMajor: transpose(tonic, \"3m\"),\r\n alteration,\r\n keySignature: altToAcc(alteration),\r\n natural: NaturalScale(tonic),\r\n harmonic: HarmonicScale(tonic),\r\n melodic: MelodicScale(tonic)\r\n };\r\n}\r\n/**\r\n * Given a key signature, returns the tonic of the major key\r\n * @param sigature\r\n * @example\r\n * majorTonicFromKeySignature('###') // => 'A'\r\n */\r\nfunction majorTonicFromKeySignature(sig) {\r\n if (typeof sig === \"number\") {\r\n return transposeFifths(\"C\", sig);\r\n }\r\n else if (typeof sig === \"string\" && /^b+|#+$/.test(sig)) {\r\n return transposeFifths(\"C\", accToAlt(sig));\r\n }\r\n return null;\r\n}\r\nvar index = { majorKey, majorTonicFromKeySignature, minorKey };\n\nexport default index;\nexport { majorKey, majorTonicFromKeySignature, minorKey };\n//# sourceMappingURL=index.es.js.map\n","import { deprecate } from '@tonaljs/core';\nimport { chromaToIntervals, EmptyPcset } from '@tonaljs/pcset';\n\nconst DATA = [\r\n [0, 2773, 0, \"ionian\", \"\", \"Maj7\", \"major\"],\r\n [1, 2902, 2, \"dorian\", \"m\", \"m7\"],\r\n [2, 3418, 4, \"phrygian\", \"m\", \"m7\"],\r\n [3, 2741, -1, \"lydian\", \"\", \"Maj7\"],\r\n [4, 2774, 1, \"mixolydian\", \"\", \"7\"],\r\n [5, 2906, 3, \"aeolian\", \"m\", \"m7\", \"minor\"],\r\n [6, 3434, 5, \"locrian\", \"dim\", \"m7b5\"]\r\n];\n\nconst NoMode = {\r\n ...EmptyPcset,\r\n name: \"\",\r\n alt: 0,\r\n modeNum: NaN,\r\n triad: \"\",\r\n seventh: \"\",\r\n aliases: []\r\n};\r\nconst modes = DATA.map(toMode);\r\nconst index = {};\r\nmodes.forEach(mode => {\r\n index[mode.name] = mode;\r\n mode.aliases.forEach(alias => {\r\n index[alias] = mode;\r\n });\r\n});\r\n/**\r\n * Get a Mode by it's name\r\n *\r\n * @example\r\n * get('dorian')\r\n * // =>\r\n * // {\r\n * // intervals: [ '1P', '2M', '3m', '4P', '5P', '6M', '7m' ],\r\n * // modeNum: 1,\r\n * // chroma: '101101010110',\r\n * // normalized: '101101010110',\r\n * // name: 'dorian',\r\n * // setNum: 2902,\r\n * // alt: 2,\r\n * // triad: 'm',\r\n * // seventh: 'm7',\r\n * // aliases: []\r\n * // }\r\n */\r\nfunction get(name) {\r\n return typeof name === \"string\"\r\n ? index[name.toLowerCase()] || NoMode\r\n : name && name.name\r\n ? get(name.name)\r\n : NoMode;\r\n}\r\nconst mode = deprecate(\"Mode.mode\", \"Mode.get\", get);\r\n/**\r\n * Get a list of all modes\r\n */\r\nfunction all() {\r\n return modes.slice();\r\n}\r\nconst entries = deprecate(\"Mode.mode\", \"Mode.all\", all);\r\n/**\r\n * Get a list of all mode names\r\n */\r\nfunction names() {\r\n return modes.map(mode => mode.name);\r\n}\r\nfunction toMode(mode) {\r\n const [modeNum, setNum, alt, name, triad, seventh, alias] = mode;\r\n const aliases = alias ? [alias] : [];\r\n const chroma = Number(setNum).toString(2);\r\n const intervals = chromaToIntervals(chroma);\r\n return {\r\n empty: false,\r\n intervals,\r\n modeNum,\r\n chroma,\r\n normalized: chroma,\r\n name,\r\n setNum,\r\n alt,\r\n triad,\r\n seventh,\r\n aliases\r\n };\r\n}\r\nvar index$1 = {\r\n get,\r\n names,\r\n all,\r\n // deprecated\r\n entries,\r\n mode\r\n};\n\nexport default index$1;\nexport { all, entries, get, mode, names };\n//# sourceMappingURL=index.es.js.map\n","import { tokenize } from '@tonaljs/chord';\nimport { transpose, interval, distance } from '@tonaljs/core';\nimport { get } from '@tonaljs/roman-numeral';\n\n/**\r\n * Given a tonic and a chord list expressed with roman numeral notation\r\n * returns the progression expressed with leadsheet chords symbols notation\r\n * @example\r\n * fromRomanNumerals(\"C\", [\"I\", \"IIm7\", \"V7\"]);\r\n * // => [\"C\", \"Dm7\", \"G7\"]\r\n */\r\nfunction fromRomanNumerals(tonic, chords) {\r\n const romanNumerals = chords.map(get);\r\n return romanNumerals.map(rn => transpose(tonic, interval(rn)) + rn.chordType);\r\n}\r\n/**\r\n * Given a tonic and a chord list with leadsheet symbols notation,\r\n * return the chord list with roman numeral notation\r\n * @example\r\n * toRomanNumerals(\"C\", [\"CMaj7\", \"Dm7\", \"G7\"]);\r\n * // => [\"IMaj7\", \"IIm7\", \"V7\"]\r\n */\r\nfunction toRomanNumerals(tonic, chords) {\r\n return chords.map(chord => {\r\n const [note, chordType] = tokenize(chord);\r\n const intervalName = distance(tonic, note);\r\n const roman = get(interval(intervalName));\r\n return roman.name + chordType;\r\n });\r\n}\r\nvar index = { fromRomanNumerals, toRomanNumerals };\n\nexport default index;\nexport { fromRomanNumerals, toRomanNumerals };\n//# sourceMappingURL=index.es.js.map\n","import { compact, range } from '@tonaljs/collection';\nimport { toMidi, midiToNoteName } from '@tonaljs/midi';\n\n/**\r\n * Create a numeric range. You supply a list of notes or numbers and it will\r\n * be connected to create complex ranges.\r\n *\r\n * @param {Array} array - the list of notes or numbers used\r\n * @return {Array} an array of numbers or empty array if not valid parameters\r\n *\r\n * @example\r\n * numeric([\"C5\", \"C4\"]) // => [ 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60 ]\r\n * // it works midi notes\r\n * numeric([10, 5]) // => [ 10, 9, 8, 7, 6, 5 ]\r\n * // complex range\r\n * numeric([\"C4\", \"E4\", \"Bb3\"]) // => [60, 61, 62, 63, 64, 63, 62, 61, 60, 59, 58]\r\n */\r\nfunction numeric(notes) {\r\n const midi = compact(notes.map(toMidi));\r\n if (!notes.length || midi.length !== notes.length) {\r\n // there is no valid notes\r\n return [];\r\n }\r\n return midi.reduce((result, note) => {\r\n const last = result[result.length - 1];\r\n return result.concat(range(last, note).slice(1));\r\n }, [midi[0]]);\r\n}\r\n/**\r\n * Create a range of chromatic notes. The altered notes will use flats.\r\n *\r\n * @function\r\n * @param {String|Array} list - the list of notes or midi note numbers\r\n * @return {Array} an array of note names\r\n *\r\n * @example\r\n * Range.chromatic(\"C2 E2 D2\") // => [\"C2\", \"Db2\", \"D2\", \"Eb2\", \"E2\", \"Eb2\", \"D2\"]\r\n * // with sharps\r\n * Range.chromatic(\"C2 C3\", true) // => [ \"C2\", \"C#2\", \"D2\", \"D#2\", \"E2\", \"F2\", \"F#2\", \"G2\", \"G#2\", \"A2\", \"A#2\", \"B2\", \"C3\" ]\r\n */\r\nfunction chromatic(notes, options) {\r\n return numeric(notes).map(midi => midiToNoteName(midi, options));\r\n}\r\nvar index = { numeric, chromatic };\n\nexport default index;\nexport { chromatic, numeric };\n//# sourceMappingURL=index.es.js.map\n","import { all } from '@tonaljs/chord-type';\nimport { rotate } from '@tonaljs/collection';\nimport { note, transpose, deprecate } from '@tonaljs/core';\nimport { sortedUniqNames } from '@tonaljs/note';\nimport { isSubsetOf, isSupersetOf, modes } from '@tonaljs/pcset';\nimport { names as names$1, get as get$1, all as all$1 } from '@tonaljs/scale-type';\n\n/**\r\n * References:\r\n * - https://www.researchgate.net/publication/327567188_An_Algorithm_for_Spelling_the_Pitches_of_Any_Musical_Scale\r\n * @module scale\r\n */\r\nconst NoScale = {\r\n empty: true,\r\n name: \"\",\r\n type: \"\",\r\n tonic: null,\r\n setNum: NaN,\r\n chroma: \"\",\r\n normalized: \"\",\r\n aliases: [],\r\n notes: [],\r\n intervals: []\r\n};\r\n/**\r\n * Given a string with a scale name and (optionally) a tonic, split\r\n * that components.\r\n *\r\n * It retuns an array with the form [ name, tonic ] where tonic can be a\r\n * note name or null and name can be any arbitrary string\r\n * (this function doesn\"t check if that scale name exists)\r\n *\r\n * @function\r\n * @param {string} name - the scale name\r\n * @return {Array} an array [tonic, name]\r\n * @example\r\n * tokenize(\"C mixolydean\") // => [\"C\", \"mixolydean\"]\r\n * tokenize(\"anything is valid\") // => [\"\", \"anything is valid\"]\r\n * tokenize() // => [\"\", \"\"]\r\n */\r\nfunction tokenize(name) {\r\n if (typeof name !== \"string\") {\r\n return [\"\", \"\"];\r\n }\r\n const i = name.indexOf(\" \");\r\n const tonic = note(name.substring(0, i));\r\n if (tonic.empty) {\r\n const n = note(name);\r\n return n.empty ? [\"\", name] : [n.name, \"\"];\r\n }\r\n const type = name.substring(tonic.name.length + 1);\r\n return [tonic.name, type.length ? type : \"\"];\r\n}\r\n/**\r\n * Get all scale names\r\n * @function\r\n */\r\nconst names = names$1;\r\n/**\r\n * Get a Scale from a scale name.\r\n */\r\nfunction get(src) {\r\n const tokens = Array.isArray(src) ? src : tokenize(src);\r\n const tonic = note(tokens[0]).name;\r\n const st = get$1(tokens[1]);\r\n if (st.empty) {\r\n return NoScale;\r\n }\r\n const type = st.name;\r\n const notes = tonic\r\n ? st.intervals.map(i => transpose(tonic, i))\r\n : [];\r\n const name = tonic ? tonic + \" \" + type : type;\r\n return { ...st, name, type, tonic, notes };\r\n}\r\nconst scale = deprecate(\"Scale.scale\", \"Scale.get\", get);\r\n/**\r\n * Get all chords that fits a given scale\r\n *\r\n * @function\r\n * @param {string} name - the scale name\r\n * @return {Array} - the chord names\r\n *\r\n * @example\r\n * scaleChords(\"pentatonic\") // => [\"5\", \"64\", \"M\", \"M6\", \"Madd9\", \"Msus2\"]\r\n */\r\nfunction scaleChords(name) {\r\n const s = get(name);\r\n const inScale = isSubsetOf(s.chroma);\r\n return all()\r\n .filter(chord => inScale(chord.chroma))\r\n .map(chord => chord.aliases[0]);\r\n}\r\n/**\r\n * Get all scales names that are a superset of the given one\r\n * (has the same notes and at least one more)\r\n *\r\n * @function\r\n * @param {string} name\r\n * @return {Array} a list of scale names\r\n * @example\r\n * extended(\"major\") // => [\"bebop\", \"bebop dominant\", \"bebop major\", \"chromatic\", \"ichikosucho\"]\r\n */\r\nfunction extended(name) {\r\n const s = get(name);\r\n const isSuperset = isSupersetOf(s.chroma);\r\n return all$1()\r\n .filter(scale => isSuperset(scale.chroma))\r\n .map(scale => scale.name);\r\n}\r\n/**\r\n * Find all scales names that are a subset of the given one\r\n * (has less notes but all from the given scale)\r\n *\r\n * @function\r\n * @param {string} name\r\n * @return {Array} a list of scale names\r\n *\r\n * @example\r\n * reduced(\"major\") // => [\"ionian pentatonic\", \"major pentatonic\", \"ritusen\"]\r\n */\r\nfunction reduced(name) {\r\n const isSubset = isSubsetOf(get(name).chroma);\r\n return all$1()\r\n .filter(scale => isSubset(scale.chroma))\r\n .map(scale => scale.name);\r\n}\r\n/**\r\n * Given an array of notes, return the scale: a pitch class set starting from\r\n * the first note of the array\r\n *\r\n * @function\r\n * @param {string[]} notes\r\n * @return {string[]} pitch classes with same tonic\r\n * @example\r\n * scaleNotes(['C4', 'c3', 'C5', 'C4', 'c4']) // => [\"C\"]\r\n * scaleNotes(['D4', 'c#5', 'A5', 'F#6']) // => [\"D\", \"F#\", \"A\", \"C#\"]\r\n */\r\nfunction scaleNotes(notes) {\r\n const pcset = notes.map(n => note(n).pc).filter(x => x);\r\n const tonic = pcset[0];\r\n const scale = sortedUniqNames(pcset);\r\n return rotate(scale.indexOf(tonic), scale);\r\n}\r\n/**\r\n * Find mode names of a scale\r\n *\r\n * @function\r\n * @param {string} name - scale name\r\n * @example\r\n * modeNames(\"C pentatonic\") // => [\r\n * [\"C\", \"major pentatonic\"],\r\n * [\"D\", \"egyptian\"],\r\n * [\"E\", \"malkos raga\"],\r\n * [\"G\", \"ritusen\"],\r\n * [\"A\", \"minor pentatonic\"]\r\n * ]\r\n */\r\nfunction modeNames(name) {\r\n const s = get(name);\r\n if (s.empty) {\r\n return [];\r\n }\r\n const tonics = s.tonic ? s.notes : s.intervals;\r\n return modes(s.chroma)\r\n .map((chroma, i) => {\r\n const modeName = get(chroma).name;\r\n return modeName ? [tonics[i], modeName] : [\"\", \"\"];\r\n })\r\n .filter(x => x[0]);\r\n}\r\nvar index = {\r\n get,\r\n names,\r\n extended,\r\n modeNames,\r\n reduced,\r\n scaleChords,\r\n scaleNotes,\r\n tokenize,\r\n // deprecated\r\n scale\r\n};\n\nexport default index;\nexport { extended, get, modeNames, names, reduced, scale, scaleChords, scaleNotes, tokenize };\n//# sourceMappingURL=index.es.js.map\n","// CONSTANTS\r\nconst NONE = {\r\n empty: true,\r\n name: \"\",\r\n upper: undefined,\r\n lower: undefined,\r\n type: undefined,\r\n additive: []\r\n};\r\nconst NAMES = [\"4/4\", \"3/4\", \"2/4\", \"2/2\", \"12/8\", \"9/8\", \"6/8\", \"3/8\"];\r\n// PUBLIC API\r\nfunction names() {\r\n return NAMES.slice();\r\n}\r\nconst REGEX = /^(\\d?\\d(?:\\+\\d)*)\\/(\\d)$/;\r\nconst CACHE = new Map();\r\nfunction get(literal) {\r\n const cached = CACHE.get(literal);\r\n if (cached) {\r\n return cached;\r\n }\r\n const ts = build(parse(literal));\r\n CACHE.set(literal, ts);\r\n return ts;\r\n}\r\nfunction parse(literal) {\r\n if (typeof literal === \"string\") {\r\n const [_, up, low] = REGEX.exec(literal) || [];\r\n return parse([up, low]);\r\n }\r\n const [up, down] = literal;\r\n const denominator = +down;\r\n if (typeof up === \"number\") {\r\n return [up, denominator];\r\n }\r\n const list = up.split(\"+\").map(n => +n);\r\n return list.length === 1 ? [list[0], denominator] : [list, denominator];\r\n}\r\nvar index = { names, parse, get };\r\n// PRIVATE\r\nfunction build([up, down]) {\r\n const upper = Array.isArray(up) ? up.reduce((a, b) => a + b, 0) : up;\r\n const lower = down;\r\n if (upper === 0 || lower === 0) {\r\n return NONE;\r\n }\r\n const name = Array.isArray(up) ? `${up.join(\"+\")}/${down}` : `${up}/${down}`;\r\n const additive = Array.isArray(up) ? up : [];\r\n const type = lower === 4 || lower === 2\r\n ? \"simple\"\r\n : lower === 8 && upper % 3 === 0\r\n ? \"compound\"\r\n : \"irregular\";\r\n return {\r\n empty: false,\r\n name,\r\n type,\r\n upper,\r\n lower,\r\n additive\r\n };\r\n}\n\nexport default index;\nexport { get, names, parse };\n//# sourceMappingURL=index.es.js.map\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tonaljs/abc-notation'), require('@tonaljs/array'), require('@tonaljs/chord'), require('@tonaljs/chord-type'), require('@tonaljs/collection'), require('@tonaljs/core'), require('@tonaljs/duration-value'), require('@tonaljs/interval'), require('@tonaljs/key'), require('@tonaljs/midi'), require('@tonaljs/mode'), require('@tonaljs/note'), require('@tonaljs/pcset'), require('@tonaljs/progression'), require('@tonaljs/range'), require('@tonaljs/roman-numeral'), require('@tonaljs/scale'), require('@tonaljs/scale-type'), require('@tonaljs/time-signature')) :\n typeof define === 'function' && define.amd ? define(['exports', '@tonaljs/abc-notation', '@tonaljs/array', '@tonaljs/chord', '@tonaljs/chord-type', '@tonaljs/collection', '@tonaljs/core', '@tonaljs/duration-value', '@tonaljs/interval', '@tonaljs/key', '@tonaljs/midi', '@tonaljs/mode', '@tonaljs/note', '@tonaljs/pcset', '@tonaljs/progression', '@tonaljs/range', '@tonaljs/roman-numeral', '@tonaljs/scale', '@tonaljs/scale-type', '@tonaljs/time-signature'], factory) :\n (global = global || self, factory(global.Tonal = {}, global.abcNotation, global.array, global.chord, global.ChordType, global.collection, global.Core, global.durationValue, global.interval, global.key, global.midi, global.mode, global.note, global.Pcset, global.progression, global.range, global.romanNumeral, global.scale, global.ScaleType, global.timeSignature));\n}(this, (function (exports, abcNotation, array, chord, ChordType, collection, Core, durationValue, interval, key, midi, mode, note, Pcset, progression, range, romanNumeral, scale, ScaleType, timeSignature) { 'use strict';\n\n abcNotation = abcNotation && Object.prototype.hasOwnProperty.call(abcNotation, 'default') ? abcNotation['default'] : abcNotation;\n chord = chord && Object.prototype.hasOwnProperty.call(chord, 'default') ? chord['default'] : chord;\n ChordType = ChordType && Object.prototype.hasOwnProperty.call(ChordType, 'default') ? ChordType['default'] : ChordType;\n collection = collection && Object.prototype.hasOwnProperty.call(collection, 'default') ? collection['default'] : collection;\n durationValue = durationValue && Object.prototype.hasOwnProperty.call(durationValue, 'default') ? durationValue['default'] : durationValue;\n interval = interval && Object.prototype.hasOwnProperty.call(interval, 'default') ? interval['default'] : interval;\n key = key && Object.prototype.hasOwnProperty.call(key, 'default') ? key['default'] : key;\n midi = midi && Object.prototype.hasOwnProperty.call(midi, 'default') ? midi['default'] : midi;\n mode = mode && Object.prototype.hasOwnProperty.call(mode, 'default') ? mode['default'] : mode;\n note = note && Object.prototype.hasOwnProperty.call(note, 'default') ? note['default'] : note;\n Pcset = Pcset && Object.prototype.hasOwnProperty.call(Pcset, 'default') ? Pcset['default'] : Pcset;\n progression = progression && Object.prototype.hasOwnProperty.call(progression, 'default') ? progression['default'] : progression;\n range = range && Object.prototype.hasOwnProperty.call(range, 'default') ? range['default'] : range;\n romanNumeral = romanNumeral && Object.prototype.hasOwnProperty.call(romanNumeral, 'default') ? romanNumeral['default'] : romanNumeral;\n scale = scale && Object.prototype.hasOwnProperty.call(scale, 'default') ? scale['default'] : scale;\n ScaleType = ScaleType && Object.prototype.hasOwnProperty.call(ScaleType, 'default') ? ScaleType['default'] : ScaleType;\n timeSignature = timeSignature && Object.prototype.hasOwnProperty.call(timeSignature, 'default') ? timeSignature['default'] : timeSignature;\n\n // deprecated (backwards compatibility)\r\n var Tonal = Core;\r\n var PcSet = Pcset;\r\n var ChordDictionary = ChordType;\r\n var ScaleDictionary = ScaleType;\n\n Object.keys(Core).forEach(function (k) {\n if (k !== 'default') Object.defineProperty(exports, k, {\n enumerable: true,\n get: function () {\n return Core[k];\n }\n });\n });\n exports.AbcNotation = abcNotation;\n exports.Array = array;\n exports.Chord = chord;\n exports.ChordType = ChordType;\n exports.Collection = collection;\n exports.Core = Core;\n exports.DurationValue = durationValue;\n exports.Interval = interval;\n exports.Key = key;\n exports.Midi = midi;\n exports.Mode = mode;\n exports.Note = note;\n exports.Pcset = Pcset;\n exports.Progression = progression;\n exports.Range = range;\n exports.RomanNumeral = romanNumeral;\n exports.Scale = scale;\n exports.ScaleType = ScaleType;\n exports.TimeSignature = timeSignature;\n exports.ChordDictionary = ChordDictionary;\n exports.PcSet = PcSet;\n exports.ScaleDictionary = ScaleDictionary;\n exports.Tonal = Tonal;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=index.js.map\n"],"names":["fillStr","s","n","Array","Math","abs","join","deprecate","original","alternative","fn","args","console","warn","apply","this","isNamed","src","name","isPitch","pitch","step","alt","FIFTHS","STEPS_TO_OCTS","map","fifths","floor","encode","oct","dir","f","undefined","FIFTHS_TO_STEPS","decode","coord","o","i","unaltered","NoNote","empty","pc","acc","cache","Map","stepToLetter","charAt","altToAcc","accToAlt","length","note","cached","get","value","noteName","tokens","tokenizeNote","letter","octStr","charCodeAt","chroma","SEMI","height","midi","freq","pow","parse","props","pitchName","set","REGEX","str","m","exec","toUpperCase","replace","coordToNote","noteCoord","NoInterval","REGEX$1","RegExp","tokenizeInterval","cache$1","interval","num","q","t","type","simple","test","qToAlt","semitones","SIZES","parse$1","altToQ","pitchName$1","coordToInterval","transpose","intervalName","note$1","interval$1","intervalCoord","distance","fromNote","toNote","from","to","fcoord","tcoord","character","times","tokenize","abcToScientificNotation","a","scientificToAbcNotation","toLowerCase","index","transpose$1","distance$1","sortedNoteNames","notes","filter","sort","b","arr","permutations","slice","reduce","perm","concat","e","pos","newPerm","splice","ascR","descR","len","rnd","random","range","rotate","compact","EmptyPcset","setNum","normalized","intervals","setNumToChroma","Number","toString","chromaToNumber","parseInt","isChroma","[object Object]","isArray","binary","listToChroma","isPcset","normalizedNum","split","_","chromaRotations","chromaToIntervals","chromaToPcset","pcset","IVLS","push","modes","normalize","r","isSubsetOf","isSupersetOf","isNoteIncludedIn","chromas","isEqual","s1","s2","isIncluded","NoChordType","quality","aliases","dictionary","chordType","all","entries","add","fullName","has","indexOf","getQuality","chord","get$1","forEach","alias","addAlias","ivls","names","index$1","x","symbols","removeAll","keys","Object","NotFound","weight","NoScaleType","scale","scaleType","NoChord","tonic","NaN","NUM_TYPES","findChord","detect","source","tonicChroma","pcToName","record","namedSet","mode","chordName","baseNote","findExactMatches","chordScales","isChordIncluded","extended","isSuperset","all$1","reduced","isSubset","VALUES","denominator","shorthand","dots","fraction","NoDuration","base","find","dur","includes","numerator","calcDots","duration","shorthands","IN","IQ","combinator","substract","fromSemitones","d","c","invert","simplify","addTo","other","coordA","coordB","isMidi","arg","toMidi","L2","log","L440","SHARPS","FLATS","midiToNoteName","options","round","sharps","pitchClass","midiToFreq","tuning","freqToMidi","v","NAMES","toName","onlyNotes","array","tr","transposeBy","trBy","transposeFrom","trFrom","transposeFifths","nFifths","nOcts","trFifths","ascending","sortedNames","comparator","sortedUniqNames","nameBuilder","enharmonic","sameAccidentals","accidentals","octave","descending","fromMidi","fromMidiSharps","NoRomanNumeral","roman","upperRoman","major","romanNumeral","ROMANS","NAMES_MINOR","mapToScale","sep","symbol","keyScale","gradesLiteral","chordsLiteral","hfLiteral","chordScalesLiteral","grades","gr","chords","chordsHarmonicFunction","distInFifths","MajorScale","NaturalScale","HarmonicScale","MelodicScale","majorKey","alteration","minorRelative","keySignature","secondaryDominants","secondaryDominantsMinorRelative","substituteDominants","substituteDominantsMinorRelative","majorTonicFromKeySignature","sig","minorKey","relativeMajor","natural","harmonic","melodic","NoMode","modeNum","triad","seventh","fromRomanNumerals","rn","toRomanNumerals","numeric","result","last","chromatic","NoScale","substring","st","names$1","modeNames","tonics","modeName","scaleChords","inScale","scaleNotes","NONE","upper","lower","additive","CACHE","literal","up","low","down","list","ts","build","exports","abcNotation","ChordType","collection","Core","durationValue","key","Pcset","progression","ScaleType","timeSignature","prototype","hasOwnProperty","call","Tonal","PcSet","ChordDictionary","ScaleDictionary","k","defineProperty","enumerable","AbcNotation","Chord","Collection","DurationValue","Interval","Key","Midi","Mode","Note","Progression","Range","RomanNumeral","Scale","TimeSignature","factory","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tonal.min.js","sources":["../../core/dist/index.es.js","../../abc-notation/dist/index.es.js","../../array/dist/index.es.js","../../collection/dist/index.es.js","../../pcset/dist/index.es.js","../../chord-type/dist/index.es.js","../../chord-detect/dist/index.es.js","../../scale-type/dist/index.es.js","../../chord/dist/index.es.js","../../duration-value/dist/index.es.js","../../interval/dist/index.es.js","../../midi/dist/index.es.js","../../note/dist/index.es.js","../../roman-numeral/dist/index.es.js","../../key/dist/index.es.js","../../mode/dist/index.es.js","../../progression/dist/index.es.js","../../range/dist/index.es.js","../../scale/dist/index.es.js","../../time-signature/dist/index.es.js","../dist/index.js"],"sourcesContent":["/**\r\n * Fill a string with a repeated character\r\n *\r\n * @param character\r\n * @param repetition\r\n */\r\nconst fillStr = (s, n) => Array(Math.abs(n) + 1).join(s);\r\nfunction deprecate(original, alternative, fn) {\r\n return function (...args) {\r\n // tslint:disable-next-line\r\n console.warn(`${original} is deprecated. Use ${alternative}.`);\r\n return fn.apply(this, args);\r\n };\r\n}\n\nfunction isNamed(src) {\r\n return src !== null && typeof src === \"object\" && typeof src.name === \"string\"\r\n ? true\r\n : false;\r\n}\n\nfunction isPitch(pitch) {\r\n return pitch !== null &&\r\n typeof pitch === \"object\" &&\r\n typeof pitch.step === \"number\" &&\r\n typeof pitch.alt === \"number\"\r\n ? true\r\n : false;\r\n}\r\n// The number of fifths of [C, D, E, F, G, A, B]\r\nconst FIFTHS = [0, 2, 4, -1, 1, 3, 5];\r\n// The number of octaves it span each step\r\nconst STEPS_TO_OCTS = FIFTHS.map((fifths) => Math.floor((fifths * 7) / 12));\r\nfunction encode(pitch) {\r\n const { step, alt, oct, dir = 1 } = pitch;\r\n const f = FIFTHS[step] + 7 * alt;\r\n if (oct === undefined) {\r\n return [dir * f];\r\n }\r\n const o = oct - STEPS_TO_OCTS[step] - 4 * alt;\r\n return [dir * f, dir * o];\r\n}\r\n// We need to get the steps from fifths\r\n// Fifths for CDEFGAB are [ 0, 2, 4, -1, 1, 3, 5 ]\r\n// We add 1 to fifths to avoid negative numbers, so:\r\n// for [\"F\", \"C\", \"G\", \"D\", \"A\", \"E\", \"B\"] we have:\r\nconst FIFTHS_TO_STEPS = [3, 0, 4, 1, 5, 2, 6];\r\nfunction decode(coord) {\r\n const [f, o, dir] = coord;\r\n const step = FIFTHS_TO_STEPS[unaltered(f)];\r\n const alt = Math.floor((f + 1) / 7);\r\n if (o === undefined) {\r\n return { step, alt, dir };\r\n }\r\n const oct = o + 4 * alt + STEPS_TO_OCTS[step];\r\n return { step, alt, oct, dir };\r\n}\r\n// Return the number of fifths as if it were unaltered\r\nfunction unaltered(f) {\r\n const i = (f + 1) % 7;\r\n return i < 0 ? 7 + i : i;\r\n}\n\nconst NoNote = { empty: true, name: \"\", pc: \"\", acc: \"\" };\r\nconst cache = new Map();\r\nconst stepToLetter = (step) => \"CDEFGAB\".charAt(step);\r\nconst altToAcc = (alt) => alt < 0 ? fillStr(\"b\", -alt) : fillStr(\"#\", alt);\r\nconst accToAlt = (acc) => acc[0] === \"b\" ? -acc.length : acc.length;\r\n/**\r\n * Given a note literal (a note name or a note object), returns the Note object\r\n * @example\r\n * note('Bb4') // => { name: \"Bb4\", midi: 70, chroma: 10, ... }\r\n */\r\nfunction note(src) {\r\n const cached = cache.get(src);\r\n if (cached) {\r\n return cached;\r\n }\r\n const value = typeof src === \"string\"\r\n ? parse(src)\r\n : isPitch(src)\r\n ? note(pitchName(src))\r\n : isNamed(src)\r\n ? note(src.name)\r\n : NoNote;\r\n cache.set(src, value);\r\n return value;\r\n}\r\nconst REGEX = /^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)$/;\r\n/**\r\n * @private\r\n */\r\nfunction tokenizeNote(str) {\r\n const m = REGEX.exec(str);\r\n return [m[1].toUpperCase(), m[2].replace(/x/g, \"##\"), m[3], m[4]];\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction coordToNote(noteCoord) {\r\n return note(decode(noteCoord));\r\n}\r\nconst SEMI = [0, 2, 4, 5, 7, 9, 11];\r\nfunction parse(noteName) {\r\n const tokens = tokenizeNote(noteName);\r\n if (tokens[0] === \"\" || tokens[3] !== \"\") {\r\n return NoNote;\r\n }\r\n const letter = tokens[0];\r\n const acc = tokens[1];\r\n const octStr = tokens[2];\r\n const step = (letter.charCodeAt(0) + 3) % 7;\r\n const alt = accToAlt(acc);\r\n const oct = octStr.length ? +octStr : undefined;\r\n const coord = encode({ step, alt, oct });\r\n const name = letter + acc + octStr;\r\n const pc = letter + acc;\r\n const chroma = (SEMI[step] + alt + 120) % 12;\r\n const o = oct === undefined ? -100 : oct;\r\n const height = SEMI[step] + alt + 12 * (o + 1);\r\n const midi = height >= 0 && height <= 127 ? height : null;\r\n const freq = oct === undefined ? null : Math.pow(2, (height - 69) / 12) * 440;\r\n return {\r\n empty: false,\r\n acc,\r\n alt,\r\n chroma,\r\n coord,\r\n freq,\r\n height,\r\n letter,\r\n midi,\r\n name,\r\n oct,\r\n pc,\r\n step\r\n };\r\n}\r\nfunction pitchName(props) {\r\n const { step, alt, oct } = props;\r\n const letter = stepToLetter(step);\r\n if (!letter) {\r\n return \"\";\r\n }\r\n const pc = letter + altToAcc(alt);\r\n return oct || oct === 0 ? pc + oct : pc;\r\n}\n\nconst NoInterval = { empty: true, name: \"\", acc: \"\" };\r\n// shorthand tonal notation (with quality after number)\r\nconst INTERVAL_TONAL_REGEX = \"([-+]?\\\\d+)(d{1,4}|m|M|P|A{1,4})\";\r\n// standard shorthand notation (with quality before number)\r\nconst INTERVAL_SHORTHAND_REGEX = \"(AA|A|P|M|m|d|dd)([-+]?\\\\d+)\";\r\nconst REGEX$1 = new RegExp(\"^\" + INTERVAL_TONAL_REGEX + \"|\" + INTERVAL_SHORTHAND_REGEX + \"$\");\r\n/**\r\n * @private\r\n */\r\nfunction tokenizeInterval(str) {\r\n const m = REGEX$1.exec(`${str}`);\r\n if (m === null) {\r\n return [\"\", \"\"];\r\n }\r\n return m[1] ? [m[1], m[2]] : [m[4], m[3]];\r\n}\r\nconst cache$1 = {};\r\n/**\r\n * Get interval properties. It returns an object with:\r\n *\r\n * - name: the interval name\r\n * - num: the interval number\r\n * - type: 'perfectable' or 'majorable'\r\n * - q: the interval quality (d, m, M, A)\r\n * - dir: interval direction (1 ascending, -1 descending)\r\n * - simple: the simplified number\r\n * - semitones: the size in semitones\r\n * - chroma: the interval chroma\r\n *\r\n * @param {string} interval - the interval name\r\n * @return {Object} the interval properties\r\n *\r\n * @example\r\n * import { interval } from '@tonaljs/core'\r\n * interval('P5').semitones // => 7\r\n * interval('m3').type // => 'majorable'\r\n */\r\nfunction interval(src) {\r\n return typeof src === \"string\"\r\n ? cache$1[src] || (cache$1[src] = parse$1(src))\r\n : isPitch(src)\r\n ? interval(pitchName$1(src))\r\n : isNamed(src)\r\n ? interval(src.name)\r\n : NoInterval;\r\n}\r\nconst SIZES = [0, 2, 4, 5, 7, 9, 11];\r\nconst TYPES = \"PMMPPMM\";\r\nfunction parse$1(str) {\r\n const tokens = tokenizeInterval(str);\r\n if (tokens[0] === \"\") {\r\n return NoInterval;\r\n }\r\n const num = +tokens[0];\r\n const q = tokens[1];\r\n const step = (Math.abs(num) - 1) % 7;\r\n const t = TYPES[step];\r\n if (t === \"M\" && q === \"P\") {\r\n return NoInterval;\r\n }\r\n const type = t === \"M\" ? \"majorable\" : \"perfectable\";\r\n const name = \"\" + num + q;\r\n const dir = num < 0 ? -1 : 1;\r\n const simple = num === 8 || num === -8 ? num : dir * (step + 1);\r\n const alt = qToAlt(type, q);\r\n const oct = Math.floor((Math.abs(num) - 1) / 7);\r\n const semitones = dir * (SIZES[step] + alt + 12 * oct);\r\n const chroma = (((dir * (SIZES[step] + alt)) % 12) + 12) % 12;\r\n const coord = encode({ step, alt, oct, dir });\r\n return {\r\n empty: false,\r\n name,\r\n num,\r\n q,\r\n step,\r\n alt,\r\n dir,\r\n type,\r\n simple,\r\n semitones,\r\n chroma,\r\n coord,\r\n oct\r\n };\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction coordToInterval(coord) {\r\n const [f, o = 0] = coord;\r\n const isDescending = f * 7 + o * 12 < 0;\r\n const ivl = isDescending ? [-f, -o, -1] : [f, o, 1];\r\n return interval(decode(ivl));\r\n}\r\nfunction qToAlt(type, q) {\r\n return (q === \"M\" && type === \"majorable\") ||\r\n (q === \"P\" && type === \"perfectable\")\r\n ? 0\r\n : q === \"m\" && type === \"majorable\"\r\n ? -1\r\n : /^A+$/.test(q)\r\n ? q.length\r\n : /^d+$/.test(q)\r\n ? -1 * (type === \"perfectable\" ? q.length : q.length + 1)\r\n : 0;\r\n}\r\n// return the interval name of a pitch\r\nfunction pitchName$1(props) {\r\n const { step, alt, oct = 0, dir } = props;\r\n if (!dir) {\r\n return \"\";\r\n }\r\n const num = step + 1 + 7 * oct;\r\n const d = dir < 0 ? \"-\" : \"\";\r\n const type = TYPES[step] === \"M\" ? \"majorable\" : \"perfectable\";\r\n const name = d + num + altToQ(type, alt);\r\n return name;\r\n}\r\nfunction altToQ(type, alt) {\r\n if (alt === 0) {\r\n return type === \"majorable\" ? \"M\" : \"P\";\r\n }\r\n else if (alt === -1 && type === \"majorable\") {\r\n return \"m\";\r\n }\r\n else if (alt > 0) {\r\n return fillStr(\"A\", alt);\r\n }\r\n else {\r\n return fillStr(\"d\", type === \"perfectable\" ? alt : alt + 1);\r\n }\r\n}\n\n/**\r\n * Transpose a note by an interval.\r\n *\r\n * @param {string} note - the note or note name\r\n * @param {string} interval - the interval or interval name\r\n * @return {string} the transposed note name or empty string if not valid notes\r\n * @example\r\n * import { tranpose } from \"@tonaljs/core\"\r\n * transpose(\"d3\", \"3M\") // => \"F#3\"\r\n * transpose(\"D\", \"3M\") // => \"F#\"\r\n * [\"C\", \"D\", \"E\", \"F\", \"G\"].map(pc => transpose(pc, \"M3)) // => [\"E\", \"F#\", \"G#\", \"A\", \"B\"]\r\n */\r\nfunction transpose(noteName, intervalName) {\r\n const note$1 = note(noteName);\r\n const interval$1 = interval(intervalName);\r\n if (note$1.empty || interval$1.empty) {\r\n return \"\";\r\n }\r\n const noteCoord = note$1.coord;\r\n const intervalCoord = interval$1.coord;\r\n const tr = noteCoord.length === 1\r\n ? [noteCoord[0] + intervalCoord[0]]\r\n : [noteCoord[0] + intervalCoord[0], noteCoord[1] + intervalCoord[1]];\r\n return coordToNote(tr).name;\r\n}\r\n/**\r\n * Find the interval distance between two notes or coord classes.\r\n *\r\n * To find distance between coord classes, both notes must be coord classes and\r\n * the interval is always ascending\r\n *\r\n * @param {Note|string} from - the note or note name to calculate distance from\r\n * @param {Note|string} to - the note or note name to calculate distance to\r\n * @return {string} the interval name or empty string if not valid notes\r\n *\r\n */\r\nfunction distance(fromNote, toNote) {\r\n const from = note(fromNote);\r\n const to = note(toNote);\r\n if (from.empty || to.empty) {\r\n return \"\";\r\n }\r\n const fcoord = from.coord;\r\n const tcoord = to.coord;\r\n const fifths = tcoord[0] - fcoord[0];\r\n const octs = fcoord.length === 2 && tcoord.length === 2\r\n ? tcoord[1] - fcoord[1]\r\n : -Math.floor((fifths * 7) / 12);\r\n return coordToInterval([fifths, octs]).name;\r\n}\n\nexport { accToAlt, altToAcc, coordToInterval, coordToNote, decode, deprecate, distance, encode, fillStr, interval, isNamed, isPitch, note, stepToLetter, tokenizeInterval, tokenizeNote, transpose };\n//# sourceMappingURL=index.es.js.map\n","import { note, transpose as transpose$1, distance as distance$1 } from '@tonaljs/core';\n\nconst fillStr = (character, times) => Array(times + 1).join(character);\r\nconst REGEX = /^(_{1,}|=|\\^{1,}|)([abcdefgABCDEFG])([,']*)$/;\r\nfunction tokenize(str) {\r\n const m = REGEX.exec(str);\r\n if (!m) {\r\n return [\"\", \"\", \"\"];\r\n }\r\n return [m[1], m[2], m[3]];\r\n}\r\n/**\r\n * Convert a (string) note in ABC notation into a (string) note in scientific notation\r\n *\r\n * @example\r\n * abcToScientificNotation(\"c\") // => \"C5\"\r\n */\r\nfunction abcToScientificNotation(str) {\r\n const [acc, letter, oct] = tokenize(str);\r\n if (letter === \"\") {\r\n return \"\";\r\n }\r\n let o = 4;\r\n for (let i = 0; i < oct.length; i++) {\r\n o += oct.charAt(i) === \",\" ? -1 : 1;\r\n }\r\n const a = acc[0] === \"_\"\r\n ? acc.replace(/_/g, \"b\")\r\n : acc[0] === \"^\"\r\n ? acc.replace(/\\^/g, \"#\")\r\n : \"\";\r\n return letter.charCodeAt(0) > 96\r\n ? letter.toUpperCase() + a + (o + 1)\r\n : letter + a + o;\r\n}\r\n/**\r\n * Convert a (string) note in scientific notation into a (string) note in ABC notation\r\n *\r\n * @example\r\n * scientificToAbcNotation(\"C#4\") // => \"^C\"\r\n */\r\nfunction scientificToAbcNotation(str) {\r\n const n = note(str);\r\n if (n.empty || !n.oct) {\r\n return \"\";\r\n }\r\n const { letter, acc, oct } = n;\r\n const a = acc[0] === \"b\" ? acc.replace(/b/g, \"_\") : acc.replace(/#/g, \"^\");\r\n const l = oct > 4 ? letter.toLowerCase() : letter;\r\n const o = oct === 5 ? \"\" : oct > 4 ? fillStr(\"'\", oct - 5) : fillStr(\",\", 4 - oct);\r\n return a + l + o;\r\n}\r\nfunction transpose(note, interval) {\r\n return scientificToAbcNotation(transpose$1(abcToScientificNotation(note), interval));\r\n}\r\nfunction distance(from, to) {\r\n return distance$1(abcToScientificNotation(from), abcToScientificNotation(to));\r\n}\r\nvar index = {\r\n abcToScientificNotation,\r\n scientificToAbcNotation,\r\n tokenize,\r\n transpose,\r\n distance\r\n};\n\nexport default index;\nexport { abcToScientificNotation, distance, scientificToAbcNotation, tokenize, transpose };\n//# sourceMappingURL=index.es.js.map\n","import { note } from '@tonaljs/core';\n\n// ascending range\r\nfunction ascR(b, n) {\r\n const a = [];\r\n // tslint:disable-next-line:curly\r\n for (; n--; a[n] = n + b)\r\n ;\r\n return a;\r\n}\r\n// descending range\r\nfunction descR(b, n) {\r\n const a = [];\r\n // tslint:disable-next-line:curly\r\n for (; n--; a[n] = b - n)\r\n ;\r\n return a;\r\n}\r\n/**\r\n * Creates a numeric range\r\n *\r\n * @param {number} from\r\n * @param {number} to\r\n * @return {Array}\r\n *\r\n * @example\r\n * range(-2, 2) // => [-2, -1, 0, 1, 2]\r\n * range(2, -2) // => [2, 1, 0, -1, -2]\r\n */\r\nfunction range(from, to) {\r\n return from < to ? ascR(from, to - from + 1) : descR(from, from - to + 1);\r\n}\r\n/**\r\n * Rotates a list a number of times. It\"s completly agnostic about the\r\n * contents of the list.\r\n *\r\n * @param {Integer} times - the number of rotations\r\n * @param {Array} array\r\n * @return {Array} the rotated array\r\n *\r\n * @example\r\n * rotate(1, [1, 2, 3]) // => [2, 3, 1]\r\n */\r\nfunction rotate(times, arr) {\r\n const len = arr.length;\r\n const n = ((times % len) + len) % len;\r\n return arr.slice(n, len).concat(arr.slice(0, n));\r\n}\r\n/**\r\n * Return a copy of the array with the null values removed\r\n * @function\r\n * @param {Array} array\r\n * @return {Array}\r\n *\r\n * @example\r\n * compact([\"a\", \"b\", null, \"c\"]) // => [\"a\", \"b\", \"c\"]\r\n */\r\nfunction compact(arr) {\r\n return arr.filter(n => n === 0 || n);\r\n}\r\n/**\r\n * Sort an array of notes in ascending order. Pitch classes are listed\r\n * before notes. Any string that is not a note is removed.\r\n *\r\n * @param {string[]} notes\r\n * @return {string[]} sorted array of notes\r\n *\r\n * @example\r\n * sortedNoteNames(['c2', 'c5', 'c1', 'c0', 'c6', 'c'])\r\n * // => ['C', 'C0', 'C1', 'C2', 'C5', 'C6']\r\n * sortedNoteNames(['c', 'F', 'G', 'a', 'b', 'h', 'J'])\r\n * // => ['C', 'F', 'G', 'A', 'B']\r\n */\r\nfunction sortedNoteNames(notes) {\r\n const valid = notes.map(n => note(n)).filter(n => !n.empty);\r\n return valid.sort((a, b) => a.height - b.height).map(n => n.name);\r\n}\r\n/**\r\n * Get sorted notes with duplicates removed. Pitch classes are listed\r\n * before notes.\r\n *\r\n * @function\r\n * @param {string[]} array\r\n * @return {string[]} unique sorted notes\r\n *\r\n * @example\r\n * Array.sortedUniqNoteNames(['a', 'b', 'c2', '1p', 'p2', 'c2', 'b', 'c', 'c3' ])\r\n * // => [ 'C', 'A', 'B', 'C2', 'C3' ]\r\n */\r\nfunction sortedUniqNoteNames(arr) {\r\n return sortedNoteNames(arr).filter((n, i, a) => i === 0 || n !== a[i - 1]);\r\n}\r\n/**\r\n * Randomizes the order of the specified array in-place, using the Fisher–Yates shuffle.\r\n *\r\n * @function\r\n * @param {Array} array\r\n * @return {Array} the array shuffled\r\n *\r\n * @example\r\n * shuffle([\"C\", \"D\", \"E\", \"F\"]) // => [...]\r\n */\r\nfunction shuffle(arr, rnd = Math.random) {\r\n let i;\r\n let t;\r\n let m = arr.length;\r\n while (m) {\r\n i = Math.floor(rnd() * m--);\r\n t = arr[m];\r\n arr[m] = arr[i];\r\n arr[i] = t;\r\n }\r\n return arr;\r\n}\r\n/**\r\n * Get all permutations of an array\r\n *\r\n * @param {Array} array - the array\r\n * @return {Array} an array with all the permutations\r\n * @example\r\n * permutations([\"a\", \"b\", \"c\"])) // =>\r\n * [\r\n * [\"a\", \"b\", \"c\"],\r\n * [\"b\", \"a\", \"c\"],\r\n * [\"b\", \"c\", \"a\"],\r\n * [\"a\", \"c\", \"b\"],\r\n * [\"c\", \"a\", \"b\"],\r\n * [\"c\", \"b\", \"a\"]\r\n * ]\r\n */\r\nfunction permutations(arr) {\r\n if (arr.length === 0) {\r\n return [[]];\r\n }\r\n return permutations(arr.slice(1)).reduce((acc, perm) => {\r\n return acc.concat(arr.map((e, pos) => {\r\n const newPerm = perm.slice();\r\n newPerm.splice(pos, 0, arr[0]);\r\n return newPerm;\r\n }));\r\n }, []);\r\n}\n\nexport { compact, permutations, range, rotate, shuffle, sortedNoteNames, sortedUniqNoteNames };\n//# sourceMappingURL=index.es.js.map\n","// ascending range\r\nfunction ascR(b, n) {\r\n const a = [];\r\n // tslint:disable-next-line:curly\r\n for (; n--; a[n] = n + b)\r\n ;\r\n return a;\r\n}\r\n// descending range\r\nfunction descR(b, n) {\r\n const a = [];\r\n // tslint:disable-next-line:curly\r\n for (; n--; a[n] = b - n)\r\n ;\r\n return a;\r\n}\r\n/**\r\n * Creates a numeric range\r\n *\r\n * @param {number} from\r\n * @param {number} to\r\n * @return {Array}\r\n *\r\n * @example\r\n * range(-2, 2) // => [-2, -1, 0, 1, 2]\r\n * range(2, -2) // => [2, 1, 0, -1, -2]\r\n */\r\nfunction range(from, to) {\r\n return from < to ? ascR(from, to - from + 1) : descR(from, from - to + 1);\r\n}\r\n/**\r\n * Rotates a list a number of times. It\"s completly agnostic about the\r\n * contents of the list.\r\n *\r\n * @param {Integer} times - the number of rotations\r\n * @param {Array} collection\r\n * @return {Array} the rotated collection\r\n *\r\n * @example\r\n * rotate(1, [1, 2, 3]) // => [2, 3, 1]\r\n */\r\nfunction rotate(times, arr) {\r\n const len = arr.length;\r\n const n = ((times % len) + len) % len;\r\n return arr.slice(n, len).concat(arr.slice(0, n));\r\n}\r\n/**\r\n * Return a copy of the collection with the null values removed\r\n * @function\r\n * @param {Array} collection\r\n * @return {Array}\r\n *\r\n * @example\r\n * compact([\"a\", \"b\", null, \"c\"]) // => [\"a\", \"b\", \"c\"]\r\n */\r\nfunction compact(arr) {\r\n return arr.filter(n => n === 0 || n);\r\n}\r\n/**\r\n * Randomizes the order of the specified collection in-place, using the Fisher–Yates shuffle.\r\n *\r\n * @function\r\n * @param {Array} collection\r\n * @return {Array} the collection shuffled\r\n *\r\n * @example\r\n * shuffle([\"C\", \"D\", \"E\", \"F\"]) // => [...]\r\n */\r\nfunction shuffle(arr, rnd = Math.random) {\r\n let i;\r\n let t;\r\n let m = arr.length;\r\n while (m) {\r\n i = Math.floor(rnd() * m--);\r\n t = arr[m];\r\n arr[m] = arr[i];\r\n arr[i] = t;\r\n }\r\n return arr;\r\n}\r\n/**\r\n * Get all permutations of an collection\r\n *\r\n * @param {Array} collection - the collection\r\n * @return {Array} an collection with all the permutations\r\n * @example\r\n * permutations([\"a\", \"b\", \"c\"])) // =>\r\n * [\r\n * [\"a\", \"b\", \"c\"],\r\n * [\"b\", \"a\", \"c\"],\r\n * [\"b\", \"c\", \"a\"],\r\n * [\"a\", \"c\", \"b\"],\r\n * [\"c\", \"a\", \"b\"],\r\n * [\"c\", \"b\", \"a\"]\r\n * ]\r\n */\r\nfunction permutations(arr) {\r\n if (arr.length === 0) {\r\n return [[]];\r\n }\r\n return permutations(arr.slice(1)).reduce((acc, perm) => {\r\n return acc.concat(arr.map((e, pos) => {\r\n const newPerm = perm.slice();\r\n newPerm.splice(pos, 0, arr[0]);\r\n return newPerm;\r\n }));\r\n }, []);\r\n}\r\nvar index = {\r\n compact,\r\n permutations,\r\n range,\r\n rotate,\r\n shuffle\r\n};\n\nexport default index;\nexport { compact, permutations, range, rotate, shuffle };\n//# sourceMappingURL=index.es.js.map\n","import { range, compact, rotate } from '@tonaljs/collection';\nimport { deprecate, note, interval } from '@tonaljs/core';\n\nconst EmptyPcset = {\r\n empty: true,\r\n name: \"\",\r\n setNum: 0,\r\n chroma: \"000000000000\",\r\n normalized: \"000000000000\",\r\n intervals: []\r\n};\r\n// UTILITIES\r\nconst setNumToChroma = (num) => Number(num).toString(2);\r\nconst chromaToNumber = (chroma) => parseInt(chroma, 2);\r\nconst REGEX = /^[01]{12}$/;\r\nfunction isChroma(set) {\r\n return REGEX.test(set);\r\n}\r\nconst isPcsetNum = (set) => typeof set === \"number\" && set >= 0 && set <= 4095;\r\nconst isPcset = (set) => set && isChroma(set.chroma);\r\nconst cache = { [EmptyPcset.chroma]: EmptyPcset };\r\n/**\r\n * Get the pitch class set of a collection of notes or set number or chroma\r\n */\r\nfunction get(src) {\r\n const chroma = isChroma(src)\r\n ? src\r\n : isPcsetNum(src)\r\n ? setNumToChroma(src)\r\n : Array.isArray(src)\r\n ? listToChroma(src)\r\n : isPcset(src)\r\n ? src.chroma\r\n : EmptyPcset.chroma;\r\n return (cache[chroma] = cache[chroma] || chromaToPcset(chroma));\r\n}\r\n/**\r\n * Use Pcset.properties\r\n * @function\r\n * @deprecated\r\n */\r\nconst pcset = deprecate(\"Pcset.pcset\", \"Pcset.get\", get);\r\n/**\r\n * Get pitch class set chroma\r\n * @function\r\n * @example\r\n * Pcset.chroma([\"c\", \"d\", \"e\"]); //=> \"101010000000\"\r\n */\r\nconst chroma = (set) => get(set).chroma;\r\n/**\r\n * Get intervals (from C) of a set\r\n * @function\r\n * @example\r\n * Pcset.intervals([\"c\", \"d\", \"e\"]); //=>\r\n */\r\nconst intervals = (set) => get(set).intervals;\r\n/**\r\n * Get pitch class set number\r\n * @function\r\n * @example\r\n * Pcset.num([\"c\", \"d\", \"e\"]); //=> 2192\r\n */\r\nconst num = (set) => get(set).setNum;\r\nconst IVLS = [\r\n \"1P\",\r\n \"2m\",\r\n \"2M\",\r\n \"3m\",\r\n \"3M\",\r\n \"4P\",\r\n \"5d\",\r\n \"5P\",\r\n \"6m\",\r\n \"6M\",\r\n \"7m\",\r\n \"7M\"\r\n];\r\n/**\r\n * @private\r\n * Get the intervals of a pcset *starting from C*\r\n * @param {Set} set - the pitch class set\r\n * @return {IntervalName[]} an array of interval names or an empty array\r\n * if not a valid pitch class set\r\n */\r\nfunction chromaToIntervals(chroma) {\r\n const intervals = [];\r\n for (let i = 0; i < 12; i++) {\r\n // tslint:disable-next-line:curly\r\n if (chroma.charAt(i) === \"1\")\r\n intervals.push(IVLS[i]);\r\n }\r\n return intervals;\r\n}\r\n/**\r\n * Get a list of all possible pitch class sets (all possible chromas) *having\r\n * C as root*. There are 2048 different chromas. If you want them with another\r\n * note you have to transpose it\r\n *\r\n * @see http://allthescales.org/\r\n * @return {Array} an array of possible chromas from '10000000000' to '11111111111'\r\n */\r\nfunction chromas() {\r\n return range(2048, 4095).map(setNumToChroma);\r\n}\r\n/**\r\n * Given a a list of notes or a pcset chroma, produce the rotations\r\n * of the chroma discarding the ones that starts with \"0\"\r\n *\r\n * This is used, for example, to get all the modes of a scale.\r\n *\r\n * @param {Array|string} set - the list of notes or pitchChr of the set\r\n * @param {boolean} normalize - (Optional, true by default) remove all\r\n * the rotations that starts with \"0\"\r\n * @return {Array} an array with all the modes of the chroma\r\n *\r\n * @example\r\n * Pcset.modes([\"C\", \"D\", \"E\"]).map(Pcset.intervals)\r\n */\r\nfunction modes(set, normalize = true) {\r\n const pcs = get(set);\r\n const binary = pcs.chroma.split(\"\");\r\n return compact(binary.map((_, i) => {\r\n const r = rotate(i, binary);\r\n return normalize && r[0] === \"0\" ? null : r.join(\"\");\r\n }));\r\n}\r\n/**\r\n * Test if two pitch class sets are numentical\r\n *\r\n * @param {Array|string} set1 - one of the pitch class sets\r\n * @param {Array|string} set2 - the other pitch class set\r\n * @return {boolean} true if they are equal\r\n * @example\r\n * Pcset.isEqual([\"c2\", \"d3\"], [\"c5\", \"d2\"]) // => true\r\n */\r\nfunction isEqual(s1, s2) {\r\n return get(s1).setNum === get(s2).setNum;\r\n}\r\n/**\r\n * Create a function that test if a collection of notes is a\r\n * subset of a given set\r\n *\r\n * The function is curryfied.\r\n *\r\n * @param {PcsetChroma|NoteName[]} set - the superset to test against (chroma or\r\n * list of notes)\r\n * @return{function(PcsetChroma|NoteNames[]): boolean} a function accepting a set\r\n * to test against (chroma or list of notes)\r\n * @example\r\n * const inCMajor = Pcset.isSubsetOf([\"C\", \"E\", \"G\"])\r\n * inCMajor([\"e6\", \"c4\"]) // => true\r\n * inCMajor([\"e6\", \"c4\", \"d3\"]) // => false\r\n */\r\nfunction isSubsetOf(set) {\r\n const s = get(set).setNum;\r\n return (notes) => {\r\n const o = get(notes).setNum;\r\n // tslint:disable-next-line: no-bitwise\r\n return s && s !== o && (o & s) === o;\r\n };\r\n}\r\n/**\r\n * Create a function that test if a collection of notes is a\r\n * superset of a given set (it contains all notes and at least one more)\r\n *\r\n * @param {Set} set - an array of notes or a chroma set string to test against\r\n * @return {(subset: Set): boolean} a function that given a set\r\n * returns true if is a subset of the first one\r\n * @example\r\n * const extendsCMajor = Pcset.isSupersetOf([\"C\", \"E\", \"G\"])\r\n * extendsCMajor([\"e6\", \"a\", \"c4\", \"g2\"]) // => true\r\n * extendsCMajor([\"c6\", \"e4\", \"g3\"]) // => false\r\n */\r\nfunction isSupersetOf(set) {\r\n const s = get(set).setNum;\r\n return (notes) => {\r\n const o = get(notes).setNum;\r\n // tslint:disable-next-line: no-bitwise\r\n return s && s !== o && (o | s) === o;\r\n };\r\n}\r\n/**\r\n * Test if a given pitch class set includes a note\r\n *\r\n * @param {Array} set - the base set to test against\r\n * @param {string} note - the note to test\r\n * @return {boolean} true if the note is included in the pcset\r\n *\r\n * Can be partially applied\r\n *\r\n * @example\r\n * const isNoteInCMajor = isNoteIncludedIn(['C', 'E', 'G'])\r\n * isNoteInCMajor('C4') // => true\r\n * isNoteInCMajor('C#4') // => false\r\n */\r\nfunction isNoteIncludedIn(set) {\r\n const s = get(set);\r\n return (noteName) => {\r\n const n = note(noteName);\r\n return s && !n.empty && s.chroma.charAt(n.chroma) === \"1\";\r\n };\r\n}\r\n/** @deprecated use: isNoteIncludedIn */\r\nconst includes = isNoteIncludedIn;\r\n/**\r\n * Filter a list with a pitch class set\r\n *\r\n * @param {Array|string} set - the pitch class set notes\r\n * @param {Array|string} notes - the note list to be filtered\r\n * @return {Array} the filtered notes\r\n *\r\n * @example\r\n * Pcset.filter([\"C\", \"D\", \"E\"], [\"c2\", \"c#2\", \"d2\", \"c3\", \"c#3\", \"d3\"]) // => [ \"c2\", \"d2\", \"c3\", \"d3\" ])\r\n * Pcset.filter([\"C2\"], [\"c2\", \"c#2\", \"d2\", \"c3\", \"c#3\", \"d3\"]) // => [ \"c2\", \"c3\" ])\r\n */\r\nfunction filter(set) {\r\n const isIncluded = isNoteIncludedIn(set);\r\n return (notes) => {\r\n return notes.filter(isIncluded);\r\n };\r\n}\r\nvar index = {\r\n get,\r\n chroma,\r\n num,\r\n intervals,\r\n chromas,\r\n isSupersetOf,\r\n isSubsetOf,\r\n isNoteIncludedIn,\r\n isEqual,\r\n filter,\r\n modes,\r\n // deprecated\r\n pcset\r\n};\r\n//// PRIVATE ////\r\nfunction chromaRotations(chroma) {\r\n const binary = chroma.split(\"\");\r\n return binary.map((_, i) => rotate(i, binary).join(\"\"));\r\n}\r\nfunction chromaToPcset(chroma) {\r\n const setNum = chromaToNumber(chroma);\r\n const normalizedNum = chromaRotations(chroma)\r\n .map(chromaToNumber)\r\n .filter(n => n >= 2048)\r\n .sort()[0];\r\n const normalized = setNumToChroma(normalizedNum);\r\n const intervals = chromaToIntervals(chroma);\r\n return {\r\n empty: false,\r\n name: \"\",\r\n setNum,\r\n chroma,\r\n normalized,\r\n intervals\r\n };\r\n}\r\nfunction listToChroma(set) {\r\n if (set.length === 0) {\r\n return EmptyPcset.chroma;\r\n }\r\n let pitch;\r\n const binary = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n // tslint:disable-next-line:prefer-for-of\r\n for (let i = 0; i < set.length; i++) {\r\n pitch = note(set[i]);\r\n // tslint:disable-next-line: curly\r\n if (pitch.empty)\r\n pitch = interval(set[i]);\r\n // tslint:disable-next-line: curly\r\n if (!pitch.empty)\r\n binary[pitch.chroma] = 1;\r\n }\r\n return binary.join(\"\");\r\n}\n\nexport default index;\nexport { EmptyPcset, chromaToIntervals, chromas, filter, get, includes, isEqual, isNoteIncludedIn, isSubsetOf, isSupersetOf, modes, pcset };\n//# sourceMappingURL=index.es.js.map\n","import { deprecate } from '@tonaljs/core';\nimport { get as get$1, EmptyPcset } from '@tonaljs/pcset';\n\n/**\r\n * @private\r\n * Chord List\r\n * Source: https://en.wikibooks.org/wiki/Music_Theory/Complete_List_of_Chord_Patterns\r\n * Format: [\"intervals\", \"full name\", \"abrv1 abrv2\"]\r\n */\r\nconst CHORDS = [\r\n // ==Major==\r\n [\"1P 3M 5P\", \"major\", \"M \"],\r\n [\"1P 3M 5P 7M\", \"major seventh\", \"maj7 Δ ma7 M7 Maj7\"],\r\n [\"1P 3M 5P 7M 9M\", \"major ninth\", \"maj9 Δ9\"],\r\n [\"1P 3M 5P 7M 9M 13M\", \"major thirteenth\", \"maj13 Maj13\"],\r\n [\"1P 3M 5P 6M\", \"sixth\", \"6 add6 add13 M6\"],\r\n [\"1P 3M 5P 6M 9M\", \"sixth/ninth\", \"6/9 69\"],\r\n [\"1P 3M 5P 7M 11A\", \"lydian\", \"maj#4 Δ#4 Δ#11\"],\r\n [\"1P 3M 6m 7M\", \"major seventh flat sixth\", \"M7b6\"],\r\n // ==Minor==\r\n // '''Normal'''\r\n [\"1P 3m 5P\", \"minor\", \"m min -\"],\r\n [\"1P 3m 5P 7m\", \"minor seventh\", \"m7 min7 mi7 -7\"],\r\n [\"1P 3m 5P 7M\", \"minor/major seventh\", \"m/ma7 m/maj7 mM7 m/M7 -Δ7 mΔ\"],\r\n [\"1P 3m 5P 6M\", \"minor sixth\", \"m6\"],\r\n [\"1P 3m 5P 7m 9M\", \"minor ninth\", \"m9\"],\r\n [\"1P 3m 5P 7m 9M 11P\", \"minor eleventh\", \"m11\"],\r\n [\"1P 3m 5P 7m 9M 13M\", \"minor thirteenth\", \"m13\"],\r\n // '''Diminished'''\r\n [\"1P 3m 5d\", \"diminished\", \"dim ° o\"],\r\n [\"1P 3m 5d 7d\", \"diminished seventh\", \"dim7 °7 o7\"],\r\n [\"1P 3m 5d 7m\", \"half-diminished\", \"m7b5 ø\"],\r\n // ==Dominant/Seventh==\r\n // '''Normal'''\r\n [\"1P 3M 5P 7m\", \"dominant seventh\", \"7 dom\"],\r\n [\"1P 3M 5P 7m 9M\", \"dominant ninth\", \"9\"],\r\n [\"1P 3M 5P 7m 9M 13M\", \"dominant thirteenth\", \"13\"],\r\n [\"1P 3M 5P 7m 11A\", \"lydian dominant seventh\", \"7#11 7#4\"],\r\n // '''Altered'''\r\n [\"1P 3M 5P 7m 9m\", \"dominant flat ninth\", \"7b9\"],\r\n [\"1P 3M 5P 7m 9A\", \"dominant sharp ninth\", \"7#9\"],\r\n [\"1P 3M 7m 9m\", \"altered\", \"alt7\"],\r\n // '''Suspended'''\r\n [\"1P 4P 5P\", \"suspended fourth\", \"sus4\"],\r\n [\"1P 2M 5P\", \"suspended second\", \"sus2\"],\r\n [\"1P 4P 5P 7m\", \"suspended fourth seventh\", \"7sus4\"],\r\n [\"1P 5P 7m 9M 11P\", \"eleventh\", \"11\"],\r\n [\"1P 4P 5P 7m 9m\", \"suspended fourth flat ninth\", \"b9sus phryg\"],\r\n // ==Other==\r\n [\"1P 5P\", \"fifth\", \"5\"],\r\n [\"1P 3M 5A\", \"augmented\", \"aug + +5\"],\r\n [\"1P 3M 5A 7M\", \"augmented seventh\", \"maj7#5 maj7+5\"],\r\n [\"1P 3M 5P 7M 9M 11A\", \"major sharp eleventh (lydian)\", \"maj9#11 Δ9#11\"],\r\n // ==Legacy==\r\n [\"1P 2M 4P 5P\", \"\", \"sus24 sus4add9\"],\r\n [\"1P 3M 13m\", \"\", \"Mb6\"],\r\n [\"1P 3M 5A 7M 9M\", \"\", \"maj9#5 Maj9#5\"],\r\n [\"1P 3M 5A 7m\", \"\", \"7#5 +7 7aug aug7\"],\r\n [\"1P 3M 5A 7m 9A\", \"\", \"7#5#9 7alt\"],\r\n [\"1P 3M 5A 7m 9M\", \"\", \"9#5 9+\"],\r\n [\"1P 3M 5A 7m 9M 11A\", \"\", \"9#5#11\"],\r\n [\"1P 3M 5A 7m 9m\", \"\", \"7#5b9\"],\r\n [\"1P 3M 5A 7m 9m 11A\", \"\", \"7#5b9#11\"],\r\n [\"1P 3M 5A 9A\", \"\", \"+add#9\"],\r\n [\"1P 3M 5A 9M\", \"\", \"M#5add9 +add9\"],\r\n [\"1P 3M 5P 6M 11A\", \"\", \"M6#11 M6b5 6#11 6b5\"],\r\n [\"1P 3M 5P 6M 7M 9M\", \"\", \"M7add13\"],\r\n [\"1P 3M 5P 6M 9M 11A\", \"\", \"69#11\"],\r\n [\"1P 3M 5P 6m 7m\", \"\", \"7b6\"],\r\n [\"1P 3M 5P 7M 9A 11A\", \"\", \"maj7#9#11\"],\r\n [\"1P 3M 5P 7M 9M 11A 13M\", \"\", \"M13#11 maj13#11 M13+4 M13#4\"],\r\n [\"1P 3M 5P 7M 9m\", \"\", \"M7b9\"],\r\n [\"1P 3M 5P 7m 11A 13m\", \"\", \"7#11b13 7b5b13\"],\r\n [\"1P 3M 5P 7m 13M\", \"\", \"7add6 67 7add13\"],\r\n [\"1P 3M 5P 7m 9A 11A\", \"\", \"7#9#11 7b5#9\"],\r\n [\"1P 3M 5P 7m 9A 11A 13M\", \"\", \"13#9#11\"],\r\n [\"1P 3M 5P 7m 9A 11A 13m\", \"\", \"7#9#11b13\"],\r\n [\"1P 3M 5P 7m 9A 13M\", \"\", \"13#9\"],\r\n [\"1P 3M 5P 7m 9A 13m\", \"\", \"7#9b13\"],\r\n [\"1P 3M 5P 7m 9M 11A\", \"\", \"9#11 9+4 9#4\"],\r\n [\"1P 3M 5P 7m 9M 11A 13M\", \"\", \"13#11 13+4 13#4\"],\r\n [\"1P 3M 5P 7m 9M 11A 13m\", \"\", \"9#11b13 9b5b13\"],\r\n [\"1P 3M 5P 7m 9m 11A\", \"\", \"7b9#11 7b5b9\"],\r\n [\"1P 3M 5P 7m 9m 11A 13M\", \"\", \"13b9#11\"],\r\n [\"1P 3M 5P 7m 9m 11A 13m\", \"\", \"7b9b13#11 7b9#11b13 7b5b9b13\"],\r\n [\"1P 3M 5P 7m 9m 13M\", \"\", \"13b9\"],\r\n [\"1P 3M 5P 7m 9m 13m\", \"\", \"7b9b13\"],\r\n [\"1P 3M 5P 7m 9m 9A\", \"\", \"7b9#9\"],\r\n [\"1P 3M 5P 9M\", \"\", \"Madd9 2 add9 add2\"],\r\n [\"1P 3M 5P 9m\", \"\", \"Maddb9\"],\r\n [\"1P 3M 5d\", \"\", \"Mb5\"],\r\n [\"1P 3M 5d 6M 7m 9M\", \"\", \"13b5\"],\r\n [\"1P 3M 5d 7M\", \"\", \"M7b5\"],\r\n [\"1P 3M 5d 7M 9M\", \"\", \"M9b5\"],\r\n [\"1P 3M 5d 7m\", \"\", \"7b5\"],\r\n [\"1P 3M 5d 7m 9M\", \"\", \"9b5\"],\r\n [\"1P 3M 7m\", \"\", \"7no5\"],\r\n [\"1P 3M 7m 13m\", \"\", \"7b13\"],\r\n [\"1P 3M 7m 9M\", \"\", \"9no5\"],\r\n [\"1P 3M 7m 9M 13M\", \"\", \"13no5\"],\r\n [\"1P 3M 7m 9M 13m\", \"\", \"9b13\"],\r\n [\"1P 3m 4P 5P\", \"\", \"madd4\"],\r\n [\"1P 3m 5A\", \"\", \"m#5 m+ mb6\"],\r\n [\"1P 3m 5P 6M 9M\", \"\", \"m69\"],\r\n [\"1P 3m 5P 6m 7M\", \"\", \"mMaj7b6\"],\r\n [\"1P 3m 5P 6m 7M 9M\", \"\", \"mMaj9b6\"],\r\n [\"1P 3m 5P 7M 9M\", \"\", \"mMaj9\"],\r\n [\"1P 3m 5P 7m 11P\", \"\", \"m7add11 m7add4\"],\r\n [\"1P 3m 5P 9M\", \"\", \"madd9\"],\r\n [\"1P 3m 5d 6M 7M\", \"\", \"o7M7\"],\r\n [\"1P 3m 5d 7M\", \"\", \"oM7\"],\r\n [\"1P 3m 6m 7M\", \"\", \"mb6M7\"],\r\n [\"1P 3m 6m 7m\", \"\", \"m7#5\"],\r\n [\"1P 3m 6m 7m 9M\", \"\", \"m9#5\"],\r\n [\"1P 3m 6m 7m 9M 11P\", \"\", \"m11A\"],\r\n [\"1P 3m 6m 9m\", \"\", \"mb6b9\"],\r\n [\"1P 2M 3m 5d 7m\", \"\", \"m9b5\"],\r\n [\"1P 4P 5A 7M\", \"\", \"M7#5sus4\"],\r\n [\"1P 4P 5A 7M 9M\", \"\", \"M9#5sus4\"],\r\n [\"1P 4P 5A 7m\", \"\", \"7#5sus4\"],\r\n [\"1P 4P 5P 7M\", \"\", \"M7sus4\"],\r\n [\"1P 4P 5P 7M 9M\", \"\", \"M9sus4\"],\r\n [\"1P 4P 5P 7m 9M\", \"\", \"9sus4 9sus\"],\r\n [\"1P 4P 5P 7m 9M 13M\", \"\", \"13sus4 13sus\"],\r\n [\"1P 4P 5P 7m 9m 13m\", \"\", \"7sus4b9b13 7b9b13sus4\"],\r\n [\"1P 4P 7m 10m\", \"\", \"4 quartal\"],\r\n [\"1P 5P 7m 9m 11P\", \"\", \"11b9\"]\r\n];\n\nconst NoChordType = {\r\n ...EmptyPcset,\r\n name: \"\",\r\n quality: \"Unknown\",\r\n intervals: [],\r\n aliases: []\r\n};\r\nlet dictionary = [];\r\nlet index = {};\r\n/**\r\n * Given a chord name or chroma, return the chord properties\r\n * @param {string} source - chord name or pitch class set chroma\r\n * @example\r\n * import { get } from 'tonaljs/chord-type'\r\n * get('major') // => { name: 'major', ... }\r\n */\r\nfunction get(type) {\r\n return index[type] || NoChordType;\r\n}\r\nconst chordType = deprecate(\"ChordType.chordType\", \"ChordType.get\", get);\r\n/**\r\n * Get all chord (long) names\r\n */\r\nfunction names() {\r\n return dictionary.map(chord => chord.name).filter(x => x);\r\n}\r\n/**\r\n * Get all chord symbols\r\n */\r\nfunction symbols() {\r\n return dictionary.map(chord => chord.aliases[0]).filter(x => x);\r\n}\r\n/**\r\n * Keys used to reference chord types\r\n */\r\nfunction keys() {\r\n return Object.keys(index);\r\n}\r\n/**\r\n * Return a list of all chord types\r\n */\r\nfunction all() {\r\n return dictionary.slice();\r\n}\r\nconst entries = deprecate(\"ChordType.entries\", \"ChordType.all\", all);\r\n/**\r\n * Clear the dictionary\r\n */\r\nfunction removeAll() {\r\n dictionary = [];\r\n index = {};\r\n}\r\n/**\r\n * Add a chord to the dictionary.\r\n * @param intervals\r\n * @param aliases\r\n * @param [fullName]\r\n */\r\nfunction add(intervals, aliases, fullName) {\r\n const quality = getQuality(intervals);\r\n const chord = {\r\n ...get$1(intervals),\r\n name: fullName || \"\",\r\n quality,\r\n intervals,\r\n aliases\r\n };\r\n dictionary.push(chord);\r\n if (chord.name) {\r\n index[chord.name] = chord;\r\n }\r\n index[chord.setNum] = chord;\r\n index[chord.chroma] = chord;\r\n chord.aliases.forEach(alias => addAlias(chord, alias));\r\n}\r\nfunction addAlias(chord, alias) {\r\n index[alias] = chord;\r\n}\r\nfunction getQuality(intervals) {\r\n const has = (interval) => intervals.indexOf(interval) !== -1;\r\n return has(\"5A\")\r\n ? \"Augmented\"\r\n : has(\"3M\")\r\n ? \"Major\"\r\n : has(\"5d\")\r\n ? \"Diminished\"\r\n : has(\"3m\")\r\n ? \"Minor\"\r\n : \"Unknown\";\r\n}\r\nCHORDS.forEach(([ivls, fullName, names]) => add(ivls.split(\" \"), names.split(\" \"), fullName));\r\ndictionary.sort((a, b) => a.setNum - b.setNum);\r\nvar index$1 = {\r\n names,\r\n symbols,\r\n get,\r\n all,\r\n add,\r\n removeAll,\r\n keys,\r\n // deprecated\r\n entries,\r\n chordType\r\n};\n\nexport default index$1;\nexport { add, addAlias, all, chordType, entries, get, keys, names, removeAll, symbols };\n//# sourceMappingURL=index.es.js.map\n","import { get } from '@tonaljs/chord-type';\nimport { note } from '@tonaljs/core';\nimport { modes } from '@tonaljs/pcset';\n\nconst NotFound = { weight: 0, name: \"\" };\r\nconst namedSet = (notes) => {\r\n const pcToName = notes.reduce((record, n) => {\r\n const chroma = note(n).chroma;\r\n if (chroma !== undefined) {\r\n record[chroma] = record[chroma] || note(n).name;\r\n }\r\n return record;\r\n }, {});\r\n return (chroma) => pcToName[chroma];\r\n};\r\nfunction detect(source) {\r\n const notes = source.map(n => note(n).pc).filter(x => x);\r\n if (note.length === 0) {\r\n return [];\r\n }\r\n const found = findExactMatches(notes, 1);\r\n return found\r\n .filter(chord => chord.weight)\r\n .sort((a, b) => b.weight - a.weight)\r\n .map(chord => chord.name);\r\n}\r\nfunction findExactMatches(notes, weight) {\r\n const tonic = notes[0];\r\n const tonicChroma = note(tonic).chroma;\r\n const noteName = namedSet(notes);\r\n const allModes = modes(notes, false);\r\n const found = allModes.map((mode, chroma) => {\r\n const chordName = get(mode).aliases[0];\r\n if (!chordName) {\r\n return NotFound;\r\n }\r\n const baseNote = noteName(chroma);\r\n const isInversion = chroma !== tonicChroma;\r\n if (isInversion) {\r\n return { weight: 0.5 * weight, name: `${baseNote}${chordName}/${tonic}` };\r\n }\r\n else {\r\n return { weight: 1 * weight, name: `${baseNote}${chordName}` };\r\n }\r\n });\r\n return found;\r\n}\r\nvar index = { detect };\n\nexport default index;\nexport { detect };\n//# sourceMappingURL=index.es.js.map\n","import { deprecate } from '@tonaljs/core';\nimport { EmptyPcset, get as get$1 } from '@tonaljs/pcset';\n\n// SCALES\r\n// Format: [\"intervals\", \"name\", \"alias1\", \"alias2\", ...]\r\nconst SCALES = [\r\n // 5-note scales\r\n [\"1P 2M 3M 5P 6M\", \"major pentatonic\", \"pentatonic\"],\r\n [\"1P 3M 4P 5P 7M\", \"ionian pentatonic\"],\r\n [\"1P 3M 4P 5P 7m\", \"mixolydian pentatonic\", \"indian\"],\r\n [\"1P 2M 4P 5P 6M\", \"ritusen\"],\r\n [\"1P 2M 4P 5P 7m\", \"egyptian\"],\r\n [\"1P 3M 4P 5d 7m\", \"neopolitan major pentatonic\"],\r\n [\"1P 3m 4P 5P 6m\", \"vietnamese 1\"],\r\n [\"1P 2m 3m 5P 6m\", \"pelog\"],\r\n [\"1P 2m 4P 5P 6m\", \"kumoijoshi\"],\r\n [\"1P 2M 3m 5P 6m\", \"hirajoshi\"],\r\n [\"1P 2m 4P 5d 7m\", \"iwato\"],\r\n [\"1P 2m 4P 5P 7m\", \"in-sen\"],\r\n [\"1P 3M 4A 5P 7M\", \"lydian pentatonic\", \"chinese\"],\r\n [\"1P 3m 4P 6m 7m\", \"malkos raga\"],\r\n [\"1P 3m 4P 5d 7m\", \"locrian pentatonic\", \"minor seven flat five pentatonic\"],\r\n [\"1P 3m 4P 5P 7m\", \"minor pentatonic\", \"vietnamese 2\"],\r\n [\"1P 3m 4P 5P 6M\", \"minor six pentatonic\"],\r\n [\"1P 2M 3m 5P 6M\", \"flat three pentatonic\", \"kumoi\"],\r\n [\"1P 2M 3M 5P 6m\", \"flat six pentatonic\"],\r\n [\"1P 2m 3M 5P 6M\", \"scriabin\"],\r\n [\"1P 3M 5d 6m 7m\", \"whole tone pentatonic\"],\r\n [\"1P 3M 4A 5A 7M\", \"lydian #5P pentatonic\"],\r\n [\"1P 3M 4A 5P 7m\", \"lydian dominant pentatonic\"],\r\n [\"1P 3m 4P 5P 7M\", \"minor #7M pentatonic\"],\r\n [\"1P 3m 4d 5d 7m\", \"super locrian pentatonic\"],\r\n // 6-note scales\r\n [\"1P 2M 3m 4P 5P 7M\", \"minor hexatonic\"],\r\n [\"1P 2A 3M 5P 5A 7M\", \"augmented\"],\r\n [\"1P 3m 4P 5d 5P 7m\", \"minor blues\", \"blues\"],\r\n [\"1P 2M 3m 3M 5P 6M\", \"major blues\"],\r\n [\"1P 2M 4P 5P 6M 7m\", \"piongio\"],\r\n [\"1P 2m 3M 4A 6M 7m\", \"prometheus neopolitan\"],\r\n [\"1P 2M 3M 4A 6M 7m\", \"prometheus\"],\r\n [\"1P 2m 3M 5d 6m 7m\", \"mystery #1\"],\r\n [\"1P 2m 3M 4P 5A 6M\", \"six tone symmetric\"],\r\n [\"1P 2M 3M 4A 5A 7m\", \"whole tone\"],\r\n // 7-note scales\r\n [\"1P 2M 3M 4P 5d 6m 7m\", \"locrian major\", \"arabian\"],\r\n [\"1P 2m 3M 4A 5P 6m 7M\", \"double harmonic lydian\"],\r\n [\"1P 2M 3m 4P 5P 6m 7M\", \"harmonic minor\"],\r\n [\r\n \"1P 2m 3m 3M 5d 6m 7m\",\r\n \"altered\",\r\n \"super locrian\",\r\n \"diminished whole tone\",\r\n \"pomeroy\"\r\n ],\r\n [\"1P 2M 3m 4P 5d 6m 7m\", \"locrian #2\", \"half-diminished\", '\"aeolian b5'],\r\n [\r\n \"1P 2M 3M 4P 5P 6m 7m\",\r\n \"mixolydian b6\",\r\n \"melodic minor fifth mode\",\r\n \"hindu\"\r\n ],\r\n [\"1P 2M 3M 4A 5P 6M 7m\", \"lydian dominant\", \"lydian b7\", \"overtone\"],\r\n [\"1P 2M 3M 4A 5P 6M 7M\", \"lydian\"],\r\n [\"1P 2M 3M 4A 5A 6M 7M\", \"lydian augmented\"],\r\n [\r\n \"1P 2m 3m 4P 5P 6M 7m\",\r\n \"dorian b2\",\r\n \"phrygian #6\",\r\n \"melodic minor second mode\"\r\n ],\r\n [\"1P 2M 3m 4P 5P 6M 7M\", \"melodic minor\"],\r\n [\"1P 2m 3m 4P 5d 6m 7m\", \"locrian\"],\r\n [\r\n \"1P 2m 3m 4d 5d 6m 7d\",\r\n \"ultralocrian\",\r\n \"superlocrian bb7\",\r\n \"·superlocrian diminished\"\r\n ],\r\n [\"1P 2m 3m 4P 5d 6M 7m\", \"locrian 6\", \"locrian natural 6\", \"locrian sharp 6\"],\r\n [\"1P 2A 3M 4P 5P 5A 7M\", \"augmented heptatonic\"],\r\n [\"1P 2M 3m 5d 5P 6M 7m\", \"romanian minor\"],\r\n [\"1P 2M 3m 4A 5P 6M 7m\", \"dorian #4\"],\r\n [\"1P 2M 3m 4A 5P 6M 7M\", \"lydian diminished\"],\r\n [\"1P 2m 3m 4P 5P 6m 7m\", \"phrygian\"],\r\n [\"1P 2M 3M 4A 5A 7m 7M\", \"leading whole tone\"],\r\n [\"1P 2M 3M 4A 5P 6m 7m\", \"lydian minor\"],\r\n [\"1P 2m 3M 4P 5P 6m 7m\", \"phrygian dominant\", \"spanish\", \"phrygian major\"],\r\n [\"1P 2m 3m 4P 5P 6m 7M\", \"balinese\"],\r\n [\"1P 2m 3m 4P 5P 6M 7M\", \"neopolitan major\"],\r\n [\"1P 2M 3m 4P 5P 6m 7m\", \"aeolian\", \"minor\"],\r\n [\"1P 2M 3M 4P 5P 6m 7M\", \"harmonic major\"],\r\n [\"1P 2m 3M 4P 5P 6m 7M\", \"double harmonic major\", \"gypsy\"],\r\n [\"1P 2M 3m 4P 5P 6M 7m\", \"dorian\"],\r\n [\"1P 2M 3m 4A 5P 6m 7M\", \"hungarian minor\"],\r\n [\"1P 2A 3M 4A 5P 6M 7m\", \"hungarian major\"],\r\n [\"1P 2m 3M 4P 5d 6M 7m\", \"oriental\"],\r\n [\"1P 2m 3m 3M 4A 5P 7m\", \"flamenco\"],\r\n [\"1P 2m 3m 4A 5P 6m 7M\", \"todi raga\"],\r\n [\"1P 2M 3M 4P 5P 6M 7m\", \"mixolydian\", \"dominant\"],\r\n [\"1P 2m 3M 4P 5d 6m 7M\", \"persian\"],\r\n [\"1P 2M 3M 4P 5P 6M 7M\", \"major\", \"ionian\"],\r\n [\"1P 2m 3M 5d 6m 7m 7M\", \"enigmatic\"],\r\n [\r\n \"1P 2M 3M 4P 5A 6M 7M\",\r\n \"major augmented\",\r\n \"major #5\",\r\n \"ionian augmented\",\r\n \"ionian #5\"\r\n ],\r\n [\"1P 2A 3M 4A 5P 6M 7M\", \"lydian #9\"],\r\n // 8-note scales\r\n [\"1P 2m 3M 4P 4A 5P 6m 7M\", \"purvi raga\"],\r\n [\"1P 2m 3m 3M 4P 5P 6m 7m\", \"spanish heptatonic\"],\r\n [\"1P 2M 3M 4P 5P 6M 7m 7M\", \"bebop\"],\r\n [\"1P 2M 3m 3M 4P 5P 6M 7m\", \"bebop minor\"],\r\n [\"1P 2M 3M 4P 5P 5A 6M 7M\", \"bebop major\"],\r\n [\"1P 2m 3m 4P 5d 5P 6m 7m\", \"bebop locrian\"],\r\n [\"1P 2M 3m 4P 5P 6m 7m 7M\", \"minor bebop\"],\r\n [\"1P 2M 3m 4P 5d 6m 6M 7M\", \"diminished\", \"whole-half diminished\"],\r\n [\"1P 2M 3M 4P 5d 5P 6M 7M\", \"ichikosucho\"],\r\n [\"1P 2M 3m 4P 5P 6m 6M 7M\", \"minor six diminished\"],\r\n [\"1P 2m 3m 3M 4A 5P 6M 7m\", \"half-whole diminished\", \"dominant diminished\"],\r\n [\"1P 3m 3M 4P 5P 6M 7m 7M\", \"kafi raga\"],\r\n // 9-note scales\r\n [\"1P 2M 3m 3M 4P 5d 5P 6M 7m\", \"composite blues\"],\r\n // 12-note scales\r\n [\"1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M\", \"chromatic\"]\r\n];\n\nconst NoScaleType = {\r\n ...EmptyPcset,\r\n intervals: [],\r\n aliases: []\r\n};\r\nlet dictionary = [];\r\nlet index = {};\r\nfunction names() {\r\n return dictionary.map(scale => scale.name);\r\n}\r\n/**\r\n * Given a scale name or chroma, return the scale properties\r\n *\r\n * @param {string} type - scale name or pitch class set chroma\r\n * @example\r\n * import { get } from 'tonaljs/scale-type'\r\n * get('major') // => { name: 'major', ... }\r\n */\r\nfunction get(type) {\r\n return index[type] || NoScaleType;\r\n}\r\nconst scaleType = deprecate(\"ScaleDictionary.scaleType\", \"ScaleType.get\", get);\r\n/**\r\n * Return a list of all scale types\r\n */\r\nfunction all() {\r\n return dictionary.slice();\r\n}\r\nconst entries = deprecate(\"ScaleDictionary.entries\", \"ScaleType.all\", all);\r\n/**\r\n * Keys used to reference scale types\r\n */\r\nfunction keys() {\r\n return Object.keys(index);\r\n}\r\n/**\r\n * Clear the dictionary\r\n */\r\nfunction removeAll() {\r\n dictionary = [];\r\n index = {};\r\n}\r\n/**\r\n * Add a scale into dictionary\r\n * @param intervals\r\n * @param name\r\n * @param aliases\r\n */\r\nfunction add(intervals, name, aliases = []) {\r\n const scale = { ...get$1(intervals), name, intervals, aliases };\r\n dictionary.push(scale);\r\n index[scale.name] = scale;\r\n index[scale.setNum] = scale;\r\n index[scale.chroma] = scale;\r\n scale.aliases.forEach(alias => addAlias(scale, alias));\r\n return scale;\r\n}\r\nfunction addAlias(scale, alias) {\r\n index[alias] = scale;\r\n}\r\nSCALES.forEach(([ivls, name, ...aliases]) => add(ivls.split(\" \"), name, aliases));\r\nvar index$1 = {\r\n names,\r\n get,\r\n all,\r\n add,\r\n removeAll,\r\n keys,\r\n // deprecated\r\n entries,\r\n scaleType\r\n};\n\nexport default index$1;\nexport { NoScaleType, add, addAlias, all, entries, get, keys, names, removeAll, scaleType };\n//# sourceMappingURL=index.es.js.map\n","import { detect } from '@tonaljs/chord-detect';\nexport { detect } from '@tonaljs/chord-detect';\nimport { get as get$1, all as all$1 } from '@tonaljs/chord-type';\nimport { tokenizeNote, note, distance, transpose as transpose$1, deprecate } from '@tonaljs/core';\nimport { isSupersetOf, isSubsetOf } from '@tonaljs/pcset';\nimport { all } from '@tonaljs/scale-type';\n\nconst NoChord = {\r\n empty: true,\r\n name: \"\",\r\n symbol: \"\",\r\n root: \"\",\r\n rootDegree: 0,\r\n type: \"\",\r\n tonic: null,\r\n setNum: NaN,\r\n quality: \"Unknown\",\r\n chroma: \"\",\r\n normalized: \"\",\r\n aliases: [],\r\n notes: [],\r\n intervals: []\r\n};\r\n// 6, 64, 7, 9, 11 and 13 are consider part of the chord\r\n// (see https://github.com/danigb/tonal/issues/55)\r\nconst NUM_TYPES = /^(6|64|7|9|11|13)$/;\r\n/**\r\n * Tokenize a chord name. It returns an array with the tonic and chord type\r\n * If not tonic is found, all the name is considered the chord name.\r\n *\r\n * This function does NOT check if the chord type exists or not. It only tries\r\n * to split the tonic and chord type.\r\n *\r\n * @function\r\n * @param {string} name - the chord name\r\n * @return {Array} an array with [tonic, type]\r\n * @example\r\n * tokenize(\"Cmaj7\") // => [ \"C\", \"maj7\" ]\r\n * tokenize(\"C7\") // => [ \"C\", \"7\" ]\r\n * tokenize(\"mMaj7\") // => [ null, \"mMaj7\" ]\r\n * tokenize(\"Cnonsense\") // => [ null, \"nonsense\" ]\r\n */\r\nfunction tokenize(name) {\r\n const [letter, acc, oct, type] = tokenizeNote(name);\r\n if (letter === \"\") {\r\n return [\"\", name];\r\n }\r\n // aug is augmented (see https://github.com/danigb/tonal/issues/55)\r\n if (letter === \"A\" && type === \"ug\") {\r\n return [\"\", \"aug\"];\r\n }\r\n // see: https://github.com/tonaljs/tonal/issues/70\r\n if (!type && (oct === \"4\" || oct === \"5\")) {\r\n return [letter + acc, oct];\r\n }\r\n if (NUM_TYPES.test(oct)) {\r\n return [letter + acc, oct + type];\r\n }\r\n else {\r\n return [letter + acc + oct, type];\r\n }\r\n}\r\n/**\r\n * Get a Chord from a chord name.\r\n */\r\nfunction get(src) {\r\n if (src === \"\") {\r\n return NoChord;\r\n }\r\n if (Array.isArray(src) && src.length === 2) {\r\n return getChord(src[1], src[0]);\r\n }\r\n else {\r\n const [tonic, type] = tokenize(src);\r\n const chord = getChord(type, tonic);\r\n return chord.empty ? getChord(src) : chord;\r\n }\r\n}\r\n/**\r\n * Get chord properties\r\n *\r\n * @param typeName - the chord type name\r\n * @param [tonic] - Optional tonic\r\n * @param [root] - Optional root (requires a tonic)\r\n */\r\nfunction getChord(typeName, optionalTonic, optionalRoot) {\r\n const type = get$1(typeName);\r\n const tonic = note(optionalTonic || \"\");\r\n const root = note(optionalRoot || \"\");\r\n if (type.empty ||\r\n (optionalTonic && tonic.empty) ||\r\n (optionalRoot && root.empty)) {\r\n return NoChord;\r\n }\r\n const rootInterval = distance(tonic.pc, root.pc);\r\n const rootDegree = type.intervals.indexOf(rootInterval) + 1;\r\n if (!root.empty && !rootDegree) {\r\n return NoChord;\r\n }\r\n const notes = tonic.empty\r\n ? []\r\n : type.intervals.map(i => transpose$1(tonic, i));\r\n typeName = type.aliases.indexOf(typeName) !== -1 ? typeName : type.aliases[0];\r\n const symbol = `${tonic.empty ? \"\" : tonic.pc}${typeName}${root.empty ? \"\" : \"/\" + root.pc}`;\r\n const name = `${optionalTonic ? tonic.pc + \" \" : \"\"}${type.name}${optionalRoot ? \" over \" + root.pc : \"\"}`;\r\n return {\r\n ...type,\r\n name,\r\n symbol,\r\n type: type.name,\r\n root: root.name,\r\n rootDegree,\r\n tonic: tonic.name,\r\n notes\r\n };\r\n}\r\nconst chord = deprecate(\"Chord.chord\", \"Chord.get\", get);\r\n/**\r\n * Transpose a chord name\r\n *\r\n * @param {string} chordName - the chord name\r\n * @return {string} the transposed chord\r\n *\r\n * @example\r\n * transpose('Dm7', 'P4') // => 'Gm7\r\n */\r\nfunction transpose(chordName, interval) {\r\n const [tonic, type] = tokenize(chordName);\r\n if (!tonic) {\r\n return name;\r\n }\r\n return transpose$1(tonic, interval) + type;\r\n}\r\n/**\r\n * Get all scales where the given chord fits\r\n *\r\n * @example\r\n * chordScales('C7b9')\r\n * // => [\"phrygian dominant\", \"flamenco\", \"spanish heptatonic\", \"half-whole diminished\", \"chromatic\"]\r\n */\r\nfunction chordScales(name) {\r\n const s = get(name);\r\n const isChordIncluded = isSupersetOf(s.chroma);\r\n return all()\r\n .filter(scale => isChordIncluded(scale.chroma))\r\n .map(scale => scale.name);\r\n}\r\n/**\r\n * Get all chords names that are a superset of the given one\r\n * (has the same notes and at least one more)\r\n *\r\n * @function\r\n * @example\r\n * extended(\"CMaj7\")\r\n * // => [ 'Cmaj#4', 'Cmaj7#9#11', 'Cmaj9', 'CM7add13', 'Cmaj13', 'Cmaj9#11', 'CM13#11', 'CM7b9' ]\r\n */\r\nfunction extended(chordName) {\r\n const s = get(chordName);\r\n const isSuperset = isSupersetOf(s.chroma);\r\n return all$1()\r\n .filter(chord => isSuperset(chord.chroma))\r\n .map(chord => s.tonic + chord.aliases[0]);\r\n}\r\n/**\r\n * Find all chords names that are a subset of the given one\r\n * (has less notes but all from the given chord)\r\n *\r\n * @example\r\n */\r\nfunction reduced(chordName) {\r\n const s = get(chordName);\r\n const isSubset = isSubsetOf(s.chroma);\r\n return all$1()\r\n .filter(chord => isSubset(chord.chroma))\r\n .map(chord => s.tonic + chord.aliases[0]);\r\n}\r\nvar index = {\r\n getChord,\r\n get,\r\n detect,\r\n chordScales,\r\n extended,\r\n reduced,\r\n tokenize,\r\n transpose,\r\n // deprecate\r\n chord\r\n};\n\nexport default index;\nexport { chord, chordScales, extended, get, getChord, reduced, tokenize, transpose };\n//# sourceMappingURL=index.es.js.map\n","// source: https://en.wikipedia.org/wiki/Note_value\r\nconst DATA = [\r\n [\r\n 0.125,\r\n \"dl\",\r\n [\"large\", \"duplex longa\", \"maxima\", \"octuple\", \"octuple whole\"]\r\n ],\r\n [0.25, \"l\", [\"long\", \"longa\"]],\r\n [0.5, \"d\", [\"double whole\", \"double\", \"breve\"]],\r\n [1, \"w\", [\"whole\", \"semibreve\"]],\r\n [2, \"h\", [\"half\", \"minim\"]],\r\n [4, \"q\", [\"quarter\", \"crotchet\"]],\r\n [8, \"e\", [\"eighth\", \"quaver\"]],\r\n [16, \"s\", [\"sixteenth\", \"semiquaver\"]],\r\n [32, \"t\", [\"thirty-second\", \"demisemiquaver\"]],\r\n [64, \"sf\", [\"sixty-fourth\", \"hemidemisemiquaver\"]],\r\n [128, \"h\", [\"hundred twenty-eighth\"]],\r\n [256, \"th\", [\"two hundred fifty-sixth\"]]\r\n];\n\nconst VALUES = [];\r\nDATA.forEach(([denominator, shorthand, names]) => add(denominator, shorthand, names));\r\nconst NoDuration = {\r\n empty: true,\r\n name: \"\",\r\n value: 0,\r\n fraction: [0, 0],\r\n shorthand: \"\",\r\n dots: \"\",\r\n names: []\r\n};\r\nfunction names() {\r\n return VALUES.reduce((names, duration) => {\r\n duration.names.forEach(name => names.push(name));\r\n return names;\r\n }, []);\r\n}\r\nfunction shorthands() {\r\n return VALUES.map(dur => dur.shorthand);\r\n}\r\nconst REGEX = /^([^.]+)(\\.*)$/;\r\nfunction get(name) {\r\n const [_, simple, dots] = REGEX.exec(name) || [];\r\n const base = VALUES.find(dur => dur.shorthand === simple || dur.names.includes(simple));\r\n if (!base) {\r\n return NoDuration;\r\n }\r\n const fraction = calcDots(base.fraction, dots.length);\r\n const value = fraction[0] / fraction[1];\r\n return { ...base, name, dots, value, fraction };\r\n}\r\nconst value = (name) => get(name).value;\r\nconst fraction = (name) => get(name).fraction;\r\nvar index = { names, shorthands, get, value, fraction };\r\n//// PRIVATE ////\r\nfunction add(denominator, shorthand, names) {\r\n VALUES.push({\r\n empty: false,\r\n dots: \"\",\r\n name: \"\",\r\n value: 1 / denominator,\r\n fraction: denominator < 1 ? [1 / denominator, 1] : [1, denominator],\r\n shorthand,\r\n names\r\n });\r\n}\r\nfunction calcDots(fraction, dots) {\r\n const pow = Math.pow(2, dots);\r\n let numerator = fraction[0] * pow;\r\n let denominator = fraction[1] * pow;\r\n const base = numerator;\r\n // add fractions\r\n for (let i = 0; i < dots; i++) {\r\n numerator += base / Math.pow(2, i + 1);\r\n }\r\n // simplify\r\n while (numerator % 2 === 0 && denominator % 2 === 0) {\r\n numerator /= 2;\r\n denominator /= 2;\r\n }\r\n return [numerator, denominator];\r\n}\n\nexport default index;\nexport { fraction, get, names, shorthands, value };\n//# sourceMappingURL=index.es.js.map\n","import { interval, distance as distance$1, coordToInterval } from '@tonaljs/core';\n\n/**\r\n * Get the natural list of names\r\n */\r\nfunction names() {\r\n return \"1P 2M 3M 4P 5P 6m 7m\".split(\" \");\r\n}\r\n/**\r\n * Get properties of an interval\r\n *\r\n * @function\r\n * @example\r\n * Interval.get('P4') // => {\"alt\": 0, \"dir\": 1, \"name\": \"4P\", \"num\": 4, \"oct\": 0, \"q\": \"P\", \"semitones\": 5, \"simple\": 4, \"step\": 3, \"type\": \"perfectable\"}\r\n */\r\nconst get = interval;\r\n/**\r\n * Get name of an interval\r\n *\r\n * @function\r\n * @example\r\n * Interval.name('4P') // => \"4P\"\r\n * Interval.name('P4') // => \"4P\"\r\n * Interval.name('C4') // => \"\"\r\n */\r\nconst name = (name) => interval(name).name;\r\n/**\r\n * Get semitones of an interval\r\n * @function\r\n * @example\r\n * Interval.semitones('P4') // => 5\r\n */\r\nconst semitones = (name) => interval(name).semitones;\r\n/**\r\n * Get quality of an interval\r\n * @function\r\n * @example\r\n * Interval.quality('P4') // => \"P\"\r\n */\r\nconst quality = (name) => interval(name).q;\r\n/**\r\n * Get number of an interval\r\n * @function\r\n * @example\r\n * Interval.num('P4') // => 4\r\n */\r\nconst num = (name) => interval(name).num;\r\n/**\r\n * Get the simplified version of an interval.\r\n *\r\n * @function\r\n * @param {string} interval - the interval to simplify\r\n * @return {string} the simplified interval\r\n *\r\n * @example\r\n * Interval.simplify(\"9M\") // => \"2M\"\r\n * Interval.simplify(\"2M\") // => \"2M\"\r\n * Interval.simplify(\"-2M\") // => \"7m\"\r\n * [\"8P\", \"9M\", \"10M\", \"11P\", \"12P\", \"13M\", \"14M\", \"15P\"].map(Interval.simplify)\r\n * // => [ \"8P\", \"2M\", \"3M\", \"4P\", \"5P\", \"6M\", \"7M\", \"8P\" ]\r\n */\r\nfunction simplify(name) {\r\n const i = interval(name);\r\n return i.empty ? \"\" : i.simple + i.q;\r\n}\r\n/**\r\n * Get the inversion (https://en.wikipedia.org/wiki/Inversion_(music)#Intervals)\r\n * of an interval.\r\n *\r\n * @function\r\n * @param {string} interval - the interval to invert in interval shorthand\r\n * notation or interval array notation\r\n * @return {string} the inverted interval\r\n *\r\n * @example\r\n * Interval.invert(\"3m\") // => \"6M\"\r\n * Interval.invert(\"2M\") // => \"7m\"\r\n */\r\nfunction invert(name) {\r\n const i = interval(name);\r\n if (i.empty) {\r\n return \"\";\r\n }\r\n const step = (7 - i.step) % 7;\r\n const alt = i.type === \"perfectable\" ? -i.alt : -(i.alt + 1);\r\n return interval({ step, alt, oct: i.oct, dir: i.dir }).name;\r\n}\r\n// interval numbers\r\nconst IN = [1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7];\r\n// interval qualities\r\nconst IQ = \"P m M m M P d P m M m M\".split(\" \");\r\n/**\r\n * Get interval name from semitones number. Since there are several interval\r\n * names for the same number, the name it's arbitrary, but deterministic.\r\n *\r\n * @param {Integer} num - the number of semitones (can be negative)\r\n * @return {string} the interval name\r\n * @example\r\n * Interval.fromSemitones(7) // => \"5P\"\r\n * Interval.fromSemitones(-7) // => \"-5P\"\r\n */\r\nfunction fromSemitones(semitones) {\r\n const d = semitones < 0 ? -1 : 1;\r\n const n = Math.abs(semitones);\r\n const c = n % 12;\r\n const o = Math.floor(n / 12);\r\n return d * (IN[c] + 7 * o) + IQ[c];\r\n}\r\n/**\r\n * Find interval between two notes\r\n *\r\n * @example\r\n * Interval.distance(\"C4\", \"G4\"); // => \"5P\"\r\n */\r\nconst distance = distance$1;\r\n/**\r\n * Adds two intervals\r\n *\r\n * @function\r\n * @param {string} interval1\r\n * @param {string} interval2\r\n * @return {string} the added interval name\r\n * @example\r\n * Interval.add(\"3m\", \"5P\") // => \"7m\"\r\n */\r\nconst add = combinator((a, b) => [a[0] + b[0], a[1] + b[1]]);\r\n/**\r\n * Returns a function that adds an interval\r\n *\r\n * @function\r\n * @example\r\n * ['1P', '2M', '3M'].map(Interval.addTo('5P')) // => [\"5P\", \"6M\", \"7M\"]\r\n */\r\nconst addTo = (interval) => (other) => add(interval, other);\r\n/**\r\n * Subtracts two intervals\r\n *\r\n * @function\r\n * @param {string} minuendInterval\r\n * @param {string} subtrahendInterval\r\n * @return {string} the substracted interval name\r\n * @example\r\n * Interval.substract('5P', '3M') // => '3m'\r\n * Interval.substract('3M', '5P') // => '-3m'\r\n */\r\nconst substract = combinator((a, b) => [a[0] - b[0], a[1] - b[1]]);\r\nvar index = {\r\n names,\r\n get,\r\n name,\r\n num,\r\n semitones,\r\n quality,\r\n fromSemitones,\r\n distance,\r\n invert,\r\n simplify,\r\n add,\r\n addTo,\r\n substract\r\n};\r\nfunction combinator(fn) {\r\n return (a, b) => {\r\n const coordA = interval(a).coord;\r\n const coordB = interval(b).coord;\r\n if (coordA && coordB) {\r\n const coord = fn(coordA, coordB);\r\n return coordToInterval(coord).name;\r\n }\r\n };\r\n}\n\nexport default index;\nexport { add, addTo, distance, fromSemitones, get, invert, name, names, num, quality, semitones, simplify, substract };\n//# sourceMappingURL=index.es.js.map\n","import { note } from '@tonaljs/core';\n\nfunction isMidi(arg) {\r\n return +arg >= 0 && +arg <= 127;\r\n}\r\n/**\r\n * Get the note midi number (a number between 0 and 127)\r\n *\r\n * It returns undefined if not valid note name\r\n *\r\n * @function\r\n * @param {string|number} note - the note name or midi number\r\n * @return {Integer} the midi number or undefined if not valid note\r\n * @example\r\n * import { toMidi } from '@tonaljs/midi'\r\n * toMidi(\"C4\") // => 60\r\n * toMidi(60) // => 60\r\n * toMidi('60') // => 60\r\n */\r\nfunction toMidi(note$1) {\r\n if (isMidi(note$1)) {\r\n return +note$1;\r\n }\r\n const n = note(note$1);\r\n return n.empty ? null : n.midi;\r\n}\r\n/**\r\n * Get the frequency in hertzs from midi number\r\n *\r\n * @param {number} midi - the note midi number\r\n * @param {number} [tuning = 440] - A4 tuning frequency in Hz (440 by default)\r\n * @return {number} the frequency or null if not valid note midi\r\n * @example\r\n * import { midiToFreq} from '@tonaljs/midi'\r\n * midiToFreq(69) // => 440\r\n */\r\nfunction midiToFreq(midi, tuning = 440) {\r\n return Math.pow(2, (midi - 69) / 12) * tuning;\r\n}\r\nconst L2 = Math.log(2);\r\nconst L440 = Math.log(440);\r\n/**\r\n * Get the midi number from a frequency in hertz. The midi number can\r\n * contain decimals (with two digits precission)\r\n *\r\n * @param {number} frequency\r\n * @return {number}\r\n * @example\r\n * import { freqToMidi} from '@tonaljs/midi'\r\n * freqToMidi(220)); //=> 57\r\n * freqToMidi(261.62)); //=> 60\r\n * freqToMidi(261)); //=> 59.96\r\n */\r\nfunction freqToMidi(freq) {\r\n const v = (12 * (Math.log(freq) - L440)) / L2 + 69;\r\n return Math.round(v * 100) / 100;\r\n}\r\nconst SHARPS = \"C C# D D# E F F# G G# A A# B\".split(\" \");\r\nconst FLATS = \"C Db D Eb E F Gb G Ab A Bb B\".split(\" \");\r\n/**\r\n * Given a midi number, returns a note name. The altered notes will have\r\n * flats unless explicitly set with the optional `useSharps` parameter.\r\n *\r\n * @function\r\n * @param {number} midi - the midi note number\r\n * @param {Object} options = default: `{ sharps: false, pitchClass: false }`\r\n * @param {boolean} useSharps - (Optional) set to true to use sharps instead of flats\r\n * @return {string} the note name\r\n * @example\r\n * import { midiToNoteName } from '@tonaljs/midi'\r\n * midiToNoteName(61) // => \"Db4\"\r\n * midiToNoteName(61, { pitchClass: true }) // => \"Db\"\r\n * midiToNoteName(61, { sharps: true }) // => \"C#4\"\r\n * midiToNoteName(61, { pitchClass: true, sharps: true }) // => \"C#\"\r\n * // it rounds to nearest note\r\n * midiToNoteName(61.7) // => \"D4\"\r\n */\r\nfunction midiToNoteName(midi, options = {}) {\r\n midi = Math.round(midi);\r\n const pcs = options.sharps === true ? SHARPS : FLATS;\r\n const pc = pcs[midi % 12];\r\n if (options.pitchClass) {\r\n return pc;\r\n }\r\n const o = Math.floor(midi / 12) - 1;\r\n return pc + o;\r\n}\r\nvar index = { isMidi, toMidi, midiToFreq, midiToNoteName, freqToMidi };\n\nexport default index;\nexport { freqToMidi, isMidi, midiToFreq, midiToNoteName, toMidi };\n//# sourceMappingURL=index.es.js.map\n","import { note, transpose as transpose$1, coordToNote } from '@tonaljs/core';\nimport { midiToNoteName } from '@tonaljs/midi';\n\nconst NAMES = [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"];\r\nconst toName = (n) => n.name;\r\nconst onlyNotes = (array) => array.map(note).filter(n => !n.empty);\r\n/**\r\n * Return the natural note names without octave\r\n * @function\r\n * @example\r\n * Note.names(); // => [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"]\r\n */\r\nfunction names(array) {\r\n if (array === undefined) {\r\n return NAMES.slice();\r\n }\r\n else if (!Array.isArray(array)) {\r\n return [];\r\n }\r\n else {\r\n return onlyNotes(array).map(toName);\r\n }\r\n}\r\n/**\r\n * Get a note from a note name\r\n *\r\n * @function\r\n * @example\r\n * Note.get('Bb4') // => { name: \"Bb4\", midi: 70, chroma: 10, ... }\r\n */\r\nconst get = note;\r\n/**\r\n * Get the note name\r\n * @function\r\n */\r\nconst name = (note) => get(note).name;\r\n/**\r\n * Get the note pitch class name\r\n * @function\r\n */\r\nconst pitchClass = (note) => get(note).pc;\r\n/**\r\n * Get the note accidentals\r\n * @function\r\n */\r\nconst accidentals = (note) => get(note).acc;\r\n/**\r\n * Get the note octave\r\n * @function\r\n */\r\nconst octave = (note) => get(note).oct;\r\n/**\r\n * Get the note midi\r\n * @function\r\n */\r\nconst midi = (note) => get(note).midi;\r\n/**\r\n * Get the note midi\r\n * @function\r\n */\r\nconst freq = (note) => get(note).freq;\r\n/**\r\n * Get the note chroma\r\n * @function\r\n */\r\nconst chroma = (note) => get(note).chroma;\r\n/**\r\n * Given a midi number, returns a note name. Uses flats for altered notes.\r\n *\r\n * @function\r\n * @param {number} midi - the midi note number\r\n * @return {string} the note name\r\n * @example\r\n * Note.fromMidi(61) // => \"Db4\"\r\n * Note.fromMidi(61.7) // => \"D4\"\r\n */\r\nfunction fromMidi(midi) {\r\n return midiToNoteName(midi);\r\n}\r\n/**\r\n * Given a midi number, returns a note name. Uses flats for altered notes.\r\n *\r\n * @function\r\n * @param {number} midi - the midi note number\r\n * @return {string} the note name\r\n * @example\r\n * Note.fromMidiSharps(61) // => \"C#4\"\r\n */\r\nfunction fromMidiSharps(midi) {\r\n return midiToNoteName(midi, { sharps: true });\r\n}\r\n/**\r\n * Transpose a note by an interval\r\n */\r\nconst transpose = transpose$1;\r\nconst tr = transpose$1;\r\n/**\r\n * Transpose by an interval.\r\n * @function\r\n * @param {string} interval\r\n * @return {function} a function that transposes by the given interval\r\n * @example\r\n * [\"C\", \"D\", \"E\"].map(Note.transposeBy(\"5P\"));\r\n * // => [\"G\", \"A\", \"B\"]\r\n */\r\nconst transposeBy = (interval) => (note) => transpose(note, interval);\r\nconst trBy = transposeBy;\r\n/**\r\n * Transpose from a note\r\n * @function\r\n * @param {string} note\r\n * @return {function} a function that transposes the the note by an interval\r\n * [\"1P\", \"3M\", \"5P\"].map(Note.transposeFrom(\"C\"));\r\n * // => [\"C\", \"E\", \"G\"]\r\n */\r\nconst transposeFrom = (note) => (interval) => transpose(note, interval);\r\nconst trFrom = transposeFrom;\r\n/**\r\n * Transpose a note by a number of perfect fifths.\r\n *\r\n * @function\r\n * @param {string} note - the note name\r\n * @param {number} fifhts - the number of fifths\r\n * @return {string} the transposed note name\r\n *\r\n * @example\r\n * import { transposeFifths } from \"@tonaljs/note\"\r\n * transposeFifths(\"G4\", 1) // => \"D\"\r\n * [0, 1, 2, 3, 4].map(fifths => transposeFifths(\"C\", fifths)) // => [\"C\", \"G\", \"D\", \"A\", \"E\"]\r\n */\r\nfunction transposeFifths(noteName, fifths) {\r\n const note = get(noteName);\r\n if (note.empty) {\r\n return \"\";\r\n }\r\n const [nFifths, nOcts] = note.coord;\r\n const transposed = nOcts === undefined\r\n ? coordToNote([nFifths + fifths])\r\n : coordToNote([nFifths + fifths, nOcts]);\r\n return transposed.name;\r\n}\r\nconst trFifths = transposeFifths;\r\nconst ascending = (a, b) => a.height - b.height;\r\nconst descending = (a, b) => b.height - a.height;\r\nfunction sortedNames(notes, comparator) {\r\n comparator = comparator || ascending;\r\n return onlyNotes(notes)\r\n .sort(comparator)\r\n .map(toName);\r\n}\r\nfunction sortedUniqNames(notes) {\r\n return sortedNames(notes, ascending).filter((n, i, a) => i === 0 || n !== a[i - 1]);\r\n}\r\n/**\r\n * Simplify a note\r\n *\r\n * @function\r\n * @param {string} note - the note to be simplified\r\n * - sameAccType: default true. Use same kind of accidentals that source\r\n * @return {string} the simplified note or '' if not valid note\r\n * @example\r\n * simplify(\"C##\") // => \"D\"\r\n * simplify(\"C###\") // => \"D#\"\r\n * simplify(\"C###\")\r\n * simplify(\"B#4\") // => \"C5\"\r\n */\r\nconst simplify = nameBuilder(true);\r\n/**\r\n * Get enharmonic of a note\r\n *\r\n * @function\r\n * @param {string} note\r\n * @return {string} the enharmonic note or '' if not valid note\r\n * @example\r\n * Note.enharmonic(\"Db\") // => \"C#\"\r\n * Note.enharmonic(\"C\") // => \"C\"\r\n */\r\nconst enharmonic = nameBuilder(false);\r\nfunction nameBuilder(sameAccidentals) {\r\n return (noteName) => {\r\n const note = get(noteName);\r\n if (note.empty) {\r\n return \"\";\r\n }\r\n const sharps = sameAccidentals ? note.alt > 0 : note.alt < 0;\r\n const pitchClass = note.midi === null;\r\n return midiToNoteName(note.midi || note.chroma, { sharps, pitchClass });\r\n };\r\n}\r\nvar index = {\r\n names,\r\n get,\r\n name,\r\n pitchClass,\r\n accidentals,\r\n octave,\r\n midi,\r\n ascending,\r\n descending,\r\n sortedNames,\r\n sortedUniqNames,\r\n fromMidi,\r\n fromMidiSharps,\r\n freq,\r\n chroma,\r\n transpose,\r\n tr,\r\n transposeBy,\r\n trBy,\r\n transposeFrom,\r\n trFrom,\r\n transposeFifths,\r\n trFifths,\r\n simplify,\r\n enharmonic\r\n};\n\nexport default index;\nexport { accidentals, ascending, chroma, descending, enharmonic, freq, fromMidi, fromMidiSharps, get, midi, name, names, octave, pitchClass, simplify, sortedNames, sortedUniqNames, tr, trBy, trFifths, trFrom, transpose, transposeBy, transposeFifths, transposeFrom };\n//# sourceMappingURL=index.es.js.map\n","import { isPitch, altToAcc, isNamed, deprecate, accToAlt, interval } from '@tonaljs/core';\n\nconst NoRomanNumeral = { empty: true, name: \"\", chordType: \"\" };\r\nconst cache = {};\r\n/**\r\n * Get properties of a roman numeral string\r\n *\r\n * @function\r\n * @param {string} - the roman numeral string (can have type, like: Imaj7)\r\n * @return {Object} - the roman numeral properties\r\n * @param {string} name - the roman numeral (tonic)\r\n * @param {string} type - the chord type\r\n * @param {string} num - the number (1 = I, 2 = II...)\r\n * @param {boolean} major - major or not\r\n *\r\n * @example\r\n * romanNumeral(\"VIIb5\") // => { name: \"VII\", type: \"b5\", num: 7, major: true }\r\n */\r\nfunction get(src) {\r\n return typeof src === \"string\"\r\n ? cache[src] || (cache[src] = parse(src))\r\n : typeof src === \"number\"\r\n ? get(NAMES[src] || \"\")\r\n : isPitch(src)\r\n ? fromPitch(src)\r\n : isNamed(src)\r\n ? get(src.name)\r\n : NoRomanNumeral;\r\n}\r\nconst romanNumeral = deprecate(\"RomanNumeral.romanNumeral\", \"RomanNumeral.get\", get);\r\n/**\r\n * Get roman numeral names\r\n *\r\n * @function\r\n * @param {boolean} [isMajor=true]\r\n * @return {Array}\r\n *\r\n * @example\r\n * names() // => [\"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\"]\r\n */\r\nfunction names(major = true) {\r\n return (major ? NAMES : NAMES_MINOR).slice();\r\n}\r\nfunction fromPitch(pitch) {\r\n return get(altToAcc(pitch.alt) + NAMES[pitch.step]);\r\n}\r\nconst REGEX = /^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;\r\nfunction tokenize(str) {\r\n return (REGEX.exec(str) || [\"\", \"\", \"\", \"\"]);\r\n}\r\nconst ROMANS = \"I II III IV V VI VII\";\r\nconst NAMES = ROMANS.split(\" \");\r\nconst NAMES_MINOR = ROMANS.toLowerCase().split(\" \");\r\nfunction parse(src) {\r\n const [name, acc, roman, chordType] = tokenize(src);\r\n if (!roman) {\r\n return NoRomanNumeral;\r\n }\r\n const upperRoman = roman.toUpperCase();\r\n const step = NAMES.indexOf(upperRoman);\r\n const alt = accToAlt(acc);\r\n const dir = 1;\r\n return {\r\n empty: false,\r\n name,\r\n roman,\r\n interval: interval({ step, alt, dir }).name,\r\n acc,\r\n chordType,\r\n alt,\r\n step,\r\n major: roman === upperRoman,\r\n oct: 0,\r\n dir\r\n };\r\n}\r\nvar index = {\r\n names,\r\n get,\r\n // deprecated\r\n romanNumeral\r\n};\n\nexport default index;\nexport { get, names, tokenize };\n//# sourceMappingURL=index.es.js.map\n","import { transpose, altToAcc, accToAlt, note } from '@tonaljs/core';\nimport { transposeFifths } from '@tonaljs/note';\nimport { get } from '@tonaljs/roman-numeral';\n\nconst mapToScale = (scale) => (symbols, sep = \"\") => symbols.map((symbol, index) => symbol !== \"-\" ? scale[index] + sep + symbol : \"\");\r\nfunction keyScale(gradesLiteral, chordsLiteral, hfLiteral, chordScalesLiteral) {\r\n return (tonic) => {\r\n const grades = gradesLiteral.split(\" \");\r\n const intervals = grades.map(gr => get(gr).interval || \"\");\r\n const scale = intervals.map(interval => transpose(tonic, interval));\r\n const map = mapToScale(scale);\r\n return {\r\n tonic,\r\n grades,\r\n intervals,\r\n scale,\r\n chords: map(chordsLiteral.split(\" \")),\r\n chordsHarmonicFunction: hfLiteral.split(\" \"),\r\n chordScales: map(chordScalesLiteral.split(\",\"), \" \")\r\n };\r\n };\r\n}\r\nconst distInFifths = (from, to) => {\r\n const f = note(from);\r\n const t = note(to);\r\n return f.empty || t.empty ? 0 : t.coord[0] - f.coord[0];\r\n};\r\nconst MajorScale = keyScale(\"I II III IV V VI VII\", \"maj7 m7 m7 maj7 7 m7 m7b5\", \"T SD T SD D T D\", \"major,dorian,phrygian,lydian,mixolydian,minor,locrian\");\r\nconst NaturalScale = keyScale(\"I II bIII IV V bVI bVII\", \"m7 m7b5 maj7 m7 m7 maj7 7\", \"T SD T SD D SD SD\", \"minor,locrian,major,dorian,phrygian,lydian,mixolydian\");\r\nconst HarmonicScale = keyScale(\"I II bIII IV V bVI VII\", \"mmaj7 m7b5 +maj7 m7 7 maj7 mo7\", \"T SD T SD D SD D\", \"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian\");\r\nconst MelodicScale = keyScale(\"I II bIII IV V VI VII\", \"m6 m7 +maj7 7 7 m7b5 m7b5\", \"T SD T SD D - -\", \"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered\");\r\n/**\r\n * Get a major key properties in a given tonic\r\n * @param tonic\r\n */\r\nfunction majorKey(tonic) {\r\n const keyScale = MajorScale(tonic);\r\n const alteration = distInFifths(\"C\", tonic);\r\n const map = mapToScale(keyScale.scale);\r\n return {\r\n ...keyScale,\r\n type: \"major\",\r\n minorRelative: transpose(tonic, \"-3m\"),\r\n alteration,\r\n keySignature: altToAcc(alteration),\r\n secondaryDominants: map(\"- VI7 VII7 I7 II7 III7 -\".split(\" \")),\r\n secondaryDominantsMinorRelative: map(\"- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -\".split(\" \")),\r\n substituteDominants: map(\"- bIII7 IV7 bV7 bVI7 bVII7 -\".split(\" \")),\r\n substituteDominantsMinorRelative: map(\"- IIIm7 Im7 IIbm7 VIm7 IVm7 -\".split(\" \"))\r\n };\r\n}\r\n/**\r\n * Get minor key properties in a given tonic\r\n * @param tonic\r\n */\r\nfunction minorKey(tonic) {\r\n const alteration = distInFifths(\"C\", tonic) - 3;\r\n return {\r\n type: \"minor\",\r\n tonic,\r\n relativeMajor: transpose(tonic, \"3m\"),\r\n alteration,\r\n keySignature: altToAcc(alteration),\r\n natural: NaturalScale(tonic),\r\n harmonic: HarmonicScale(tonic),\r\n melodic: MelodicScale(tonic)\r\n };\r\n}\r\n/**\r\n * Given a key signature, returns the tonic of the major key\r\n * @param sigature\r\n * @example\r\n * majorTonicFromKeySignature('###') // => 'A'\r\n */\r\nfunction majorTonicFromKeySignature(sig) {\r\n if (typeof sig === \"number\") {\r\n return transposeFifths(\"C\", sig);\r\n }\r\n else if (typeof sig === \"string\" && /^b+|#+$/.test(sig)) {\r\n return transposeFifths(\"C\", accToAlt(sig));\r\n }\r\n return null;\r\n}\r\nvar index = { majorKey, majorTonicFromKeySignature, minorKey };\n\nexport default index;\nexport { majorKey, majorTonicFromKeySignature, minorKey };\n//# sourceMappingURL=index.es.js.map\n","import { deprecate } from '@tonaljs/core';\nimport { chromaToIntervals, EmptyPcset } from '@tonaljs/pcset';\n\nconst DATA = [\r\n [0, 2773, 0, \"ionian\", \"\", \"Maj7\", \"major\"],\r\n [1, 2902, 2, \"dorian\", \"m\", \"m7\"],\r\n [2, 3418, 4, \"phrygian\", \"m\", \"m7\"],\r\n [3, 2741, -1, \"lydian\", \"\", \"Maj7\"],\r\n [4, 2774, 1, \"mixolydian\", \"\", \"7\"],\r\n [5, 2906, 3, \"aeolian\", \"m\", \"m7\", \"minor\"],\r\n [6, 3434, 5, \"locrian\", \"dim\", \"m7b5\"]\r\n];\n\nconst NoMode = {\r\n ...EmptyPcset,\r\n name: \"\",\r\n alt: 0,\r\n modeNum: NaN,\r\n triad: \"\",\r\n seventh: \"\",\r\n aliases: []\r\n};\r\nconst modes = DATA.map(toMode);\r\nconst index = {};\r\nmodes.forEach(mode => {\r\n index[mode.name] = mode;\r\n mode.aliases.forEach(alias => {\r\n index[alias] = mode;\r\n });\r\n});\r\n/**\r\n * Get a Mode by it's name\r\n *\r\n * @example\r\n * get('dorian')\r\n * // =>\r\n * // {\r\n * // intervals: [ '1P', '2M', '3m', '4P', '5P', '6M', '7m' ],\r\n * // modeNum: 1,\r\n * // chroma: '101101010110',\r\n * // normalized: '101101010110',\r\n * // name: 'dorian',\r\n * // setNum: 2902,\r\n * // alt: 2,\r\n * // triad: 'm',\r\n * // seventh: 'm7',\r\n * // aliases: []\r\n * // }\r\n */\r\nfunction get(name) {\r\n return typeof name === \"string\"\r\n ? index[name.toLowerCase()] || NoMode\r\n : name && name.name\r\n ? get(name.name)\r\n : NoMode;\r\n}\r\nconst mode = deprecate(\"Mode.mode\", \"Mode.get\", get);\r\n/**\r\n * Get a list of all modes\r\n */\r\nfunction all() {\r\n return modes.slice();\r\n}\r\nconst entries = deprecate(\"Mode.mode\", \"Mode.all\", all);\r\n/**\r\n * Get a list of all mode names\r\n */\r\nfunction names() {\r\n return modes.map(mode => mode.name);\r\n}\r\nfunction toMode(mode) {\r\n const [modeNum, setNum, alt, name, triad, seventh, alias] = mode;\r\n const aliases = alias ? [alias] : [];\r\n const chroma = Number(setNum).toString(2);\r\n const intervals = chromaToIntervals(chroma);\r\n return {\r\n empty: false,\r\n intervals,\r\n modeNum,\r\n chroma,\r\n normalized: chroma,\r\n name,\r\n setNum,\r\n alt,\r\n triad,\r\n seventh,\r\n aliases\r\n };\r\n}\r\nvar index$1 = {\r\n get,\r\n names,\r\n all,\r\n // deprecated\r\n entries,\r\n mode\r\n};\n\nexport default index$1;\nexport { all, entries, get, mode, names };\n//# sourceMappingURL=index.es.js.map\n","import { tokenize } from '@tonaljs/chord';\nimport { transpose, interval, distance } from '@tonaljs/core';\nimport { get } from '@tonaljs/roman-numeral';\n\n/**\r\n * Given a tonic and a chord list expressed with roman numeral notation\r\n * returns the progression expressed with leadsheet chords symbols notation\r\n * @example\r\n * fromRomanNumerals(\"C\", [\"I\", \"IIm7\", \"V7\"]);\r\n * // => [\"C\", \"Dm7\", \"G7\"]\r\n */\r\nfunction fromRomanNumerals(tonic, chords) {\r\n const romanNumerals = chords.map(get);\r\n return romanNumerals.map(rn => transpose(tonic, interval(rn)) + rn.chordType);\r\n}\r\n/**\r\n * Given a tonic and a chord list with leadsheet symbols notation,\r\n * return the chord list with roman numeral notation\r\n * @example\r\n * toRomanNumerals(\"C\", [\"CMaj7\", \"Dm7\", \"G7\"]);\r\n * // => [\"IMaj7\", \"IIm7\", \"V7\"]\r\n */\r\nfunction toRomanNumerals(tonic, chords) {\r\n return chords.map(chord => {\r\n const [note, chordType] = tokenize(chord);\r\n const intervalName = distance(tonic, note);\r\n const roman = get(interval(intervalName));\r\n return roman.name + chordType;\r\n });\r\n}\r\nvar index = { fromRomanNumerals, toRomanNumerals };\n\nexport default index;\nexport { fromRomanNumerals, toRomanNumerals };\n//# sourceMappingURL=index.es.js.map\n","import { compact, range } from '@tonaljs/collection';\nimport { toMidi, midiToNoteName } from '@tonaljs/midi';\n\n/**\r\n * Create a numeric range. You supply a list of notes or numbers and it will\r\n * be connected to create complex ranges.\r\n *\r\n * @param {Array} array - the list of notes or numbers used\r\n * @return {Array} an array of numbers or empty array if not valid parameters\r\n *\r\n * @example\r\n * numeric([\"C5\", \"C4\"]) // => [ 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60 ]\r\n * // it works midi notes\r\n * numeric([10, 5]) // => [ 10, 9, 8, 7, 6, 5 ]\r\n * // complex range\r\n * numeric([\"C4\", \"E4\", \"Bb3\"]) // => [60, 61, 62, 63, 64, 63, 62, 61, 60, 59, 58]\r\n */\r\nfunction numeric(notes) {\r\n const midi = compact(notes.map(toMidi));\r\n if (!notes.length || midi.length !== notes.length) {\r\n // there is no valid notes\r\n return [];\r\n }\r\n return midi.reduce((result, note) => {\r\n const last = result[result.length - 1];\r\n return result.concat(range(last, note).slice(1));\r\n }, [midi[0]]);\r\n}\r\n/**\r\n * Create a range of chromatic notes. The altered notes will use flats.\r\n *\r\n * @function\r\n * @param {String|Array} list - the list of notes or midi note numbers\r\n * @return {Array} an array of note names\r\n *\r\n * @example\r\n * Range.chromatic(\"C2 E2 D2\") // => [\"C2\", \"Db2\", \"D2\", \"Eb2\", \"E2\", \"Eb2\", \"D2\"]\r\n * // with sharps\r\n * Range.chromatic(\"C2 C3\", true) // => [ \"C2\", \"C#2\", \"D2\", \"D#2\", \"E2\", \"F2\", \"F#2\", \"G2\", \"G#2\", \"A2\", \"A#2\", \"B2\", \"C3\" ]\r\n */\r\nfunction chromatic(notes, options) {\r\n return numeric(notes).map(midi => midiToNoteName(midi, options));\r\n}\r\nvar index = { numeric, chromatic };\n\nexport default index;\nexport { chromatic, numeric };\n//# sourceMappingURL=index.es.js.map\n","import { all } from '@tonaljs/chord-type';\nimport { rotate } from '@tonaljs/collection';\nimport { note, transpose, deprecate } from '@tonaljs/core';\nimport { sortedUniqNames } from '@tonaljs/note';\nimport { isSubsetOf, isSupersetOf, modes } from '@tonaljs/pcset';\nimport { names as names$1, get as get$1, all as all$1 } from '@tonaljs/scale-type';\n\n/**\r\n * References:\r\n * - https://www.researchgate.net/publication/327567188_An_Algorithm_for_Spelling_the_Pitches_of_Any_Musical_Scale\r\n * @module scale\r\n */\r\nconst NoScale = {\r\n empty: true,\r\n name: \"\",\r\n type: \"\",\r\n tonic: null,\r\n setNum: NaN,\r\n chroma: \"\",\r\n normalized: \"\",\r\n aliases: [],\r\n notes: [],\r\n intervals: []\r\n};\r\n/**\r\n * Given a string with a scale name and (optionally) a tonic, split\r\n * that components.\r\n *\r\n * It retuns an array with the form [ name, tonic ] where tonic can be a\r\n * note name or null and name can be any arbitrary string\r\n * (this function doesn\"t check if that scale name exists)\r\n *\r\n * @function\r\n * @param {string} name - the scale name\r\n * @return {Array} an array [tonic, name]\r\n * @example\r\n * tokenize(\"C mixolydean\") // => [\"C\", \"mixolydean\"]\r\n * tokenize(\"anything is valid\") // => [\"\", \"anything is valid\"]\r\n * tokenize() // => [\"\", \"\"]\r\n */\r\nfunction tokenize(name) {\r\n if (typeof name !== \"string\") {\r\n return [\"\", \"\"];\r\n }\r\n const i = name.indexOf(\" \");\r\n const tonic = note(name.substring(0, i));\r\n if (tonic.empty) {\r\n const n = note(name);\r\n return n.empty ? [\"\", name] : [n.name, \"\"];\r\n }\r\n const type = name.substring(tonic.name.length + 1);\r\n return [tonic.name, type.length ? type : \"\"];\r\n}\r\n/**\r\n * Get all scale names\r\n * @function\r\n */\r\nconst names = names$1;\r\n/**\r\n * Get a Scale from a scale name.\r\n */\r\nfunction get(src) {\r\n const tokens = Array.isArray(src) ? src : tokenize(src);\r\n const tonic = note(tokens[0]).name;\r\n const st = get$1(tokens[1]);\r\n if (st.empty) {\r\n return NoScale;\r\n }\r\n const type = st.name;\r\n const notes = tonic\r\n ? st.intervals.map(i => transpose(tonic, i))\r\n : [];\r\n const name = tonic ? tonic + \" \" + type : type;\r\n return { ...st, name, type, tonic, notes };\r\n}\r\nconst scale = deprecate(\"Scale.scale\", \"Scale.get\", get);\r\n/**\r\n * Get all chords that fits a given scale\r\n *\r\n * @function\r\n * @param {string} name - the scale name\r\n * @return {Array} - the chord names\r\n *\r\n * @example\r\n * scaleChords(\"pentatonic\") // => [\"5\", \"64\", \"M\", \"M6\", \"Madd9\", \"Msus2\"]\r\n */\r\nfunction scaleChords(name) {\r\n const s = get(name);\r\n const inScale = isSubsetOf(s.chroma);\r\n return all()\r\n .filter(chord => inScale(chord.chroma))\r\n .map(chord => chord.aliases[0]);\r\n}\r\n/**\r\n * Get all scales names that are a superset of the given one\r\n * (has the same notes and at least one more)\r\n *\r\n * @function\r\n * @param {string} name\r\n * @return {Array} a list of scale names\r\n * @example\r\n * extended(\"major\") // => [\"bebop\", \"bebop dominant\", \"bebop major\", \"chromatic\", \"ichikosucho\"]\r\n */\r\nfunction extended(name) {\r\n const s = get(name);\r\n const isSuperset = isSupersetOf(s.chroma);\r\n return all$1()\r\n .filter(scale => isSuperset(scale.chroma))\r\n .map(scale => scale.name);\r\n}\r\n/**\r\n * Find all scales names that are a subset of the given one\r\n * (has less notes but all from the given scale)\r\n *\r\n * @function\r\n * @param {string} name\r\n * @return {Array} a list of scale names\r\n *\r\n * @example\r\n * reduced(\"major\") // => [\"ionian pentatonic\", \"major pentatonic\", \"ritusen\"]\r\n */\r\nfunction reduced(name) {\r\n const isSubset = isSubsetOf(get(name).chroma);\r\n return all$1()\r\n .filter(scale => isSubset(scale.chroma))\r\n .map(scale => scale.name);\r\n}\r\n/**\r\n * Given an array of notes, return the scale: a pitch class set starting from\r\n * the first note of the array\r\n *\r\n * @function\r\n * @param {string[]} notes\r\n * @return {string[]} pitch classes with same tonic\r\n * @example\r\n * scaleNotes(['C4', 'c3', 'C5', 'C4', 'c4']) // => [\"C\"]\r\n * scaleNotes(['D4', 'c#5', 'A5', 'F#6']) // => [\"D\", \"F#\", \"A\", \"C#\"]\r\n */\r\nfunction scaleNotes(notes) {\r\n const pcset = notes.map(n => note(n).pc).filter(x => x);\r\n const tonic = pcset[0];\r\n const scale = sortedUniqNames(pcset);\r\n return rotate(scale.indexOf(tonic), scale);\r\n}\r\n/**\r\n * Find mode names of a scale\r\n *\r\n * @function\r\n * @param {string} name - scale name\r\n * @example\r\n * modeNames(\"C pentatonic\") // => [\r\n * [\"C\", \"major pentatonic\"],\r\n * [\"D\", \"egyptian\"],\r\n * [\"E\", \"malkos raga\"],\r\n * [\"G\", \"ritusen\"],\r\n * [\"A\", \"minor pentatonic\"]\r\n * ]\r\n */\r\nfunction modeNames(name) {\r\n const s = get(name);\r\n if (s.empty) {\r\n return [];\r\n }\r\n const tonics = s.tonic ? s.notes : s.intervals;\r\n return modes(s.chroma)\r\n .map((chroma, i) => {\r\n const modeName = get(chroma).name;\r\n return modeName ? [tonics[i], modeName] : [\"\", \"\"];\r\n })\r\n .filter(x => x[0]);\r\n}\r\nvar index = {\r\n get,\r\n names,\r\n extended,\r\n modeNames,\r\n reduced,\r\n scaleChords,\r\n scaleNotes,\r\n tokenize,\r\n // deprecated\r\n scale\r\n};\n\nexport default index;\nexport { extended, get, modeNames, names, reduced, scale, scaleChords, scaleNotes, tokenize };\n//# sourceMappingURL=index.es.js.map\n","// CONSTANTS\r\nconst NONE = {\r\n empty: true,\r\n name: \"\",\r\n upper: undefined,\r\n lower: undefined,\r\n type: undefined,\r\n additive: []\r\n};\r\nconst NAMES = [\"4/4\", \"3/4\", \"2/4\", \"2/2\", \"12/8\", \"9/8\", \"6/8\", \"3/8\"];\r\n// PUBLIC API\r\nfunction names() {\r\n return NAMES.slice();\r\n}\r\nconst REGEX = /^(\\d?\\d(?:\\+\\d)*)\\/(\\d)$/;\r\nconst CACHE = new Map();\r\nfunction get(literal) {\r\n const cached = CACHE.get(literal);\r\n if (cached) {\r\n return cached;\r\n }\r\n const ts = build(parse(literal));\r\n CACHE.set(literal, ts);\r\n return ts;\r\n}\r\nfunction parse(literal) {\r\n if (typeof literal === \"string\") {\r\n const [_, up, low] = REGEX.exec(literal) || [];\r\n return parse([up, low]);\r\n }\r\n const [up, down] = literal;\r\n const denominator = +down;\r\n if (typeof up === \"number\") {\r\n return [up, denominator];\r\n }\r\n const list = up.split(\"+\").map(n => +n);\r\n return list.length === 1 ? [list[0], denominator] : [list, denominator];\r\n}\r\nvar index = { names, parse, get };\r\n// PRIVATE\r\nfunction build([up, down]) {\r\n const upper = Array.isArray(up) ? up.reduce((a, b) => a + b, 0) : up;\r\n const lower = down;\r\n if (upper === 0 || lower === 0) {\r\n return NONE;\r\n }\r\n const name = Array.isArray(up) ? `${up.join(\"+\")}/${down}` : `${up}/${down}`;\r\n const additive = Array.isArray(up) ? up : [];\r\n const type = lower === 4 || lower === 2\r\n ? \"simple\"\r\n : lower === 8 && upper % 3 === 0\r\n ? \"compound\"\r\n : \"irregular\";\r\n return {\r\n empty: false,\r\n name,\r\n type,\r\n upper,\r\n lower,\r\n additive\r\n };\r\n}\n\nexport default index;\nexport { get, names, parse };\n//# sourceMappingURL=index.es.js.map\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tonaljs/abc-notation'), require('@tonaljs/array'), require('@tonaljs/chord'), require('@tonaljs/chord-type'), require('@tonaljs/collection'), require('@tonaljs/core'), require('@tonaljs/duration-value'), require('@tonaljs/interval'), require('@tonaljs/key'), require('@tonaljs/midi'), require('@tonaljs/mode'), require('@tonaljs/note'), require('@tonaljs/pcset'), require('@tonaljs/progression'), require('@tonaljs/range'), require('@tonaljs/roman-numeral'), require('@tonaljs/scale'), require('@tonaljs/scale-type'), require('@tonaljs/time-signature')) :\n typeof define === 'function' && define.amd ? define(['exports', '@tonaljs/abc-notation', '@tonaljs/array', '@tonaljs/chord', '@tonaljs/chord-type', '@tonaljs/collection', '@tonaljs/core', '@tonaljs/duration-value', '@tonaljs/interval', '@tonaljs/key', '@tonaljs/midi', '@tonaljs/mode', '@tonaljs/note', '@tonaljs/pcset', '@tonaljs/progression', '@tonaljs/range', '@tonaljs/roman-numeral', '@tonaljs/scale', '@tonaljs/scale-type', '@tonaljs/time-signature'], factory) :\n (global = global || self, factory(global.Tonal = {}, global.abcNotation, global.array, global.chord, global.ChordType, global.collection, global.Core, global.durationValue, global.interval, global.key, global.midi, global.mode, global.note, global.Pcset, global.progression, global.range, global.romanNumeral, global.scale, global.ScaleType, global.timeSignature));\n}(this, (function (exports, abcNotation, array, chord, ChordType, collection, Core, durationValue, interval, key, midi, mode, note, Pcset, progression, range, romanNumeral, scale, ScaleType, timeSignature) { 'use strict';\n\n abcNotation = abcNotation && Object.prototype.hasOwnProperty.call(abcNotation, 'default') ? abcNotation['default'] : abcNotation;\n chord = chord && Object.prototype.hasOwnProperty.call(chord, 'default') ? chord['default'] : chord;\n ChordType = ChordType && Object.prototype.hasOwnProperty.call(ChordType, 'default') ? ChordType['default'] : ChordType;\n collection = collection && Object.prototype.hasOwnProperty.call(collection, 'default') ? collection['default'] : collection;\n durationValue = durationValue && Object.prototype.hasOwnProperty.call(durationValue, 'default') ? durationValue['default'] : durationValue;\n interval = interval && Object.prototype.hasOwnProperty.call(interval, 'default') ? interval['default'] : interval;\n key = key && Object.prototype.hasOwnProperty.call(key, 'default') ? key['default'] : key;\n midi = midi && Object.prototype.hasOwnProperty.call(midi, 'default') ? midi['default'] : midi;\n mode = mode && Object.prototype.hasOwnProperty.call(mode, 'default') ? mode['default'] : mode;\n note = note && Object.prototype.hasOwnProperty.call(note, 'default') ? note['default'] : note;\n Pcset = Pcset && Object.prototype.hasOwnProperty.call(Pcset, 'default') ? Pcset['default'] : Pcset;\n progression = progression && Object.prototype.hasOwnProperty.call(progression, 'default') ? progression['default'] : progression;\n range = range && Object.prototype.hasOwnProperty.call(range, 'default') ? range['default'] : range;\n romanNumeral = romanNumeral && Object.prototype.hasOwnProperty.call(romanNumeral, 'default') ? romanNumeral['default'] : romanNumeral;\n scale = scale && Object.prototype.hasOwnProperty.call(scale, 'default') ? scale['default'] : scale;\n ScaleType = ScaleType && Object.prototype.hasOwnProperty.call(ScaleType, 'default') ? ScaleType['default'] : ScaleType;\n timeSignature = timeSignature && Object.prototype.hasOwnProperty.call(timeSignature, 'default') ? timeSignature['default'] : timeSignature;\n\n // deprecated (backwards compatibility)\r\n var Tonal = Core;\r\n var PcSet = Pcset;\r\n var ChordDictionary = ChordType;\r\n var ScaleDictionary = ScaleType;\n\n Object.keys(Core).forEach(function (k) {\n if (k !== 'default') Object.defineProperty(exports, k, {\n enumerable: true,\n get: function () {\n return Core[k];\n }\n });\n });\n exports.AbcNotation = abcNotation;\n exports.Array = array;\n exports.Chord = chord;\n exports.ChordType = ChordType;\n exports.Collection = collection;\n exports.Core = Core;\n exports.DurationValue = durationValue;\n exports.Interval = interval;\n exports.Key = key;\n exports.Midi = midi;\n exports.Mode = mode;\n exports.Note = note;\n exports.Pcset = Pcset;\n exports.Progression = progression;\n exports.Range = range;\n exports.RomanNumeral = romanNumeral;\n exports.Scale = scale;\n exports.ScaleType = ScaleType;\n exports.TimeSignature = timeSignature;\n exports.ChordDictionary = ChordDictionary;\n exports.PcSet = PcSet;\n exports.ScaleDictionary = ScaleDictionary;\n exports.Tonal = Tonal;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=index.js.map\n"],"names":["fillStr","s","n","Array","Math","abs","join","deprecate","original","alternative","fn","args","console","warn","apply","this","isNamed","src","name","isPitch","pitch","step","alt","FIFTHS","STEPS_TO_OCTS","map","fifths","floor","encode","oct","dir","f","undefined","FIFTHS_TO_STEPS","decode","coord","o","i","unaltered","NoNote","empty","pc","acc","cache","Map","stepToLetter","charAt","altToAcc","accToAlt","length","note","cached","get","value","noteName","tokens","tokenizeNote","letter","octStr","charCodeAt","chroma","SEMI","height","midi","freq","pow","parse","props","pitchName","set","REGEX","str","m","exec","toUpperCase","replace","coordToNote","noteCoord","NoInterval","REGEX$1","RegExp","tokenizeInterval","cache$1","interval","num","q","t","type","simple","test","qToAlt","semitones","SIZES","parse$1","altToQ","pitchName$1","coordToInterval","transpose","intervalName","note$1","interval$1","intervalCoord","distance","fromNote","toNote","from","to","fcoord","tcoord","character","times","tokenize","abcToScientificNotation","a","scientificToAbcNotation","toLowerCase","index","transpose$1","distance$1","sortedNoteNames","notes","filter","sort","b","arr","permutations","slice","reduce","perm","concat","e","pos","newPerm","splice","ascR","descR","len","rnd","random","range","rotate","compact","EmptyPcset","setNum","normalized","intervals","setNumToChroma","Number","toString","chromaToNumber","parseInt","isChroma","[object Object]","isArray","binary","listToChroma","isPcset","normalizedNum","split","_","chromaRotations","chromaToIntervals","chromaToPcset","pcset","IVLS","push","modes","normalize","r","isSubsetOf","isSupersetOf","isNoteIncludedIn","chromas","isEqual","s1","s2","isIncluded","NoChordType","quality","aliases","dictionary","chordType","all","entries","add","fullName","has","indexOf","getQuality","chord","get$1","forEach","alias","addAlias","ivls","names","index$1","x","symbols","removeAll","keys","Object","NotFound","weight","NoScaleType","scale","scaleType","NoChord","symbol","root","rootDegree","tonic","NaN","NUM_TYPES","getChord","typeName","optionalTonic","optionalRoot","rootInterval","detect","source","tonicChroma","pcToName","record","namedSet","mode","chordName","baseNote","findExactMatches","chordScales","isChordIncluded","extended","isSuperset","all$1","reduced","isSubset","VALUES","denominator","shorthand","dots","fraction","NoDuration","base","find","dur","includes","numerator","calcDots","duration","shorthands","IN","IQ","combinator","substract","fromSemitones","d","c","invert","simplify","addTo","other","coordA","coordB","isMidi","arg","toMidi","L2","log","L440","SHARPS","FLATS","midiToNoteName","options","round","sharps","pitchClass","midiToFreq","tuning","freqToMidi","v","NAMES","toName","onlyNotes","array","tr","transposeBy","trBy","transposeFrom","trFrom","transposeFifths","nFifths","nOcts","trFifths","ascending","sortedNames","comparator","sortedUniqNames","nameBuilder","enharmonic","sameAccidentals","accidentals","octave","descending","fromMidi","fromMidiSharps","NoRomanNumeral","roman","upperRoman","major","romanNumeral","ROMANS","NAMES_MINOR","mapToScale","sep","keyScale","gradesLiteral","chordsLiteral","hfLiteral","chordScalesLiteral","grades","gr","chords","chordsHarmonicFunction","distInFifths","MajorScale","NaturalScale","HarmonicScale","MelodicScale","majorKey","alteration","minorRelative","keySignature","secondaryDominants","secondaryDominantsMinorRelative","substituteDominants","substituteDominantsMinorRelative","majorTonicFromKeySignature","sig","minorKey","relativeMajor","natural","harmonic","melodic","NoMode","modeNum","triad","seventh","fromRomanNumerals","rn","toRomanNumerals","numeric","result","last","chromatic","NoScale","substring","st","names$1","modeNames","tonics","modeName","scaleChords","inScale","scaleNotes","NONE","upper","lower","additive","CACHE","literal","up","low","down","list","ts","build","exports","abcNotation","ChordType","collection","Core","durationValue","key","Pcset","progression","ScaleType","timeSignature","prototype","hasOwnProperty","call","Tonal","PcSet","ChordDictionary","ScaleDictionary","k","defineProperty","enumerable","AbcNotation","Chord","Collection","DurationValue","Interval","Key","Midi","Mode","Note","Progression","Range","RomanNumeral","Scale","TimeSignature","factory","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18"],"mappings":"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"} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 6c9db418..122712ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== @@ -36,7 +36,29 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.7.4", "@babel/generator@^7.7.7": +"@babel/core@^7.7.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.7.4", "@babel/generator@^7.7.7": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== @@ -46,6 +68,16 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.9.0", "@babel/generator@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" + integrity sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ== + dependencies: + "@babel/types" "^7.9.5" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/helper-function-name@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" @@ -55,6 +87,15 @@ "@babel/template" "^7.7.4" "@babel/types" "^7.7.4" +"@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" + "@babel/helper-get-function-arity@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" @@ -62,11 +103,75 @@ dependencies: "@babel/types" "^7.7.4" +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + "@babel/helper-split-export-declaration@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" @@ -74,6 +179,18 @@ dependencies: "@babel/types" "^7.7.4" +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + "@babel/helpers@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" @@ -83,6 +200,15 @@ "@babel/traverse" "^7.7.4" "@babel/types" "^7.7.4" +"@babel/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + "@babel/highlight@^7.0.0", "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -92,17 +218,85 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4", "@babel/parser@^7.7.7": +"@babel/parser@^7.1.0", "@babel/parser@^7.7.4", "@babel/parser@^7.7.7": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== -"@babel/plugin-syntax-object-rest-spread@^7.0.0": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" - integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== +"@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" + integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" + integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" "@babel/runtime@^7.8.7": version "7.9.2" @@ -111,7 +305,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.4.0", "@babel/template@^7.7.4": +"@babel/template@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== @@ -120,7 +314,16 @@ "@babel/parser" "^7.7.4" "@babel/types" "^7.7.4" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4": +"@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== @@ -135,7 +338,22 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.7.4": +"@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" + integrity sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.5" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== @@ -144,6 +362,20 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" + integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -226,153 +458,177 @@ unique-filename "^1.1.1" which "^1.3.1" -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" + camelcase "^5.3.1" + find-up "^4.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== +"@jest/console@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.4.0.tgz#e2760b532701137801ba824dcff6bc822c961bac" + integrity sha512-CfE0erx4hdJ6t7RzAcE1wLG6ZzsHSmybvIBQDoCkDM1QaSeWL9wJMzID/2BbHHa7ll9SsbbK43HjbERbBaFX2A== dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" + jest-message-util "^25.4.0" + jest-util "^25.4.0" + slash "^3.0.0" -"@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" +"@jest/core@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.4.0.tgz#cc1fe078df69b8f0fbb023bb0bcee23ef3b89411" + integrity sha512-h1x9WSVV0+TKVtATGjyQIMJENs8aF6eUjnCoi4jyRemYZmekLr8EJOGQqTWEX8W6SbZ6Skesy9pGXrKeAolUJw== + dependencies: + "@jest/console" "^25.4.0" + "@jest/reporters" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + exit "^0.1.2" + graceful-fs "^4.2.3" + jest-changed-files "^25.4.0" + jest-config "^25.4.0" + jest-haste-map "^25.4.0" + jest-message-util "^25.4.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.4.0" + jest-resolve-dependencies "^25.4.0" + jest-runner "^25.4.0" + jest-runtime "^25.4.0" + jest-snapshot "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" + jest-watcher "^25.4.0" + micromatch "^4.0.2" + p-each-series "^2.1.0" + realpath-native "^2.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" +"@jest/environment@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.4.0.tgz#45071f525f0d8c5a51ed2b04fd42b55a8f0c7cb3" + integrity sha512-KDctiak4mu7b4J6BIoN/+LUL3pscBzoUCP+EtSPd2tK9fqyDY5OF+CmkBywkFWezS9tyH5ACOQNtpjtueEDH6Q== + dependencies: + "@jest/fake-timers" "^25.4.0" + "@jest/types" "^25.4.0" + jest-mock "^25.4.0" + +"@jest/fake-timers@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.4.0.tgz#3a9a4289ba836abd084953dca406389a57e00fbd" + integrity sha512-lI9z+VOmVX4dPPFzyj0vm+UtaB8dCJJ852lcDnY0uCPRvZAaVGnMwBBc1wxtf+h7Vz6KszoOvKAt4QijDnHDkg== + dependencies: + "@jest/types" "^25.4.0" + jest-message-util "^25.4.0" + jest-mock "^25.4.0" + jest-util "^25.4.0" + lolex "^5.0.0" + +"@jest/reporters@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.4.0.tgz#836093433b32ce4e866298af2d6fcf6ed351b0b0" + integrity sha512-bhx/buYbZgLZm4JWLcRJ/q9Gvmd3oUh7k2V7gA4ZYBx6J28pIuykIouclRdiAC6eGVX1uRZT+GK4CQJLd/PwPg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^25.4.0" + jest-resolve "^25.4.0" + jest-util "^25.4.0" + jest-worker "^25.4.0" + slash "^3.0.0" source-map "^0.6.0" - string-length "^2.0.0" + string-length "^3.1.0" + terminal-link "^2.0.0" + v8-to-istanbul "^4.1.3" + optionalDependencies: + node-notifier "^6.0.0" -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== +"@jest/source-map@^25.2.6": + version "25.2.6" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.2.6.tgz#0ef2209514c6d445ebccea1438c55647f22abb4c" + integrity sha512-VuIRZF8M2zxYFGTEhkNSvQkUKafQro4y+mwUxy5ewRqs5N/ynSFUODYp3fy1zCnbCMy1pz3k+u57uCqx8QRSQQ== dependencies: callsites "^3.0.0" - graceful-fs "^4.1.15" + graceful-fs "^4.2.3" source-map "^0.6.0" -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== +"@jest/test-result@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.4.0.tgz#6f2ec2c8da9981ef013ad8651c1c6f0cb20c6324" + integrity sha512-8BAKPaMCHlL941eyfqhWbmp3MebtzywlxzV+qtngQ3FH+RBqnoSAhNEPj4MG7d2NVUrMOVfrwuzGpVIK+QnMAA== dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" + "@jest/console" "^25.4.0" + "@jest/types" "^25.4.0" "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== +"@jest/test-sequencer@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.4.0.tgz#2b96f9d37f18dc3336b28e3c8070f97f9f55f43b" + integrity sha512-240cI+nsM3attx2bMp9uGjjHrwrpvxxrZi8Tyqp/cfOzl98oZXVakXBgxODGyBYAy/UGXPKXLvNc2GaqItrsJg== dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" + "@jest/test-result" "^25.4.0" + jest-haste-map "^25.4.0" + jest-runner "^25.4.0" + jest-runtime "^25.4.0" -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== +"@jest/transform@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.4.0.tgz#eef36f0367d639e2fd93dccd758550377fbb9962" + integrity sha512-t1w2S6V1sk++1HHsxboWxPEuSpN8pxEvNrZN+Ud/knkROWtf8LeUmz73A4ezE8476a5AM00IZr9a8FO9x1+j3g== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" + "@jest/types" "^25.4.0" + babel-plugin-istanbul "^6.0.0" + chalk "^3.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.3" + jest-haste-map "^25.4.0" + jest-regex-util "^25.2.6" + jest-util "^25.4.0" + micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" + realpath-native "^2.0.0" + slash "^3.0.0" source-map "^0.6.1" - write-file-atomic "2.4.1" + write-file-atomic "^3.0.0" -"@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== +"@jest/types@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.4.0.tgz#5afeb8f7e1cba153a28e5ac3c9fe3eede7206d59" + integrity sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" "@lerna/add@3.20.0": version "3.20.0" @@ -1141,10 +1397,17 @@ dependencies: any-observable "^0.3.0" -"@types/babel__core@^7.1.0": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" - integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA== +"@sinonjs/commons@^1.7.0": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" + integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw== + dependencies: + type-detect "4.0.8" + +"@types/babel__core@^7.1.7": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" + integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1203,7 +1466,7 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== @@ -1223,19 +1486,20 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@^24.0.23": - version "24.9.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" - integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== +"@types/jest@^25.2.1": + version "25.2.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.1.tgz#9544cd438607955381c1bdbdb97767a249297db5" + integrity sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA== dependencies: - jest-diff "^24.3.0" + jest-diff "^25.2.1" + pretty-format "^25.2.1" "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*", "@types/node@^13.1.4": +"@types/node@*": version "13.9.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== @@ -1245,6 +1509,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.4.tgz#4cfd90175a200ee9b02bd6b1cd19bc349741607e" integrity sha512-Lue/mlp2egZJoHXZr4LndxDAd7i/7SQYhV0EjWfb/a4/OZ6tuVwMCVPiwkU5nsEipxEf7hmkSU7Em5VQ8P5NGA== +"@types/node@^13.13.4": + version "13.13.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.4.tgz#1581d6c16e3d4803eb079c87d4ac893ee7501c2c" + integrity sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -1255,6 +1524,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prettier@^1.19.0": + version "1.19.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" + integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== + "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -1272,10 +1546,10 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== -"@types/yargs@^13.0.0": - version "13.0.8" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" - integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== +"@types/yargs@^15.0.0": + version "15.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" + integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== dependencies: "@types/yargs-parser" "*" @@ -1306,7 +1580,7 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-globals@^4.1.0: +acorn-globals@^4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== @@ -1319,11 +1593,6 @@ acorn-walk@^6.0.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== -acorn@^5.5.3: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - acorn@^6.0.1: version "6.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" @@ -1377,6 +1646,13 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -1387,7 +1663,7 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.0.0, ansi-regex@^4.1.0: +ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== @@ -1409,7 +1685,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -1435,6 +1711,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -1544,11 +1828,6 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1574,43 +1853,60 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== - dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" +babel-jest@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.4.0.tgz#409eb3e2ddc2ad9a92afdbb00991f1633f8018d0" + integrity sha512-p+epx4K0ypmHuCnd8BapfyOwWwosNCYhedetQey1awddtfmEX0MmdxctGl956uwUmjwXR5VSS5xJcGX9DvdIog== + dependencies: + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^25.4.0" + chalk "^3.0.0" + slash "^3.0.0" -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== +babel-plugin-jest-hoist@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.4.0.tgz#0c122c1b93fb76f52d2465be2e8069e798e9d442" + integrity sha512-M3a10JCtTyKevb0MjuH6tU+cP/NVQZ82QPADqI1RQYY1OphztsCeIeQmTsHmF/NS6m0E51Zl4QNsI3odXSQF5w== dependencies: "@types/babel__traverse" "^7.0.6" -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" +babel-preset-current-node-syntax@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" + integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +babel-preset-jest@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.4.0.tgz#10037cc32b751b994b260964629e49dc479abf4c" + integrity sha512-PwFiEWflHdu3JCeTr0Pb9NcHHE34qWFnPQRVPvqQITx4CsDCzs6o05923I10XvLvn9nNsRHuiVgB72wG/90ZHQ== + dependencies: + babel-plugin-jest-hoist "^25.4.0" + babel-preset-current-node-syntax "^0.1.2" balanced-match@^1.0.0: version "1.0.0" @@ -1642,13 +1938,6 @@ before-after-hook@^2.0.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -1887,7 +2176,7 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1963,6 +2252,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -1987,6 +2285,11 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2188,7 +2491,7 @@ conventional-recommended-bump@^5.0.0: meow "^4.0.0" q "^1.5.1" -convert-source-map@^1.4.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -2258,17 +2561,22 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": +cssom@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== +cssstyle@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.2.0.tgz#e4c44debccd6b7911ed617a4395e5754bba59992" + integrity sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA== dependencies: - cssom "0.3.x" + cssom "~0.3.6" currently-unhandled@^0.4.1: version "0.4.1" @@ -2296,7 +2604,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.0.0: +data-urls@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== @@ -2376,6 +2684,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -2432,10 +2745,10 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== dezalgo@^1.0.0: version "1.0.3" @@ -2445,10 +2758,10 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" -diff-sequences@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== diff@^4.0.1: version "4.0.1" @@ -2600,24 +2913,19 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.9.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76" - integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ== +escodegen@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== dependencies: - esprima "^3.1.3" + esprima "^4.0.1" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -2660,7 +2968,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.4.0: +execa@^3.2.0, execa@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== @@ -2694,17 +3002,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== +expect@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.4.0.tgz#0b16c17401906d1679d173e59f0d4580b22f8dc8" + integrity sha512-7BDIX99BTi12/sNGJXA9KMRcby4iAmu1xccBOhyKCyEhjcVKS3hPmHdA/4nSI9QGIOkUropKqr3vv7WMDM5lvQ== dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" + "@jest/types" "^25.4.0" + ansi-styles "^4.0.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.4.0" + jest-message-util "^25.4.0" + jest-regex-util "^25.2.6" extend-shallow@^2.0.1: version "2.0.1" @@ -2813,11 +3121,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - filesize@^4.1.2: version "4.2.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-4.2.1.tgz#ab1cb2069db5d415911c1a13e144c0e743bc89bc" @@ -2871,7 +3174,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -2952,13 +3255,10 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.11" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" - integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" +fsevents@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== function-bind@^1.1.1: version "1.1.1" @@ -2984,6 +3284,11 @@ genfun@^5.0.0: resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -3146,7 +3451,7 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -3164,7 +3469,7 @@ gzip-size@^5.1.1: duplexer "^0.1.1" pify "^4.0.1" -handlebars@^4.1.2, handlebars@^4.4.0: +handlebars@^4.4.0: version "4.5.3" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== @@ -3265,6 +3570,11 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" @@ -3372,6 +3682,14 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3445,12 +3763,10 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= ip@1.1.5: version "1.1.5" @@ -3698,7 +4014,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -3713,10 +4029,10 @@ is-windows@^1.0.0, is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== isarray@1.0.0, isarray@~1.0.0: version "1.0.0" @@ -3750,390 +4066,388 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" +istanbul-lib-instrument@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" + integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== + dependencies: + "@babel/core" "^7.7.5" + "@babel/parser" "^7.7.5" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" + istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== dependencies: - handlebars "^4.1.2" + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== +jest-changed-files@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.4.0.tgz#e573db32c2fd47d2b90357ea2eda0622c5c5cbd6" + integrity sha512-VR/rfJsEs4BVMkwOTuStRyS630fidFVekdw/lBaBQjx9KK3VZFOZ2c0fsom2fRp8pMCrCTP6LGna00o/DXGlqA== dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.0.0" + "@jest/types" "^25.4.0" + execa "^3.2.0" + throat "^5.0.0" -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== +jest-cli@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.4.0.tgz#5dac8be0fece6ce39f0d671395a61d1357322bab" + integrity sha512-usyrj1lzCJZMRN1r3QEdnn8e6E6yCx/QN7+B1sLoA68V7f3WlsxSSQfy0+BAwRiF4Hz2eHauf11GZG3PIfWTXQ== dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/core" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" exit "^0.1.2" - import-local "^2.0.0" + import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" + jest-config "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" + realpath-native "^2.0.0" + yargs "^15.3.1" -jest-config@^24.8.0, jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== +jest-config@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.4.0.tgz#56e5df3679a96ff132114b44fb147389c8c0a774" + integrity sha512-egT9aKYxMyMSQV1aqTgam0SkI5/I2P9qrKexN5r2uuM2+68ypnc+zPGmfUxK7p1UhE7dYH9SLBS7yb+TtmT1AA== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" + "@jest/test-sequencer" "^25.4.0" + "@jest/types" "^25.4.0" + babel-jest "^25.4.0" + chalk "^3.0.0" + deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" - -jest-diff@^24.3.0, jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-docblock@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" - integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== - dependencies: - detect-newline "^2.1.0" - -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== - dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" + jest-environment-jsdom "^25.4.0" + jest-environment-node "^25.4.0" + jest-get-type "^25.2.6" + jest-jasmine2 "^25.4.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" + micromatch "^4.0.2" + pretty-format "^25.4.0" + realpath-native "^2.0.0" -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== +jest-diff@^25.2.1, jest-diff@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.4.0.tgz#260b70f19a46c283adcad7f081cae71eb784a634" + integrity sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.4.0" -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== +jest-docblock@^25.3.0: + version "25.3.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" + integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + detect-newline "^3.0.0" -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== +jest-each@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.4.0.tgz#ad4e46164764e8e77058f169a0076a7f86f6b7d4" + integrity sha512-lwRIJ8/vQU/6vq3nnSSUw1Y3nz5tkYSFIywGCZpUBd6WcRgpn8NmJoQICojbpZmsJOJNHm0BKdyuJ6Xdx+eDQQ== dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" + jest-get-type "^25.2.6" + jest-util "^25.4.0" + pretty-format "^25.4.0" + +jest-environment-jsdom@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.4.0.tgz#bbfc7f85bb6ade99089062a830c79cb454565cf0" + integrity sha512-KTitVGMDrn2+pt7aZ8/yUTuS333w3pWt1Mf88vMntw7ZSBNDkRS6/4XLbFpWXYfWfp1FjcjQTOKzbK20oIehWQ== + dependencies: + "@jest/environment" "^25.4.0" + "@jest/fake-timers" "^25.4.0" + "@jest/types" "^25.4.0" + jest-mock "^25.4.0" + jest-util "^25.4.0" + jsdom "^15.2.1" + +jest-environment-node@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.4.0.tgz#188aef01ae6418e001c03fdd1c299961e1439082" + integrity sha512-wryZ18vsxEAKFH7Z74zi/y/SyI1j6UkVZ6QsllBuT/bWlahNfQjLNwFsgh/5u7O957dYFoXj4yfma4n4X6kU9A== + dependencies: + "@jest/environment" "^25.4.0" + "@jest/fake-timers" "^25.4.0" + "@jest/types" "^25.4.0" + jest-mock "^25.4.0" + jest-util "^25.4.0" + semver "^6.3.0" + +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + +jest-haste-map@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.4.0.tgz#da7c309dd7071e0a80c953ba10a0ec397efb1ae2" + integrity sha512-5EoCe1gXfGC7jmXbKzqxESrgRcaO3SzWXGCnvp9BcT0CFMyrB1Q6LIsjl9RmvmJGQgW297TCfrdgiy574Rl9HQ== + dependencies: + "@jest/types" "^25.4.0" + anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.3" + jest-serializer "^25.2.6" + jest-util "^25.4.0" + jest-worker "^25.4.0" + micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" + which "^2.0.2" optionalDependencies: - fsevents "^1.2.7" + fsevents "^2.1.2" -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== +jest-jasmine2@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.4.0.tgz#3d3d19514022e2326e836c2b66d68b4cb63c5861" + integrity sha512-QccxnozujVKYNEhMQ1vREiz859fPN/XklOzfQjm2j9IGytAkUbSwjFRBtQbHaNZ88cItMpw02JnHGsIdfdpwxQ== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/environment" "^25.4.0" + "@jest/source-map" "^25.2.6" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" co "^4.6.0" - expect "^24.9.0" + expect "^25.4.0" is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.0.0" - -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + jest-each "^25.4.0" + jest-matcher-utils "^25.4.0" + jest-message-util "^25.4.0" + jest-runtime "^25.4.0" + jest-snapshot "^25.4.0" + jest-util "^25.4.0" + pretty-format "^25.4.0" + throat "^5.0.0" + +jest-leak-detector@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.4.0.tgz#cf94a160c78e53d810e7b2f40b5fd7ee263375b3" + integrity sha512-7Y6Bqfv2xWsB+7w44dvZuLs5SQ//fzhETgOGG7Gq3TTGFdYvAgXGwV8z159RFZ6fXiCPm/szQ90CyfVos9JIFQ== + dependencies: + jest-get-type "^25.2.6" + pretty-format "^25.4.0" + +jest-matcher-utils@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.4.0.tgz#dc3e7aec402a1e567ed80b572b9ad285878895e6" + integrity sha512-yPMdtj7YDgXhnGbc66bowk8AkQ0YwClbbwk3Kzhn5GVDrciiCr27U4NJRbrqXbTdtxjImONITg2LiRIw650k5A== dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== - dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + chalk "^3.0.0" + jest-diff "^25.4.0" + jest-get-type "^25.2.6" + pretty-format "^25.4.0" -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== +jest-message-util@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.4.0.tgz#2899e8bc43f5317acf8dfdfe89ea237d354fcdab" + integrity sha512-LYY9hRcVGgMeMwmdfh9tTjeux1OjZHMusq/E5f3tJN+dAoVVkJtq5ZUEPIcB7bpxDUt2zjUsrwg0EGgPQ+OhXQ== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" + "@jest/types" "^25.4.0" "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" + chalk "^3.0.0" + micromatch "^4.0.2" + slash "^3.0.0" stack-utils "^1.0.1" -jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== +jest-mock@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.4.0.tgz#ded7d64b5328d81d78d2138c825d3a45e30ec8ca" + integrity sha512-MdazSfcYAUjJjuVTTnusLPzE0pE4VXpOUzWdj8sbM+q6abUjm3bATVPXFqTXrxSieR8ocpvQ9v/QaQCftioQFg== dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^25.4.0" jest-pnp-resolver@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== +jest-regex-util@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" + integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== -jest-resolve-dependencies@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== +jest-resolve-dependencies@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.4.0.tgz#783937544cfc40afcc7c569aa54748c4b3f83f5a" + integrity sha512-A0eoZXx6kLiuG1Ui7wITQPl04HwjLErKIJTt8GR3c7UoDAtzW84JtCrgrJ6Tkw6c6MwHEyAaLk7dEPml5pf48A== dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" + "@jest/types" "^25.4.0" + jest-regex-util "^25.2.6" + jest-snapshot "^25.4.0" -jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== +jest-resolve@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.4.0.tgz#6f4540ce0d419c4c720e791e871da32ba4da7a60" + integrity sha512-wOsKqVDFWUiv8BtLMCC6uAJ/pHZkfFgoBTgPtmYlsprAjkxrr2U++ZnB3l5ykBMd2O24lXvf30SMAjJIW6k2aA== dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^25.4.0" browser-resolve "^1.11.3" - chalk "^2.0.1" + chalk "^3.0.0" jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + read-pkg-up "^7.0.1" + realpath-native "^2.0.0" + resolve "^1.15.1" + slash "^3.0.0" -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== +jest-runner@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.4.0.tgz#6ca4a3d52e692bbc081228fa68f750012f1f29e5" + integrity sha512-wWQSbVgj2e/1chFdMRKZdvlmA6p1IPujhpLT7TKNtCSl1B0PGBGvJjCaiBal/twaU2yfk8VKezHWexM8IliBfA== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" + "@jest/console" "^25.4.0" + "@jest/environment" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" + graceful-fs "^4.2.3" + jest-config "^25.4.0" + jest-docblock "^25.3.0" + jest-haste-map "^25.4.0" + jest-jasmine2 "^25.4.0" + jest-leak-detector "^25.4.0" + jest-message-util "^25.4.0" + jest-resolve "^25.4.0" + jest-runtime "^25.4.0" + jest-util "^25.4.0" + jest-worker "^25.4.0" source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" + throat "^5.0.0" + +jest-runtime@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.4.0.tgz#1e5227a9e2159d26ae27dcd426ca6bc041983439" + integrity sha512-lgNJlCDULtXu9FumnwCyWlOub8iytijwsPNa30BKrSNtgoT6NUMXOPrZvsH06U6v0wgD/Igwz13nKA2wEKU2VA== + dependencies: + "@jest/console" "^25.4.0" + "@jest/environment" "^25.4.0" + "@jest/source-map" "^25.2.6" + "@jest/test-result" "^25.4.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" + graceful-fs "^4.2.3" + jest-config "^25.4.0" + jest-haste-map "^25.4.0" + jest-message-util "^25.4.0" + jest-mock "^25.4.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.4.0" + jest-snapshot "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" + realpath-native "^2.0.0" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.3.1" -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== +jest-serializer@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.2.6.tgz#3bb4cc14fe0d8358489dbbefbb8a4e708ce039b7" + integrity sha512-RMVCfZsezQS2Ww4kB5HJTMaMJ0asmC0BHlnobQC6yEtxiFKIxohFA4QSXSabKwSggaNkqxn6Z2VwdFCjhUWuiQ== -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== +jest-snapshot@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.4.0.tgz#e0b26375e2101413fd2ccb4278a5711b1922545c" + integrity sha512-J4CJ0X2SaGheYRZdLz9CRHn9jUknVmlks4UBeu270hPAvdsauFXOhx9SQP2JtRzhnR3cvro/9N9KP83/uvFfRg== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" + "@jest/types" "^25.4.0" + "@types/prettier" "^1.19.0" + chalk "^3.0.0" + expect "^25.4.0" + jest-diff "^25.4.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.4.0" + jest-message-util "^25.4.0" + jest-resolve "^25.4.0" + make-dir "^3.0.0" natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" + pretty-format "^25.4.0" + semver "^6.3.0" -jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== - dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" +jest-util@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.4.0.tgz#6a093d09d86d2b41ef583e5fe7dd3976346e1acd" + integrity sha512-WSZD59sBtAUjLv1hMeKbNZXmMcrLRWcYqpO8Dz8b4CeCTZpfNQw2q9uwrYAD+BbJoLJlu4ezVPwtAmM/9/SlZA== + dependencies: + "@jest/types" "^25.4.0" + chalk "^3.0.0" is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" + make-dir "^3.0.0" -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== +jest-validate@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.4.0.tgz#2e177a93b716a137110eaf2768f3d9095abd3f38" + integrity sha512-hvjmes/EFVJSoeP1yOl8qR8mAtMR3ToBkZeXrD/ZS9VxRyWDqQ/E1C5ucMTeSmEOGLipvdlyipiGbHJ+R1MQ0g== dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^25.4.0" camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" + chalk "^3.0.0" + jest-get-type "^25.2.6" leven "^3.1.0" - pretty-format "^24.9.0" + pretty-format "^25.4.0" -jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== +jest-watcher@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.4.0.tgz#63ec0cd5c83bb9c9d1ac95be7558dd61c995ff05" + integrity sha512-36IUfOSRELsKLB7k25j/wutx0aVuHFN6wO94gPNjQtQqFPa2rkOymmx9rM5EzbF3XBZZ2oqD9xbRVoYa2w86gw== dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.0" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + jest-util "^25.4.0" + string-length "^3.1.0" -jest-worker@^24.6.0, jest-worker@^24.9.0: +jest-worker@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== @@ -4141,15 +4455,24 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest@^24.8.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== +jest-worker@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.4.0.tgz#ee0e2ceee5a36ecddf5172d6d7e0ab00df157384" + integrity sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw== dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.4.0.tgz#fb96892c5c4e4a6b9bcb12068849cddf4c5f8cc7" + integrity sha512-XWipOheGB4wai5JfCYXd6vwsWNwM/dirjRoZgAa7H2wd8ODWbli2AiKjqG8AYhyx+8+5FBEdpO92VhGlBydzbw== + dependencies: + "@jest/core" "^25.4.0" + import-local "^3.0.2" + jest-cli "^25.4.0" -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -4167,36 +4490,36 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== +jsdom@^15.2.1: + version "15.2.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" + integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== dependencies: abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" + acorn "^7.1.0" + acorn-globals "^4.3.2" array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" + cssom "^0.4.1" + cssstyle "^2.0.0" + data-urls "^1.1.0" domexception "^1.0.1" - escodegen "^1.9.1" + escodegen "^1.11.1" html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" + nwsapi "^2.2.0" + parse5 "5.1.0" pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" + request "^2.88.0" + request-promise-native "^1.0.7" + saxes "^3.1.9" symbol-tree "^3.2.2" - tough-cookie "^2.3.4" + tough-cookie "^3.0.1" w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^7.0.0" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -4231,6 +4554,13 @@ json5@2.x, json5@^2.1.0: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -4282,11 +4612,6 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - lerna@^3.19.0: version "3.20.2" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.20.2.tgz#abf84e73055fe84ee21b46e64baf37b496c24864" @@ -4535,12 +4860,12 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== +lolex@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" + integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== dependencies: - js-tokens "^3.0.0 || ^4.0.0" + "@sinonjs/commons" "^1.7.0" loud-rejection@^1.0.0: version "1.6.0" @@ -4698,6 +5023,14 @@ merge2@^1.2.3: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== +micromatch@4.x, micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -4717,14 +5050,6 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - mime-db@1.43.0: version "1.43.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" @@ -4772,6 +5097,11 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -4823,13 +5153,18 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@*, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +mkdirp@1.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -4886,11 +5221,6 @@ mz@^2.5.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -4964,16 +5294,16 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.4.2: - version "5.4.3" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" - integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== +node-notifier@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" + integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== dependencies: growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" + is-wsl "^2.1.1" + semver "^6.3.0" shellwords "^0.1.1" - which "^1.3.0" + which "^1.3.1" nopt@^4.0.1: version "4.0.1" @@ -5092,7 +5422,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7: +nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== @@ -5235,12 +5565,10 @@ osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" +p-each-series@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== p-finally@^1.0.0: version "1.0.0" @@ -5397,10 +5725,10 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== pascalcase@^0.1.1: version "0.1.1" @@ -5475,6 +5803,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + picomatch@^2.0.5: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" @@ -5555,15 +5888,15 @@ prettier@^1.19.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== +pretty-format@^25.2.1, pretty-format@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830" + integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ== dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" + "@jest/types" "^25.4.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" process-nextick-args@~2.0.0: version "2.0.1" @@ -5670,10 +6003,10 @@ quick-lru@^1.0.0: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= -react-is@^16.8.4: - version "16.13.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" - integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== +react-is@^16.12.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== read-cmd-shim@^1.0.1: version "1.0.5" @@ -5719,13 +6052,14 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" read-pkg@^1.0.0: version "1.1.0" @@ -5794,12 +6128,10 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" +realpath-native@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" + integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== redent@^1.0.0: version "1.0.0" @@ -5859,7 +6191,7 @@ request-promise-core@1.1.3: dependencies: lodash "^4.17.15" -request-promise-native@^1.0.5: +request-promise-native@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== @@ -5868,7 +6200,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.0: +request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -5911,6 +6243,13 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -5921,6 +6260,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -5945,6 +6289,13 @@ resolve@1.x, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: dependencies: path-parse "^1.0.6" +resolve@^1.15.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -6125,22 +6476,24 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.2.0: +semver@6.x, semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -6323,6 +6676,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + sourcemap-codec@^1.4.4: version "1.4.7" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.7.tgz#5b2cd184e3fe51fd30ba049f7f62bf499b4f73ae" @@ -6438,13 +6796,13 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== dependencies: astral-regex "^1.0.0" - strip-ansi "^4.0.0" + strip-ansi "^5.2.0" string-width@^1.0.1: version "1.0.2" @@ -6472,7 +6830,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -6560,6 +6918,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -6610,13 +6973,21 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: has-flag "^4.0.0" +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -6662,6 +7033,14 @@ term-size@^2.1.0: resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.1.1.tgz#f81ec25854af91a480d2f9d0c77ffcb26594ed1a" integrity sha512-UqvQSch04R+69g4RDhrslmGvGL3ucDRX/U+snYW0Mab4uCAyKSndUksaoqlJ81QKSpRnIsuOYQCbC2ZWx2896A== +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + terser@^4.1.3: version "4.6.1" resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.1.tgz#913e35e0d38a75285a7913ba01d753c4089ebdbd" @@ -6680,15 +7059,14 @@ terser@^4.6.2: source-map "~0.6.1" source-map-support "~0.5.12" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: - glob "^7.1.3" + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" text-extensions@^1.0.0: version "1.9.0" @@ -6709,10 +7087,10 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== through2@^2.0.0, through2@^2.0.2: version "2.0.5" @@ -6783,7 +7161,7 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@^2.3.3, tough-cookie@^2.3.4: +tough-cookie@^2.3.3: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -6791,6 +7169,15 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4: psl "^1.1.28" punycode "^2.1.1" +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -6821,10 +7208,10 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= -ts-jest@^24.2.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.3.0.tgz#b97814e3eab359ea840a1ac112deae68aa440869" - integrity sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ== +ts-jest@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.4.0.tgz#5ad504299f8541d463a52e93e5e9d76876be0ba4" + integrity sha512-+0ZrksdaquxGUBwSdTIcdX7VXdwLIlSRsyjivVA9gcO+Cvr6ByqDhu/mi5+HCcb6cMkiQp5xZ8qRO7/eCqLeyw== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -6832,10 +7219,11 @@ ts-jest@^24.2.0: json5 "2.x" lodash.memoize "4.x" make-error "1.x" - mkdirp "0.x" + micromatch "4.x" + mkdirp "1.x" resolve "1.x" - semver "^5.5" - yargs-parser "10.x" + semver "6.x" + yargs-parser "18.x" tslib@1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" @@ -6892,6 +7280,16 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" @@ -6907,6 +7305,13 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -7013,19 +7418,20 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" -util.promisify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - uuid@^3.0.1, uuid@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== +v8-to-istanbul@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz#22fe35709a64955f49a08a7c7c959f6520ad6f20" + integrity sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -7057,6 +7463,15 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" @@ -7076,27 +7491,18 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" @@ -7111,14 +7517,14 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -7173,20 +7579,20 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" @@ -7196,6 +7602,16 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write-json-file@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" @@ -7228,18 +7644,21 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" +ws@^7.0.0: + version "7.2.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.5.tgz#abb1370d4626a5a9cd79d8de404aa18b3465d10d" + integrity sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA== xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -7262,21 +7681,21 @@ yaml@^1.7.2: dependencies: "@babel/runtime" "^7.8.7" -yargs-parser@10.x, yargs-parser@^10.0.0: +yargs-parser@18.x, yargs-parser@^18.1.1: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: camelcase "^4.1.0" -yargs-parser@^13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^15.0.0: version "15.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" @@ -7285,12 +7704,13 @@ yargs-parser@^15.0.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== +yargs@^14.2.2: + version "14.2.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.2.tgz#2769564379009ff8597cdd38fba09da9b493c4b5" + integrity sha512-/4ld+4VV5RnrynMhPZJ/ZpOCGSCeghMykZ3BhdFBDa9Wy/RH6uEGNWDJog+aUlq+9OM1CFTgtYRW5Is1Po9NOA== dependencies: cliui "^5.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^2.0.1" require-directory "^2.1.1" @@ -7299,21 +7719,21 @@ yargs@^13.3.0: string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.1" + yargs-parser "^15.0.0" -yargs@^14.2.2: - version "14.2.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.2.tgz#2769564379009ff8597cdd38fba09da9b493c4b5" - integrity sha512-/4ld+4VV5RnrynMhPZJ/ZpOCGSCeghMykZ3BhdFBDa9Wy/RH6uEGNWDJog+aUlq+9OM1CFTgtYRW5Is1Po9NOA== +yargs@^15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== dependencies: - cliui "^5.0.0" + cliui "^6.0.0" decamelize "^1.2.0" - find-up "^3.0.0" + find-up "^4.1.0" get-caller-file "^2.0.1" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^3.0.0" + string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^15.0.0" + yargs-parser "^18.1.1"