From 3e04c16a4ba1a7b1692d60aa0e77a4382fac008b Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 17:29:20 +0800 Subject: [PATCH 01/47] Rename src files --- .../expect/src/{asymmetricMatchers.js => asymmetricMatchers.ts} | 0 ...ctedAssertionsErrors.js => extractExpectedAssertionsErrors.ts} | 0 packages/expect/src/{fakeChalk.js => fakeChalk.ts} | 0 packages/expect/src/{index.js => index.ts} | 0 packages/expect/src/{jasmineUtils.js => jasmineUtils.ts} | 0 .../expect/src/{jestMatchersObject.js => jestMatchersObject.ts} | 0 packages/expect/src/{matchers.js => matchers.ts} | 0 packages/expect/src/{spyMatchers.js => spyMatchers.ts} | 0 packages/expect/src/{toThrowMatchers.js => toThrowMatchers.ts} | 0 packages/expect/src/{utils.js => utils.ts} | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename packages/expect/src/{asymmetricMatchers.js => asymmetricMatchers.ts} (100%) rename packages/expect/src/{extractExpectedAssertionsErrors.js => extractExpectedAssertionsErrors.ts} (100%) rename packages/expect/src/{fakeChalk.js => fakeChalk.ts} (100%) rename packages/expect/src/{index.js => index.ts} (100%) rename packages/expect/src/{jasmineUtils.js => jasmineUtils.ts} (100%) rename packages/expect/src/{jestMatchersObject.js => jestMatchersObject.ts} (100%) rename packages/expect/src/{matchers.js => matchers.ts} (100%) rename packages/expect/src/{spyMatchers.js => spyMatchers.ts} (100%) rename packages/expect/src/{toThrowMatchers.js => toThrowMatchers.ts} (100%) rename packages/expect/src/{utils.js => utils.ts} (100%) diff --git a/packages/expect/src/asymmetricMatchers.js b/packages/expect/src/asymmetricMatchers.ts similarity index 100% rename from packages/expect/src/asymmetricMatchers.js rename to packages/expect/src/asymmetricMatchers.ts diff --git a/packages/expect/src/extractExpectedAssertionsErrors.js b/packages/expect/src/extractExpectedAssertionsErrors.ts similarity index 100% rename from packages/expect/src/extractExpectedAssertionsErrors.js rename to packages/expect/src/extractExpectedAssertionsErrors.ts diff --git a/packages/expect/src/fakeChalk.js b/packages/expect/src/fakeChalk.ts similarity index 100% rename from packages/expect/src/fakeChalk.js rename to packages/expect/src/fakeChalk.ts diff --git a/packages/expect/src/index.js b/packages/expect/src/index.ts similarity index 100% rename from packages/expect/src/index.js rename to packages/expect/src/index.ts diff --git a/packages/expect/src/jasmineUtils.js b/packages/expect/src/jasmineUtils.ts similarity index 100% rename from packages/expect/src/jasmineUtils.js rename to packages/expect/src/jasmineUtils.ts diff --git a/packages/expect/src/jestMatchersObject.js b/packages/expect/src/jestMatchersObject.ts similarity index 100% rename from packages/expect/src/jestMatchersObject.js rename to packages/expect/src/jestMatchersObject.ts diff --git a/packages/expect/src/matchers.js b/packages/expect/src/matchers.ts similarity index 100% rename from packages/expect/src/matchers.js rename to packages/expect/src/matchers.ts diff --git a/packages/expect/src/spyMatchers.js b/packages/expect/src/spyMatchers.ts similarity index 100% rename from packages/expect/src/spyMatchers.js rename to packages/expect/src/spyMatchers.ts diff --git a/packages/expect/src/toThrowMatchers.js b/packages/expect/src/toThrowMatchers.ts similarity index 100% rename from packages/expect/src/toThrowMatchers.js rename to packages/expect/src/toThrowMatchers.ts diff --git a/packages/expect/src/utils.js b/packages/expect/src/utils.ts similarity index 100% rename from packages/expect/src/utils.js rename to packages/expect/src/utils.ts From 43320f3b027fe5ae06eb31900cbdd3b5d3c3045c Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 19:02:38 +0800 Subject: [PATCH 02/47] Migrate utils.ts --- packages/expect/src/utils.ts | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/expect/src/utils.ts b/packages/expect/src/utils.ts index 680c5faa0c1b..06cd5a875d1b 100644 --- a/packages/expect/src/utils.ts +++ b/packages/expect/src/utils.ts @@ -4,7 +4,6 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow */ import { @@ -16,7 +15,7 @@ import { type GetPath = { hasEndProp?: boolean, - lastTraversedObject: ?Object, + lastTraversedObject: any, traversedPath: Array, value?: any, }; @@ -53,13 +52,13 @@ export const getPath = ( propertyPath: string | Array, ): GetPath => { if (!Array.isArray(propertyPath)) { - propertyPath = propertyPath.split('.'); + propertyPath = (propertyPath as string).split('.'); } if (propertyPath.length) { const lastProp = propertyPath.length === 1; const prop = propertyPath[0]; - const newObject = object[prop]; + const newObject = (object as any)[prop]; if (!lastProp && (newObject === null || newObject === undefined)) { // This is not the last prop in the chain. If we keep recursing it will @@ -99,10 +98,10 @@ export const getPath = ( // Strip properties from object that are not present in the subset. Useful for // printing the diff for toMatchObject() without adding unrelated noise. -export const getObjectSubset = (object: Object, subset: Object) => { +export const getObjectSubset = (object: any, subset: any): any => { if (Array.isArray(object)) { if (Array.isArray(subset) && subset.length === object.length) { - return subset.map((sub, i) => getObjectSubset(object[i], sub)); + return subset.map((sub: any, i: number) => getObjectSubset(object[i], sub)); } } else if (object instanceof Date) { return object; @@ -112,7 +111,7 @@ export const getObjectSubset = (object: Object, subset: Object) => { typeof subset === 'object' && subset !== null ) { - const trimmed = {}; + const trimmed: any = {}; Object.keys(subset) .filter(key => hasOwnProperty(object, key)) .forEach( @@ -128,7 +127,7 @@ export const getObjectSubset = (object: Object, subset: Object) => { const IteratorSymbol = Symbol.iterator; -const hasIterator = object => !!(object != null && object[IteratorSymbol]); +const hasIterator = (object: any) => !!(object != null && object[IteratorSymbol]); export const iterableEquality = (a: any, b: any) => { if ( typeof a !== 'object' || @@ -215,14 +214,14 @@ export const iterableEquality = (a: any, b: any) => { return true; }; -const isObjectWithKeys = a => +const isObjectWithKeys = (a: any) => a !== null && typeof a === 'object' && !(a instanceof Error) && !(a instanceof Array) && !(a instanceof Date); -export const subsetEquality = (object: Object, subset: Object) => { +export const subsetEquality = (object: any, subset: any): undefined | boolean => { if (!isObjectWithKeys(subset)) { return undefined; } @@ -256,9 +255,9 @@ export const sparseArrayEquality = (a: any, b: any) => { export const partition = ( items: Array, - predicate: T => boolean, + predicate: (arg: T) => boolean, ): [Array, Array] => { - const result = [[], []]; + const result: [Array, Array] = [[], []]; items.forEach(item => result[predicate(item) ? 0 : 1].push(item)); From bf35c8129ec73cbf0b427dd10eea76cdd55cbc2b Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 19:12:19 +0800 Subject: [PATCH 03/47] Add tsconfig --- packages/expect/tsconfig.json | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/expect/tsconfig.json diff --git a/packages/expect/tsconfig.json b/packages/expect/tsconfig.json new file mode 100644 index 000000000000..a39a609dc14c --- /dev/null +++ b/packages/expect/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "build" + }, + "references": [ + { + "path": "../jest-get-type" + }, + { + "path": "../jest-matcher-utils" + }, + { + "path": "../jest-message-util" + }, + { + "path": "../jest-regex-util" + } + ] +} From 110729bb0595096aaa18cf633e011415f4919ce8 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 19:31:52 +0800 Subject: [PATCH 04/47] Add jest-types reference --- packages/expect/tsconfig.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/expect/tsconfig.json b/packages/expect/tsconfig.json index a39a609dc14c..23f4c67dcb93 100644 --- a/packages/expect/tsconfig.json +++ b/packages/expect/tsconfig.json @@ -16,6 +16,9 @@ }, { "path": "../jest-regex-util" + }, + { + "path": "../jest-types" } ] } From 6ce71f6dca3825f8ef0d73d82d6dc5be91be2a15 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 19:40:30 +0800 Subject: [PATCH 05/47] Implement types.ts for expect --- packages/expect/src/types.ts | 115 +++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 packages/expect/src/types.ts diff --git a/packages/expect/src/types.ts b/packages/expect/src/types.ts new file mode 100644 index 000000000000..50e5e6438da3 --- /dev/null +++ b/packages/expect/src/types.ts @@ -0,0 +1,115 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ +import { Config } from '@jest/types'; + + +export type SyncExpectationResult = { + pass: boolean, + message: () => string, +}; + +export type AsyncExpectationResult = Promise; + +export type ExpectationResult = SyncExpectationResult | AsyncExpectationResult; + +export type RawMatcherFn = ( + expected: any, + actual: any, + options: any, +) => ExpectationResult; + +export type ThrowingMatcherFn = (actual: any) => void; +export type PromiseMatcherFn = (actual: any) => Promise; + +type Tester = (a: any, b: any) => boolean | undefined; + +export type MatcherState = { + assertionCalls: number; + currentTestName?: string; + dontThrow?: () => void; + error?: Error; + equals: ( + a: unknown, + b: unknown, + customTesters?: Array, + strictCheck?: boolean, + ) => boolean; + expand?: boolean; + expectedAssertionsNumber?: number; + isExpectingAssertions?: boolean; + isNot: boolean; + promise: string; + suppressedErrors: Array; + testPath?: Config.Path; + // This is output from `jest-matcher-utils` plus iterableEquality, subsetEquality + // Type it correctly when moving it to `expect` + utils: { + printExpected: (value: unknown) => string; + printReceived: (value: unknown) => string; + iterableEquality: Tester; + subsetEquality: Tester; + }; +}; + +export type AsymmetricMatcher = Object; +export type MatchersObject = { [id: string]: RawMatcherFn }; +export type Expect = { + (expected: any): ExpectationObject, + addSnapshotSerializer(arg0: any): void, + assertions(arg0: number): void, + extend(arg0: any): void, + extractExpectedAssertionsErrors: () => Array<{ + actual: string | number, + error: Error, + expected: string, + }>, + getState(): MatcherState, + hasAssertions(): void, + setState(arg0: any): void, + + any(expectedObject: any): AsymmetricMatcher, + anything(): AsymmetricMatcher, + arrayContaining(sample: Array): AsymmetricMatcher, + objectContaining(sample: Object): AsymmetricMatcher, + stringContaining(expected: string): AsymmetricMatcher, + stringMatching(expected: string | RegExp): AsymmetricMatcher, + [id: string]: AsymmetricMatcher, + not: { [id: string]: AsymmetricMatcher }, +}; + +type resolves = { + [id: string]: PromiseMatcherFn, +} & { + not: { [id: string]: PromiseMatcherFn }, +} + +type rejects = { + [id: string]: PromiseMatcherFn, +} & { + not: { [id: string]: PromiseMatcherFn }, +} + +type not = { + [id: string]: ThrowingMatcherFn +} + +export type ExpectationObject = { + [id: string]: ThrowingMatcherFn, +} & { + resolves: resolves + rejects: rejects + not: not +} + +export type MatcherHintOptions = { + comment?: string, + isDirectExpectCall?: boolean, + isNot?: boolean, + promise?: string, + secondArgument?: string, +}; From fc978a62fa15b3bbe04df74ea123fe6b0dcfcb45 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 19:46:55 +0800 Subject: [PATCH 06/47] Add a types key in package.json --- packages/expect/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/expect/package.json b/packages/expect/package.json index 3f74a119c97e..7a9ef0d2fe2b 100644 --- a/packages/expect/package.json +++ b/packages/expect/package.json @@ -8,6 +8,7 @@ }, "license": "MIT", "main": "build/index.js", + "types": "build/index.d.ts", "browser": "build-es5/index.js", "dependencies": { "ansi-styles": "^3.2.0", From 221074cb7cfe82609f8dbca9461a7e53ed99c152 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 19:53:29 +0800 Subject: [PATCH 07/47] Migrate toThrowMatchers --- packages/expect/src/toThrowMatchers.ts | 238 ++++++++++++------------- 1 file changed, 119 insertions(+), 119 deletions(-) diff --git a/packages/expect/src/toThrowMatchers.ts b/packages/expect/src/toThrowMatchers.ts index a53e6979e461..d6e981cd4c81 100644 --- a/packages/expect/src/toThrowMatchers.ts +++ b/packages/expect/src/toThrowMatchers.ts @@ -4,12 +4,11 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow */ -import type {MatcherHintOptions, MatchersObject} from 'types/Matchers'; +import { MatcherHintOptions, MatchersObject } from './types'; -import {formatStackTrace, separateMessageFromStack} from 'jest-message-util'; +import { formatStackTrace, separateMessageFromStack } from 'jest-message-util'; import { EXPECTED_COLOR, RECEIVED_COLOR, @@ -19,23 +18,23 @@ import { printReceived, printWithType, } from 'jest-matcher-utils'; -import {isError} from './utils'; +import { isError } from './utils'; const DID_NOT_THROW = 'Received function did not throw'; type Thrown = | { - hasMessage: true, - isError: true, - message: string, - value: Error, - } + hasMessage: true, + isError: true, + message: string, + value: Error, + } | { - hasMessage: boolean, - isError: false, - message: string, - value: any, - }; + hasMessage: boolean, + isError: false, + message: string, + value: any, + }; const getThrown = (e: any): Thrown => { const hasMessage = @@ -59,7 +58,7 @@ const getThrown = (e: any): Thrown => { }; export const createMatcher = (matcherName: string, fromPromise?: boolean) => - function(received: Function, expected: any) { + function (this: any, received: Function, expected: any) { const options = { isNot: this.isNot, promise: this.promise, @@ -133,25 +132,25 @@ const toThrowExpectedRegExp = ( const message = pass ? () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected pattern: ', expected) + - (thrown !== null && thrown.hasMessage - ? formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) - : formatReceived('Received value: ', thrown, 'value')) + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected pattern: ', expected) + + (thrown !== null && thrown.hasMessage + ? formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown) + : formatReceived('Received value: ', thrown, 'value')) : () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected pattern: ', expected) + - (thrown === null - ? '\n' + DID_NOT_THROW - : thrown.hasMessage + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected pattern: ', expected) + + (thrown === null + ? '\n' + DID_NOT_THROW + : thrown.hasMessage ? formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) + formatStack(thrown) : formatReceived('Received value: ', thrown, 'value')); - return {message, pass}; + return { message, pass }; }; type AsymmetricMatcher = { @@ -168,60 +167,60 @@ const toThrowExpectedAsymmetric = ( const message = pass ? () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected asymmetric matcher: ', expected) + - '\n' + - (thrown !== null && thrown.hasMessage - ? formatReceived('Received name: ', thrown, 'name') + - formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) - : formatReceived('Thrown value: ', thrown, 'value')) + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected asymmetric matcher: ', expected) + + '\n' + + (thrown !== null && thrown.hasMessage + ? formatReceived('Received name: ', thrown, 'name') + + formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown) + : formatReceived('Thrown value: ', thrown, 'value')) : () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected asymmetric matcher: ', expected) + - '\n' + - (thrown === null - ? DID_NOT_THROW - : thrown.hasMessage + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected asymmetric matcher: ', expected) + + '\n' + + (thrown === null + ? DID_NOT_THROW + : thrown.hasMessage ? formatReceived('Received name: ', thrown, 'name') + - formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) + formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown) : formatReceived('Thrown value: ', thrown, 'value')); - return {message, pass}; + return { message, pass }; }; const toThrowExpectedObject = ( matcherName: string, options: MatcherHintOptions, thrown: Thrown | null, - expected: Object, + expected: any, ) => { const pass = thrown !== null && thrown.message === expected.message; const message = pass ? () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected message: ', expected.message) + - (thrown !== null && thrown.hasMessage - ? formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) - : formatReceived('Received value: ', thrown, 'value')) + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected message: ', expected.message) + + (thrown !== null && thrown.hasMessage + ? formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown) + : formatReceived('Received value: ', thrown, 'value')) : () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected message: ', expected.message) + - (thrown === null - ? '\n' + DID_NOT_THROW - : thrown.hasMessage + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected message: ', expected.message) + + (thrown === null + ? '\n' + DID_NOT_THROW + : thrown.hasMessage ? formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) + formatStack(thrown) : formatReceived('Received value: ', thrown, 'value')); - return {message, pass}; + return { message, pass }; }; const toThrowExpectedClass = ( @@ -234,29 +233,29 @@ const toThrowExpectedClass = ( const message = pass ? () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected name: ', expected.name) + - formatReceived('Received name: ', thrown, 'name') + - '\n' + - (thrown !== null && thrown.hasMessage - ? formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) - : formatReceived('Received value: ', thrown, 'value')) + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected name: ', expected.name) + + formatReceived('Received name: ', thrown, 'name') + + '\n' + + (thrown !== null && thrown.hasMessage + ? formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown) + : formatReceived('Received value: ', thrown, 'value')) : () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected name: ', expected.name) + - (thrown === null - ? '\n' + DID_NOT_THROW - : thrown.hasMessage + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected name: ', expected.name) + + (thrown === null + ? '\n' + DID_NOT_THROW + : thrown.hasMessage ? formatReceived('Received name: ', thrown, 'name') + - '\n' + - formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) + '\n' + + formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown) : '\n' + formatReceived('Received value: ', thrown, 'value')); - return {message, pass}; + return { message, pass }; }; const toThrowExpectedString = ( @@ -269,25 +268,25 @@ const toThrowExpectedString = ( const message = pass ? () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected substring: ', expected) + - (thrown !== null && thrown.hasMessage - ? formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) - : formatReceived('Received value: ', thrown, 'value')) + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected substring: ', expected) + + (thrown !== null && thrown.hasMessage + ? formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown) + : formatReceived('Received value: ', thrown, 'value')) : () => - matcherHint(matcherName, undefined, undefined, options) + - '\n\n' + - formatExpected('Expected substring: ', expected) + - (thrown === null - ? '\n' + DID_NOT_THROW - : thrown.hasMessage + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected substring: ', expected) + + (thrown === null + ? '\n' + DID_NOT_THROW + : thrown.hasMessage ? formatReceived('Received message: ', thrown, 'message') + - formatStack(thrown) + formatStack(thrown) : formatReceived('Received value: ', thrown, 'value')); - return {message, pass}; + return { message, pass }; }; const toThrow = ( @@ -299,19 +298,19 @@ const toThrow = ( const message = pass ? () => - matcherHint(matcherName, undefined, '', options) + - '\n\n' + - (thrown !== null && thrown.hasMessage - ? formatReceived('Error name: ', thrown, 'name') + - formatReceived('Error message: ', thrown, 'message') + - formatStack(thrown) - : formatReceived('Thrown value: ', thrown, 'value')) + matcherHint(matcherName, undefined, '', options) + + '\n\n' + + (thrown !== null && thrown.hasMessage + ? formatReceived('Error name: ', thrown, 'name') + + formatReceived('Error message: ', thrown, 'message') + + formatStack(thrown) + : formatReceived('Thrown value: ', thrown, 'value')) : () => - matcherHint(matcherName, undefined, '', options) + - '\n\n' + - DID_NOT_THROW; + matcherHint(matcherName, undefined, '', options) + + '\n\n' + + DID_NOT_THROW; - return {message, pass}; + return { message, pass }; }; const formatExpected = (label: string, expected: any) => @@ -343,14 +342,15 @@ const formatStack = (thrown: Thrown | null) => thrown === null || !thrown.isError ? '' : formatStackTrace( - separateMessageFromStack(thrown.value.stack).stack, - { - rootDir: process.cwd(), - testMatch: [], - }, - { - noStackTrace: false, - }, - ); + // @ts-ignore + separateMessageFromStack(thrown.value.stack).stack, + { + rootDir: process.cwd(), + testMatch: [], + }, + { + noStackTrace: false, + }, + ); export default matchers; From 1cd10069ff0f6f928fd4ede0d510302dfa6535bb Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 19:55:21 +0800 Subject: [PATCH 08/47] Migrate spyMatchers --- packages/expect/src/spyMatchers.ts | 317 +++++++++++++++-------------- 1 file changed, 159 insertions(+), 158 deletions(-) diff --git a/packages/expect/src/spyMatchers.ts b/packages/expect/src/spyMatchers.ts index 50f623d9c770..a86f59f7221d 100644 --- a/packages/expect/src/spyMatchers.ts +++ b/packages/expect/src/spyMatchers.ts @@ -4,10 +4,9 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow */ -import type {MatchersObject} from 'types/Matchers'; +import { MatchersObject } from './types'; const CALL_PRINT_LIMIT = 3; const RETURN_PRINT_LIMIT = 5; @@ -25,10 +24,10 @@ import { printWithType, RECEIVED_COLOR, } from 'jest-matcher-utils'; -import {equals} from './jasmineUtils'; -import {iterableEquality, partition, isOneline} from './utils'; +import { equals } from './jasmineUtils'; +import { iterableEquality, partition, isOneline } from './utils'; -const createToBeCalledMatcher = matcherName => (received, expected) => { +const createToBeCalledMatcher = (matcherName: any) => (received: any, expected: any) => { ensureNoExpected(expected, matcherName); ensureMock(received, matcherName); @@ -43,24 +42,24 @@ const createToBeCalledMatcher = matcherName => (received, expected) => { ? received.calls.count() : received.mock.calls.length; const calls = receivedIsSpy - ? received.calls.all().map(x => x.args) + ? received.calls.all().map((x: any) => x.args) : received.mock.calls; const pass = count > 0; const message = pass ? () => - matcherHint('.not' + matcherName, receivedName, '') + - '\n\n' + - `Expected ${identifier} not to be called ` + - formatReceivedCalls(calls, CALL_PRINT_LIMIT, {sameSentence: true}) + matcherHint('.not' + matcherName, receivedName, '') + + '\n\n' + + `Expected ${identifier} not to be called ` + + formatReceivedCalls(calls, CALL_PRINT_LIMIT, { sameSentence: true }) : () => - matcherHint(matcherName, receivedName, '') + - '\n\n' + - `Expected ${identifier} to have been called, but it was not called.`; + matcherHint(matcherName, receivedName, '') + + '\n\n' + + `Expected ${identifier} to have been called, but it was not called.`; - return {message, pass}; + return { message, pass }; }; -const createToReturnMatcher = matcherName => (received, expected) => { +const createToReturnMatcher = (matcherName: any) => (received: any, expected: any) => { ensureNoExpected(expected, matcherName); ensureMock(received, matcherName); @@ -72,24 +71,24 @@ const createToReturnMatcher = matcherName => (received, expected) => { // List of return values that correspond only to calls that returned const returnValues = received.mock.results - .filter(result => result.type === 'return') - .map(result => result.value); + .filter((result: any) => result.type === 'return') + .map((result: any) => result.value); const count = returnValues.length; const pass = count > 0; const message = pass ? () => - matcherHint('.not' + matcherName, receivedName, '') + - '\n\n' + - `Expected ${identifier} not to have returned, but it returned:\n` + - ` ${getPrintedReturnValues(returnValues, RETURN_PRINT_LIMIT)}` + matcherHint('.not' + matcherName, receivedName, '') + + '\n\n' + + `Expected ${identifier} not to have returned, but it returned:\n` + + ` ${getPrintedReturnValues(returnValues, RETURN_PRINT_LIMIT)}` : () => - matcherHint(matcherName, receivedName, '') + - '\n\n' + - `Expected ${identifier} to have returned.`; + matcherHint(matcherName, receivedName, '') + + '\n\n' + + `Expected ${identifier} to have returned.`; - return {message, pass}; + return { message, pass }; }; const createToBeCalledTimesMatcher = (matcherName: string) => ( @@ -112,19 +111,19 @@ const createToBeCalledTimesMatcher = (matcherName: string) => ( const pass = count === expected; const message = pass ? () => - matcherHint('.not' + matcherName, receivedName, String(expected)) + - `\n\n` + - `Expected ${identifier} not to be called ` + - `${EXPECTED_COLOR(pluralize('time', expected))}, but it was` + - ` called exactly ${RECEIVED_COLOR(pluralize('time', count))}.` + matcherHint('.not' + matcherName, receivedName, String(expected)) + + `\n\n` + + `Expected ${identifier} not to be called ` + + `${EXPECTED_COLOR(pluralize('time', expected))}, but it was` + + ` called exactly ${RECEIVED_COLOR(pluralize('time', count))}.` : () => - matcherHint(matcherName, receivedName, String(expected)) + - '\n\n' + - `Expected ${identifier} to have been called ` + - `${EXPECTED_COLOR(pluralize('time', expected))},` + - ` but it was called ${RECEIVED_COLOR(pluralize('time', count))}.`; + matcherHint(matcherName, receivedName, String(expected)) + + '\n\n' + + `Expected ${identifier} to have been called ` + + `${EXPECTED_COLOR(pluralize('time', expected))},` + + ` but it was called ${RECEIVED_COLOR(pluralize('time', count))}.`; - return {message, pass}; + return { message, pass }; }; const createToReturnTimesMatcher = (matcherName: string) => ( @@ -142,7 +141,7 @@ const createToReturnTimesMatcher = (matcherName: string) => ( // List of return results that correspond only to calls that returned const returnResults = received.mock.results.filter( - result => result.type === 'return', + (result: any) => result.type === 'return', ); const count = returnResults.length; @@ -150,22 +149,22 @@ const createToReturnTimesMatcher = (matcherName: string) => ( const message = pass ? () => - matcherHint('.not' + matcherName, receivedName, String(expected)) + - `\n\n` + - `Expected ${identifier} not to have returned ` + - `${EXPECTED_COLOR(pluralize('time', expected))}, but it` + - ` returned exactly ${RECEIVED_COLOR(pluralize('time', count))}.` + matcherHint('.not' + matcherName, receivedName, String(expected)) + + `\n\n` + + `Expected ${identifier} not to have returned ` + + `${EXPECTED_COLOR(pluralize('time', expected))}, but it` + + ` returned exactly ${RECEIVED_COLOR(pluralize('time', count))}.` : () => - matcherHint(matcherName, receivedName, String(expected)) + - '\n\n' + - `Expected ${identifier} to have returned ` + - `${EXPECTED_COLOR(pluralize('time', expected))},` + - ` but it returned ${RECEIVED_COLOR(pluralize('time', count))}.`; + matcherHint(matcherName, receivedName, String(expected)) + + '\n\n' + + `Expected ${identifier} to have returned ` + + `${EXPECTED_COLOR(pluralize('time', expected))},` + + ` but it returned ${RECEIVED_COLOR(pluralize('time', count))}.`; - return {message, pass}; + return { message, pass }; }; -const createToBeCalledWithMatcher = matcherName => ( +const createToBeCalledWithMatcher = (matcherName: any) => ( received: any, ...expected: any ) => { @@ -180,7 +179,7 @@ const createToBeCalledWithMatcher = matcherName => ( : `${type} "${receivedName}"`; const calls = receivedIsSpy - ? received.calls.all().map(x => x.args) + ? received.calls.all().map((x: any) => x.args) : received.mock.calls; const [match, fail] = partition(calls, call => @@ -190,20 +189,20 @@ const createToBeCalledWithMatcher = matcherName => ( const message = pass ? () => - matcherHint('.not' + matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} not to have been called with:\n` + - ` ${printExpected(expected)}` + matcherHint('.not' + matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} not to have been called with:\n` + + ` ${printExpected(expected)}` : () => - matcherHint(matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} to have been called with:\n` + - formatMismatchedCalls(fail, expected, CALL_PRINT_LIMIT); + matcherHint(matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} to have been called with:\n` + + formatMismatchedCalls(fail, expected, CALL_PRINT_LIMIT); - return {message, pass}; + return { message, pass }; }; -const createToReturnWithMatcher = matcherName => ( +const createToReturnWithMatcher = (matcherName: any) => ( received: any, expected: any, ) => { @@ -217,8 +216,8 @@ const createToReturnWithMatcher = matcherName => ( // List of return values that correspond only to calls that returned const returnValues = received.mock.results - .filter(result => result.type === 'return') - .map(result => result.value); + .filter((result: any) => result.type === 'return') + .map((result: any) => result.value); const [match] = partition(returnValues, value => equals(expected, value, [iterableEquality]), @@ -227,28 +226,28 @@ const createToReturnWithMatcher = matcherName => ( const message = pass ? () => - matcherHint('.not' + matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} not to have returned:\n` + - ` ${printExpected(expected)}\n` + - `But it returned exactly:\n` + - ` ${printReceived(expected)}` + matcherHint('.not' + matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} not to have returned:\n` + + ` ${printExpected(expected)}\n` + + `But it returned exactly:\n` + + ` ${printReceived(expected)}` : () => - matcherHint(matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} to have returned:\n` + - formatMismatchedReturnValues( - returnValues, - expected, - RETURN_PRINT_LIMIT, - ); - - return {message, pass}; + matcherHint(matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} to have returned:\n` + + formatMismatchedReturnValues( + returnValues, + expected, + RETURN_PRINT_LIMIT, + ); + + return { message, pass }; }; -const createLastCalledWithMatcher = matcherName => ( +const createLastCalledWithMatcher = (matcherName: any) => ( received: any, - ...expected: any + ...expected: Array ) => { ensureMock(received, matcherName); @@ -260,26 +259,26 @@ const createLastCalledWithMatcher = matcherName => ( ? type : `${type} "${receivedName}"`; const calls = receivedIsSpy - ? received.calls.all().map(x => x.args) + ? received.calls.all().map((x: any) => x.args) : received.mock.calls; const pass = equals(calls[calls.length - 1], expected, [iterableEquality]); const message = pass ? () => - matcherHint('.not' + matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} to not have been last called with:\n` + - ` ${printExpected(expected)}` + matcherHint('.not' + matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} to not have been last called with:\n` + + ` ${printExpected(expected)}` : () => - matcherHint(matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} to have been last called with:\n` + - formatMismatchedCalls(calls, expected, LAST_CALL_PRINT_LIMIT); + matcherHint(matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} to have been last called with:\n` + + formatMismatchedCalls(calls, expected, LAST_CALL_PRINT_LIMIT); - return {message, pass}; + return { message, pass }; }; -const createLastReturnedMatcher = matcherName => ( +const createLastReturnedMatcher = (matcherName: any) => ( received: any, expected: any, ) => { @@ -300,28 +299,28 @@ const createLastReturnedMatcher = matcherName => ( const message = pass ? () => - matcherHint('.not' + matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} to not have last returned:\n` + - ` ${printExpected(expected)}\n` + - `But it last returned exactly:\n` + - ` ${printReceived(lastResult.value)}` + matcherHint('.not' + matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} to not have last returned:\n` + + ` ${printExpected(expected)}\n` + + `But it last returned exactly:\n` + + ` ${printReceived(lastResult.value)}` : () => - matcherHint(matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} to have last returned:\n` + - ` ${printExpected(expected)}\n` + - (!lastResult - ? `But it was ${RECEIVED_COLOR('not called')}` - : lastResult.type === 'incomplete' + matcherHint(matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} to have last returned:\n` + + ` ${printExpected(expected)}\n` + + (!lastResult + ? `But it was ${RECEIVED_COLOR('not called')}` + : lastResult.type === 'incomplete' ? `But the last call ${RECEIVED_COLOR('has not returned yet')}` : lastResult.type === 'throw' - ? `But the last call ${RECEIVED_COLOR('threw an error')}` - : `But the last call returned:\n ${printReceived( + ? `But the last call ${RECEIVED_COLOR('threw an error')}` + : `But the last call returned:\n ${printReceived( lastResult.value, )}`); - return {message, pass}; + return { message, pass }; }; const createNthCalledWithMatcher = (matcherName: string) => ( @@ -334,13 +333,14 @@ const createNthCalledWithMatcher = (matcherName: string) => ( const receivedIsSpy = isSpy(received); const type = receivedIsSpy ? 'spy' : 'mock function'; + // @ts-ignore if (typeof nth !== 'number' || parseInt(nth, 10) !== nth || nth < 1) { const message = () => `nth value ${printReceived( nth, )} must be a positive integer greater than ${printExpected(0)}`; const pass = false; - return {message, pass}; + return { message, pass }; } const receivedName = receivedIsSpy ? 'spy' : received.getMockName(); @@ -349,31 +349,31 @@ const createNthCalledWithMatcher = (matcherName: string) => ( ? type : `${type} "${receivedName}"`; const calls = receivedIsSpy - ? received.calls.all().map(x => x.args) + ? received.calls.all().map((x: any) => x.args) : received.mock.calls; const pass = equals(calls[nth - 1], expected, [iterableEquality]); const message = pass ? () => - matcherHint('.not' + matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} ${nthToString( - nth, - )} call to not have been called with:\n` + - ` ${printExpected(expected)}` + matcherHint('.not' + matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} ${nthToString( + nth, + )} call to not have been called with:\n` + + ` ${printExpected(expected)}` : () => - matcherHint(matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} ${nthToString( - nth, - )} call to have been called with:\n` + - formatMismatchedCalls( - calls[nth - 1] ? [calls[nth - 1]] : [], - expected, - LAST_CALL_PRINT_LIMIT, - ); - - return {message, pass}; + matcherHint(matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} ${nthToString( + nth, + )} call to have been called with:\n` + + formatMismatchedCalls( + calls[nth - 1] ? [calls[nth - 1]] : [], + expected, + LAST_CALL_PRINT_LIMIT, + ); + + return { message, pass }; }; const createNthReturnedWithMatcher = (matcherName: string) => ( @@ -383,13 +383,14 @@ const createNthReturnedWithMatcher = (matcherName: string) => ( ) => { ensureMock(received, matcherName); + //@ts-ignore if (typeof nth !== 'number' || parseInt(nth, 10) !== nth || nth < 1) { const message = () => `nth value ${printReceived( nth, )} must be a positive integer greater than ${printExpected(0)}`; const pass = false; - return {message, pass}; + return { message, pass }; } const receivedName = received.getMockName(); @@ -407,32 +408,32 @@ const createNthReturnedWithMatcher = (matcherName: string) => ( const nthString = nthToString(nth); const message = pass ? () => - matcherHint('.not' + matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} ${nthString} call to not have returned with:\n` + - ` ${printExpected(expected)}\n` + - `But the ${nthString} call returned exactly:\n` + - ` ${printReceived(nthResult.value)}` + matcherHint('.not' + matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} ${nthString} call to not have returned with:\n` + + ` ${printExpected(expected)}\n` + + `But the ${nthString} call returned exactly:\n` + + ` ${printReceived(nthResult.value)}` : () => - matcherHint(matcherName, receivedName) + - '\n\n' + - `Expected ${identifier} ${nthString} call to have returned with:\n` + - ` ${printExpected(expected)}\n` + - (results.length === 0 - ? `But it was ${RECEIVED_COLOR('not called')}` - : nth > results.length + matcherHint(matcherName, receivedName) + + '\n\n' + + `Expected ${identifier} ${nthString} call to have returned with:\n` + + ` ${printExpected(expected)}\n` + + (results.length === 0 + ? `But it was ${RECEIVED_COLOR('not called')}` + : nth > results.length ? `But it was only called ${printReceived(results.length)} times` : nthResult.type === 'incomplete' - ? `But the ${nthString} call ${RECEIVED_COLOR( + ? `But the ${nthString} call ${RECEIVED_COLOR( 'has not returned yet', )}` - : nthResult.type === 'throw' - ? `But the ${nthString} call ${RECEIVED_COLOR('threw an error')}` - : `But the ${nthString} call returned with:\n ${printReceived( - nthResult.value, - )}`); + : nthResult.type === 'throw' + ? `But the ${nthString} call ${RECEIVED_COLOR('threw an error')}` + : `But the ${nthString} call returned with:\n ${printReceived( + nthResult.value, + )}`); - return {message, pass}; + return { message, pass }; }; const spyMatchers: MatchersObject = { @@ -462,9 +463,9 @@ const spyMatchers: MatchersObject = { toReturnWith: createToReturnWithMatcher('.toReturnWith'), }; -const isSpy = spy => spy.calls && typeof spy.calls.count === 'function'; +const isSpy = (spy: any) => spy.calls && typeof spy.calls.count === 'function'; -const ensureMock = (mockOrSpy, matcherName) => { +const ensureMock = (mockOrSpy: any, matcherName: any) => { if ( !mockOrSpy || ((mockOrSpy.calls === undefined || mockOrSpy.calls.all === undefined) && @@ -510,7 +511,7 @@ const getPrintedReturnValues = (calls: any[], limit: number): string => { return result.join('\n\n '); }; -const formatReceivedCalls = (calls, limit, options) => { +const formatReceivedCalls = (calls: Array, limit: number, options: any) => { if (calls.length) { const but = options && options.sameSentence ? 'but' : 'But'; const count = calls.length - limit; @@ -528,7 +529,7 @@ const formatReceivedCalls = (calls, limit, options) => { } }; -const formatMismatchedCalls = (calls, expected, limit) => { +const formatMismatchedCalls = (calls: Array, expected: any, limit: number) => { if (calls.length) { return getPrintedCalls( calls, @@ -544,7 +545,7 @@ const formatMismatchedCalls = (calls, expected, limit) => { } }; -const formatMismatchedReturnValues = (returnValues, expected, limit) => { +const formatMismatchedReturnValues = (returnValues: Array, expected: any, limit: number) => { if (returnValues.length) { return ( ` ${printExpected(expected)}\n` + @@ -559,7 +560,7 @@ const formatMismatchedReturnValues = (returnValues, expected, limit) => { } }; -const formatMismatchedArgs = (expected, received) => { +const formatMismatchedArgs = (expected: any, received: any) => { const length = Math.max(expected.length, received.length); const printedArgs = []; @@ -569,14 +570,14 @@ const formatMismatchedArgs = (expected, received) => { const diffString = diff(expected[i], received[i]); printedArgs.push( ` ${printExpected(expected[i])}\n` + - `as argument ${i + 1}, but it was called with\n` + - ` ${printReceived(received[i])}.` + - (diffString && !oneline ? `\n\nDifference:\n\n${diffString}` : ''), + `as argument ${i + 1}, but it was called with\n` + + ` ${printReceived(received[i])}.` + + (diffString && !oneline ? `\n\nDifference:\n\n${diffString}` : ''), ); } else if (i >= expected.length) { printedArgs.push( ` Did not expect argument ${i + 1} ` + - `but it was called with ${printReceived(received[i])}.`, + `but it was called with ${printReceived(received[i])}.`, ); } } From 9e0d8e6c536c15873dddbef3815a3180c1c16478 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 20:00:36 +0800 Subject: [PATCH 09/47] Migrate matchers --- packages/expect/src/matchers.ts | 408 ++++++++++++++++---------------- 1 file changed, 204 insertions(+), 204 deletions(-) diff --git a/packages/expect/src/matchers.ts b/packages/expect/src/matchers.ts index bc093152ca15..12ce0d39db4a 100644 --- a/packages/expect/src/matchers.ts +++ b/packages/expect/src/matchers.ts @@ -7,10 +7,10 @@ * @flow */ -import type {MatchersObject} from 'types/Matchers'; +import { MatchersObject } from './types'; import getType from 'jest-get-type'; -import {escapeStrForRegex} from 'jest-regex-util'; +import { escapeStrForRegex } from 'jest-regex-util'; import { EXPECTED_COLOR, RECEIVED_COLOR, @@ -35,62 +35,62 @@ import { typeEquality, isOneline, } from './utils'; -import {equals} from './jasmineUtils'; +import { equals } from './jasmineUtils'; type ContainIterable = | Array | Set - | NodeList + | NodeListOf | DOMTokenList - | HTMLCollection; + | HTMLCollectionOf; const matchers: MatchersObject = { - toBe(received: any, expected: any) { + toBe(this: any, received: any, expected: any) { const comment = 'Object.is equality'; const pass = Object.is(received, expected); const message = pass ? () => + matcherHint('.toBe', undefined, undefined, { + comment, + isNot: true, + }) + + '\n\n' + + `Expected: ${printExpected(expected)}\n` + + `Received: ${printReceived(received)}` + : () => { + const receivedType = getType(received); + const expectedType = getType(expected); + const suggestToEqual = + receivedType === expectedType && + (receivedType === 'object' || expectedType === 'array') && + equals(received, expected, [iterableEquality]); + const oneline = isOneline(expected, received); + const diffString = diff(expected, received, { expand: this.expand }); + + return ( matcherHint('.toBe', undefined, undefined, { comment, - isNot: true, + isNot: false, }) + '\n\n' + `Expected: ${printExpected(expected)}\n` + - `Received: ${printReceived(received)}` - : () => { - const receivedType = getType(received); - const expectedType = getType(expected); - const suggestToEqual = - receivedType === expectedType && - (receivedType === 'object' || expectedType === 'array') && - equals(received, expected, [iterableEquality]); - const oneline = isOneline(expected, received); - const diffString = diff(expected, received, {expand: this.expand}); - - return ( - matcherHint('.toBe', undefined, undefined, { - comment, - isNot: false, - }) + - '\n\n' + - `Expected: ${printExpected(expected)}\n` + - `Received: ${printReceived(received)}` + - (diffString && !oneline ? `\n\nDifference:\n\n${diffString}` : '') + - (suggestToEqual ? ` ${SUGGEST_TO_EQUAL}` : '') - ); - }; + `Received: ${printReceived(received)}` + + (diffString && !oneline ? `\n\nDifference:\n\n${diffString}` : '') + + (suggestToEqual ? ` ${SUGGEST_TO_EQUAL}` : '') + ); + }; // Passing the actual and expected objects so that a custom reporter // could access them, for example in order to display a custom visual diff, // or create a different error message - return {actual: received, expected, message, name: 'toBe', pass}; + return { actual: received, expected, message, name: 'toBe', pass }; }, - toBeCloseTo(received: number, expected: number, precision?: number = 2) { + toBeCloseTo(received: number, expected: number, precision: number = 2) { const secondArgument = arguments.length === 3 ? 'precision' : null; const isNot = this.isNot; - const options = { + const options: any = { isNot, promise: this.promise, secondArgument, @@ -113,31 +113,31 @@ const matchers: MatchersObject = { const message = pass ? () => - matcherHint('toBeCloseTo', undefined, undefined, options) + - '\n\n' + - `Expected: not ${printExpected(expected)}\n` + - (receivedDiff === 0 - ? '' - : `Received: ${printReceived(received)}\n` + - '\n' + - `Expected precision: ${printExpected(precision)}\n` + - `Expected difference: not < ${printExpected(expectedDiff)}\n` + - `Received difference: ${printReceived(receivedDiff)}`) - : () => - matcherHint('toBeCloseTo', undefined, undefined, options) + - '\n\n' + - `Expected: ${printExpected(expected)}\n` + - `Received: ${printReceived(received)}\n` + + matcherHint('toBeCloseTo', undefined, undefined, options) + + '\n\n' + + `Expected: not ${printExpected(expected)}\n` + + (receivedDiff === 0 + ? '' + : `Received: ${printReceived(received)}\n` + '\n' + - `Expected precision: ${printExpected(precision)}\n` + - `Expected difference: < ${printExpected(expectedDiff)}\n` + - `Received difference: ${printReceived(receivedDiff)}`; - - return {message, pass}; + `Expected precision: ${printExpected(precision)}\n` + + `Expected difference: not < ${printExpected(expectedDiff)}\n` + + `Received difference: ${printReceived(receivedDiff)}`) + : () => + matcherHint('toBeCloseTo', undefined, undefined, options) + + '\n\n' + + `Expected: ${printExpected(expected)}\n` + + `Received: ${printReceived(received)}\n` + + '\n' + + `Expected precision: ${printExpected(precision)}\n` + + `Expected difference: < ${printExpected(expectedDiff)}\n` + + `Received difference: ${printReceived(receivedDiff)}`; + + return { message, pass }; }, toBeDefined(received: any, expected: void) { - const options = { + const options: any = { isNot: this.isNot, promise: this.promise, }; @@ -150,11 +150,11 @@ const matchers: MatchersObject = { '\n\n' + `Received: ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, toBeFalsy(received: any, expected: void) { - const options = { + const options: any = { isNot: this.isNot, promise: this.promise, }; @@ -167,12 +167,12 @@ const matchers: MatchersObject = { '\n\n' + `Received: ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, toBeGreaterThan(received: number, expected: number) { const isNot = this.isNot; - const options = { + const options: any = { isNot, promise: this.promise, }; @@ -186,12 +186,12 @@ const matchers: MatchersObject = { `Expected:${isNot ? ' not' : ''} > ${printExpected(expected)}\n` + `Received:${isNot ? ' ' : ''} ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, toBeGreaterThanOrEqual(received: number, expected: number) { const isNot = this.isNot; - const options = { + const options: any = { isNot, promise: this.promise, }; @@ -205,10 +205,10 @@ const matchers: MatchersObject = { `Expected:${isNot ? ' not' : ''} >= ${printExpected(expected)}\n` + `Received:${isNot ? ' ' : ''} ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, - toBeInstanceOf(received: any, constructor: Function) { + toBeInstanceOf(this: any, received: any, constructor: Function) { const constType = getType(constructor); if (constType !== 'function') { @@ -226,33 +226,33 @@ const matchers: MatchersObject = { const message = pass ? () => - matcherHint('.toBeInstanceOf', 'value', 'constructor', { - isNot: this.isNot, - }) + - '\n\n' + - `Expected constructor: ${EXPECTED_COLOR( - constructor.name || String(constructor), - )}\n` + - `Received value: ${printReceived(received)}` + matcherHint('.toBeInstanceOf', 'value', 'constructor', { + isNot: this.isNot, + }) + + '\n\n' + + `Expected constructor: ${EXPECTED_COLOR( + constructor.name || String(constructor), + )}\n` + + `Received value: ${printReceived(received)}` : () => - matcherHint('.toBeInstanceOf', 'value', 'constructor', { - isNot: this.isNot, - }) + - '\n\n' + - `Expected constructor: ${EXPECTED_COLOR( - constructor.name || String(constructor), - )}\n` + - `Received constructor: ${RECEIVED_COLOR( - received != null - ? received.constructor && received.constructor.name - : '', - )}\n` + - `Received value: ${printReceived(received)}`; - - return {message, pass}; + matcherHint('.toBeInstanceOf', 'value', 'constructor', { + isNot: this.isNot, + }) + + '\n\n' + + `Expected constructor: ${EXPECTED_COLOR( + constructor.name || String(constructor), + )}\n` + + `Received constructor: ${RECEIVED_COLOR( + received != null + ? received.constructor && received.constructor.name + : '', + )}\n` + + `Received value: ${printReceived(received)}`; + + return { message, pass }; }, - toBeLessThan(received: number, expected: number) { + toBeLessThan(this: any, received: number, expected: number) { const isNot = this.isNot; const options = { isNot, @@ -268,12 +268,12 @@ const matchers: MatchersObject = { `Expected:${isNot ? ' not' : ''} < ${printExpected(expected)}\n` + `Received:${isNot ? ' ' : ''} ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, toBeLessThanOrEqual(received: number, expected: number) { const isNot = this.isNot; - const options = { + const options: any = { isNot, promise: this.promise, }; @@ -287,11 +287,11 @@ const matchers: MatchersObject = { `Expected:${isNot ? ' not' : ''} <= ${printExpected(expected)}\n` + `Received:${isNot ? ' ' : ''} ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, toBeNaN(received: any, expected: void) { - const options = { + const options: any = { isNot: this.isNot, promise: this.promise, }; @@ -304,11 +304,11 @@ const matchers: MatchersObject = { '\n\n' + `Received: ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, toBeNull(received: any, expected: void) { - const options = { + const options: any = { isNot: this.isNot, promise: this.promise, }; @@ -321,11 +321,11 @@ const matchers: MatchersObject = { '\n\n' + `Received: ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, toBeTruthy(received: any, expected: void) { - const options = { + const options: any = { isNot: this.isNot, promise: this.promise, }; @@ -338,11 +338,11 @@ const matchers: MatchersObject = { '\n\n' + `Received: ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, toBeUndefined(received: any, expected: void) { - const options = { + const options: any = { isNot: this.isNot, promise: this.promise, }; @@ -355,13 +355,13 @@ const matchers: MatchersObject = { '\n\n' + `Received: ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, - toContain(collection: ContainIterable | string, value: any) { + toContain(this: any, collection: ContainIterable | string, value: any) { const collectionType = getType(collection); - let converted = null; + let converted: any = null; if (Array.isArray(collection) || typeof collection === 'string') { // strings have `indexOf` so we don't need to convert // arrays have `indexOf` and we don't want to make a copy @@ -396,7 +396,7 @@ const matchers: MatchersObject = { typeof converted !== 'string' && converted instanceof Array && converted.findIndex(item => equals(item, value, [iterableEquality])) !== - -1; + -1; return ( matcherHint('.toContain', collectionType, 'value', { @@ -410,10 +410,10 @@ const matchers: MatchersObject = { ); }; - return {message, pass}; + return { message, pass }; }, - toContainEqual(collection: ContainIterable, value: any) { + toContainEqual(this: any, collection: ContainIterable, value: any) { const collectionType = getType(collection); let converted = null; if (Array.isArray(collection)) { @@ -455,42 +455,42 @@ const matchers: MatchersObject = { ); }; - return {message, pass}; + return { message, pass }; }, - toEqual(received: any, expected: any) { + toEqual(this: any, received: any, expected: any) { const pass = equals(received, expected, [iterableEquality]); const message = pass ? () => + matcherHint('.toEqual', undefined, undefined, { + isNot: this.isNot, + }) + + '\n\n' + + `Expected: ${printExpected(expected)}\n` + + `Received: ${printReceived(received)}` + : () => { + const diffString = diff(expected, received, { expand: this.expand }); + + return ( matcherHint('.toEqual', undefined, undefined, { isNot: this.isNot, }) + '\n\n' + - `Expected: ${printExpected(expected)}\n` + - `Received: ${printReceived(received)}` - : () => { - const diffString = diff(expected, received, {expand: this.expand}); - - return ( - matcherHint('.toEqual', undefined, undefined, { - isNot: this.isNot, - }) + - '\n\n' + - (diffString && diffString.includes('- Expect') - ? `Difference:\n\n${diffString}` - : `Expected: ${printExpected(expected)}\n` + - `Received: ${printReceived(received)}`) - ); - }; + (diffString && diffString.includes('- Expect') + ? `Difference:\n\n${diffString}` + : `Expected: ${printExpected(expected)}\n` + + `Received: ${printReceived(received)}`) + ); + }; // Passing the actual and expected objects so that a custom reporter // could access them, for example in order to display a custom visual diff, // or create a different error message - return {actual: received, expected, message, name: 'toEqual', pass}; + return { actual: received, expected, message, name: 'toEqual', pass }; }, - toHaveLength(received: any, length: number) { + toHaveLength(this: any, received: any, length: number) { if ( typeof received !== 'string' && (!received || typeof received.length !== 'number') @@ -544,10 +544,10 @@ const matchers: MatchersObject = { ); }; - return {message, pass}; + return { message, pass }; }, - toHaveProperty(object: Object, keyPath: string | Array, value?: any) { + toHaveProperty(this: any, object: Object, keyPath: string | Array, value?: any) { const valuePassed = arguments.length === 3; const secondArgument = valuePassed ? 'value' : null; @@ -557,7 +557,7 @@ const matchers: MatchersObject = { matcherHint('.toHaveProperty', undefined, 'path', { isNot: this.isNot, secondArgument, - }), + } as any), `${RECEIVED_COLOR('received')} value must not be null nor undefined`, printWithType('Received', object, printReceived), ), @@ -572,7 +572,7 @@ const matchers: MatchersObject = { matcherHint('.toHaveProperty', undefined, 'path', { isNot: this.isNot, secondArgument, - }), + } as any), `${EXPECTED_COLOR('expected')} path must be a string or array`, printWithType('Expected', keyPath, printExpected), ), @@ -580,7 +580,7 @@ const matchers: MatchersObject = { } const result = getPath(object, keyPath); - const {lastTraversedObject, hasEndProp} = result; + const { lastTraversedObject, hasEndProp } = result; const pass = valuePassed ? equals(result.value, value, [iterableEquality]) @@ -590,51 +590,51 @@ const matchers: MatchersObject = { const message = pass ? () => - matcherHint('.not.toHaveProperty', 'object', 'path', { + matcherHint('.not.toHaveProperty', 'object', 'path', { + secondArgument, + } as any) + + '\n\n' + + `Expected the object:\n` + + ` ${printReceived(object)}\n` + + `Not to have a nested property:\n` + + ` ${printExpected(keyPath)}\n` + + (valuePassed ? `With a value of:\n ${printExpected(value)}\n` : '') + : () => { + const diffString = + valuePassed && hasEndProp + ? diff(value, result.value, { expand: this.expand }) + : ''; + return ( + matcherHint('.toHaveProperty', 'object', 'path', { secondArgument, - }) + + } as any) + '\n\n' + `Expected the object:\n` + ` ${printReceived(object)}\n` + - `Not to have a nested property:\n` + + `To have a nested property:\n` + ` ${printExpected(keyPath)}\n` + - (valuePassed ? `With a value of:\n ${printExpected(value)}\n` : '') - : () => { - const diffString = - valuePassed && hasEndProp - ? diff(value, result.value, {expand: this.expand}) - : ''; - return ( - matcherHint('.toHaveProperty', 'object', 'path', { - secondArgument, - }) + - '\n\n' + - `Expected the object:\n` + - ` ${printReceived(object)}\n` + - `To have a nested property:\n` + - ` ${printExpected(keyPath)}\n` + - (valuePassed - ? `With a value of:\n ${printExpected(value)}\n` - : '') + - (hasEndProp - ? `Received:\n` + - ` ${printReceived(result.value)}` + - (diffString ? `\n\nDifference:\n\n${diffString}` : '') - : traversedPath + (valuePassed + ? `With a value of:\n ${printExpected(value)}\n` + : '') + + (hasEndProp + ? `Received:\n` + + ` ${printReceived(result.value)}` + + (diffString ? `\n\nDifference:\n\n${diffString}` : '') + : traversedPath ? `Received:\n ${RECEIVED_COLOR( - 'object', - )}.${traversedPath}: ${printReceived(lastTraversedObject)}` + 'object', + )}.${traversedPath}: ${printReceived(lastTraversedObject)}` : '') - ); - }; + ); + }; if (pass === undefined) { throw new Error('pass must be initialized'); } - return {message, pass}; + return { message, pass }; }, - toMatch(received: string, expected: string | RegExp) { + toMatch(this: any, received: string, expected: string | RegExp | any) { if (typeof received !== 'string') { throw new Error( matcherErrorMessage( @@ -669,22 +669,22 @@ const matchers: MatchersObject = { ).test(received); const message = pass ? () => - matcherHint('.not.toMatch') + - `\n\nExpected value not to match:\n` + - ` ${printExpected(expected)}` + - `\nReceived:\n` + - ` ${printReceived(received)}` + matcherHint('.not.toMatch') + + `\n\nExpected value not to match:\n` + + ` ${printExpected(expected)}` + + `\nReceived:\n` + + ` ${printReceived(received)}` : () => - matcherHint('.toMatch') + - `\n\nExpected value to match:\n` + - ` ${printExpected(expected)}` + - `\nReceived:\n` + - ` ${printReceived(received)}`; + matcherHint('.toMatch') + + `\n\nExpected value to match:\n` + + ` ${printExpected(expected)}` + + `\nReceived:\n` + + ` ${printReceived(received)}`; - return {message, pass}; + return { message, pass }; }, - toMatchObject(receivedObject: Object, expectedObject: Object) { + toMatchObject(this: any, receivedObject: Object, expectedObject: Object) { if (typeof receivedObject !== 'object' || receivedObject === null) { throw new Error( matcherErrorMessage( @@ -716,33 +716,33 @@ const matchers: MatchersObject = { const message = pass ? () => - matcherHint('.not.toMatchObject') + - `\n\nExpected value not to match object:\n` + + matcherHint('.not.toMatchObject') + + `\n\nExpected value not to match object:\n` + + ` ${printExpected(expectedObject)}` + + `\nReceived:\n` + + ` ${printReceived(receivedObject)}` + : () => { + const diffString = diff( + expectedObject, + getObjectSubset(receivedObject, expectedObject), + { + expand: this.expand, + }, + ); + return ( + matcherHint('.toMatchObject') + + `\n\nExpected value to match object:\n` + ` ${printExpected(expectedObject)}` + `\nReceived:\n` + - ` ${printReceived(receivedObject)}` - : () => { - const diffString = diff( - expectedObject, - getObjectSubset(receivedObject, expectedObject), - { - expand: this.expand, - }, - ); - return ( - matcherHint('.toMatchObject') + - `\n\nExpected value to match object:\n` + - ` ${printExpected(expectedObject)}` + - `\nReceived:\n` + - ` ${printReceived(receivedObject)}` + - (diffString ? `\nDifference:\n${diffString}` : '') - ); - }; - - return {message, pass}; + ` ${printReceived(receivedObject)}` + + (diffString ? `\nDifference:\n${diffString}` : '') + ); + }; + + return { message, pass }; }, - toStrictEqual(received: any, expected: any) { + toStrictEqual(this: any, received: any, expected: any) { const pass = equals( received, expected, @@ -755,21 +755,21 @@ const matchers: MatchersObject = { }); const message = pass ? () => - hint + - '\n\n' + - `Expected: ${printExpected(expected)}\n` + - `Received: ${printReceived(received)}` + hint + + '\n\n' + + `Expected: ${printExpected(expected)}\n` + + `Received: ${printReceived(received)}` : () => { - const diffString = diff(expected, received, { - expand: this.expand, - }); - return hint + (diffString ? `\n\nDifference:\n\n${diffString}` : ''); - }; + const diffString = diff(expected, received, { + expand: this.expand, + }); + return hint + (diffString ? `\n\nDifference:\n\n${diffString}` : ''); + }; // Passing the actual and expected objects so that a custom reporter // could access them, for example in order to display a custom visual diff, // or create a different error message - return {actual: received, expected, message, name: 'toStrictEqual', pass}; + return { actual: received, expected, message, name: 'toStrictEqual', pass }; }, }; From ab7d1e10fcb52a942798ac7964137710de044e87 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 20:06:37 +0800 Subject: [PATCH 10/47] Migrate jasmineUtils --- packages/expect/src/jasmineUtils.ts | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/expect/src/jasmineUtils.ts b/packages/expect/src/jasmineUtils.ts index 1063666af818..4b64c0875086 100644 --- a/packages/expect/src/jasmineUtils.ts +++ b/packages/expect/src/jasmineUtils.ts @@ -20,7 +20,6 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -@flow */ /* eslint-disable */ @@ -38,11 +37,11 @@ export function equals( return eq(a, b, [], [], customTesters, strictCheck ? hasKey : hasDefinedKey); } -function isAsymmetric(obj) { +function isAsymmetric(obj: any) { return !!obj && isA('Function', obj.asymmetricMatch); } -function asymmetricMatch(a, b) { +function asymmetricMatch(a: any, b: any) { var asymmetricA = isAsymmetric(a), asymmetricB = isAsymmetric(b); @@ -62,7 +61,7 @@ function asymmetricMatch(a, b) { // Equality function lovingly adapted from isEqual in // [Underscore](http://underscorejs.org) -function eq(a, b, aStack, bStack, customTesters, hasKey): boolean { +function eq(a: any, b: any, aStack: any, bStack: any, customTesters: any, hasKey: any): boolean { var result = true; var asymmetricResult = asymmetricMatch(a, b); @@ -204,8 +203,8 @@ function eq(a, b, aStack, bStack, customTesters, hasKey): boolean { return result; } -function keys(obj, isArray, hasKey) { - var allKeys = (function(o) { +function keys(obj: any, isArray: any, hasKey: any) { + var allKeys = (function (o) { var keys = []; for (var key in o) { if (hasKey(o, key)) { @@ -213,9 +212,9 @@ function keys(obj, isArray, hasKey) { } } return keys.concat( - (Object.getOwnPropertySymbols(o): Array).filter( + (Object.getOwnPropertySymbols(o) as Array).filter( //$FlowFixMe Jest complains about nullability, but we know for sure that property 'symbol' does exist. - symbol => Object.getOwnPropertyDescriptor(o, symbol).enumerable, + symbol => (Object.getOwnPropertyDescriptor(o, symbol) as any).enumerable, ), ); })(obj); @@ -238,11 +237,11 @@ function keys(obj, isArray, hasKey) { return extraKeys; } -function hasDefinedKey(obj, key) { +function hasDefinedKey(obj: any, key: any) { return hasKey(obj, key) && obj[key] !== undefined; } -function hasKey(obj, key) { +function hasKey(obj: any, key: any) { return Object.prototype.hasOwnProperty.call(obj, key); } @@ -250,7 +249,7 @@ export function isA(typeName: string, value: any) { return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; } -function isDomNode(obj) { +function isDomNode(obj: any) { return ( obj !== null && typeof obj === 'object' && @@ -272,7 +271,7 @@ export function isUndefined(obj: any) { return obj === void 0; } -function getPrototype(obj) { +function getPrototype(obj: any) { if (Object.getPrototypeOf) { return Object.getPrototypeOf(obj); } @@ -284,7 +283,7 @@ function getPrototype(obj) { return obj.constructor.prototype; } -export function hasProperty(obj: Object | null, property: string) { +export function hasProperty(obj: Object | null, property: string): boolean { if (!obj) { return false; } From 73042ba55424fb1170f66132b175c48e7363d848 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 20:08:24 +0800 Subject: [PATCH 11/47] migrate fakechalk --- packages/expect/src/fakeChalk.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/expect/src/fakeChalk.ts b/packages/expect/src/fakeChalk.ts index c113b8db0703..8fbae9f244b9 100644 --- a/packages/expect/src/fakeChalk.ts +++ b/packages/expect/src/fakeChalk.ts @@ -3,15 +3,14 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - * @flow */ import ansiStyles from 'ansi-styles'; -const returnInput = str => str; +const returnInput = (str: any) => str; const allColorsAsFunc = Object.keys(ansiStyles) - .map(style => ({[style]: returnInput})) + .map(style => ({ [style]: returnInput })) .reduce((acc, cur) => Object.assign(acc, cur)); Object.keys(allColorsAsFunc) From 30efca32b9deb8be478146cfc73a909f979d01e6 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 20:09:01 +0800 Subject: [PATCH 12/47] Migrate extractExpectedAssertionsErrors --- packages/expect/src/extractExpectedAssertionsErrors.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/expect/src/extractExpectedAssertionsErrors.ts b/packages/expect/src/extractExpectedAssertionsErrors.ts index 1a52a8424760..e165602cb2ad 100644 --- a/packages/expect/src/extractExpectedAssertionsErrors.ts +++ b/packages/expect/src/extractExpectedAssertionsErrors.ts @@ -4,7 +4,6 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow */ import { @@ -14,7 +13,7 @@ import { pluralize, } from 'jest-matcher-utils'; -import {getState, setState} from './jestMatchersObject'; +import { getState, setState } from './jestMatchersObject'; const resetAssertionsLocalState = () => { setState({ From 032c6eea050af059036c95b2e2ef659344b6aac2 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 20:11:47 +0800 Subject: [PATCH 13/47] Migrate asymmetricMatchers --- packages/expect/src/asymmetricMatchers.ts | 28 ++++++++++++----------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/expect/src/asymmetricMatchers.ts b/packages/expect/src/asymmetricMatchers.ts index 404cb3eb8cc9..8a4b145ad0c0 100644 --- a/packages/expect/src/asymmetricMatchers.ts +++ b/packages/expect/src/asymmetricMatchers.ts @@ -4,16 +4,14 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow */ -import {equals, fnNameFor, hasProperty, isA, isUndefined} from './jasmineUtils'; +import { equals, fnNameFor, hasProperty, isA, isUndefined } from './jasmineUtils'; -import {emptyObject} from './utils'; +import { emptyObject } from './utils'; export class AsymmetricMatcher { $$typeof: Symbol; - inverse: boolean; constructor() { this.$$typeof = Symbol.for('jest.asymmetricMatcher'); @@ -28,7 +26,7 @@ class Any extends AsymmetricMatcher { if (typeof sample === 'undefined') { throw new TypeError( 'any() expects to be passed a constructor function. ' + - 'Please pass one or use anything() to match any object.', + 'Please pass one or use anything() to match any object.', ); } this.sample = sample; @@ -109,6 +107,7 @@ class Anything extends AsymmetricMatcher { class ArrayContaining extends AsymmetricMatcher { sample: Array; + inverse: boolean; constructor(sample: Array, inverse: boolean = false) { super(); @@ -120,8 +119,8 @@ class ArrayContaining extends AsymmetricMatcher { if (!Array.isArray(this.sample)) { throw new Error( `You must provide an array to ${this.toString()}, not '` + - typeof this.sample + - "'.", + typeof this.sample + + "'.", ); } @@ -146,6 +145,7 @@ class ArrayContaining extends AsymmetricMatcher { class ObjectContaining extends AsymmetricMatcher { sample: Object; + inverse: boolean; constructor(sample: Object, inverse: boolean = false) { super(); @@ -153,12 +153,12 @@ class ObjectContaining extends AsymmetricMatcher { this.inverse = inverse; } - asymmetricMatch(other: Object) { + asymmetricMatch(other: any) { if (typeof this.sample !== 'object') { throw new Error( `You must provide an object to ${this.toString()}, not '` + - typeof this.sample + - "'.", + typeof this.sample + + "'.", ); } @@ -166,8 +166,8 @@ class ObjectContaining extends AsymmetricMatcher { for (const property in this.sample) { if ( hasProperty(other, property) && - equals(this.sample[property], other[property]) && - !emptyObject(this.sample[property]) && + equals((this.sample as any)[property], other[property]) && + !emptyObject((this.sample as any)[property]) && !emptyObject(other[property]) ) { return false; @@ -179,7 +179,7 @@ class ObjectContaining extends AsymmetricMatcher { for (const property in this.sample) { if ( !hasProperty(other, property) || - !equals(this.sample[property], other[property]) + !equals((this.sample as any)[property], other[property]) ) { return false; } @@ -200,6 +200,7 @@ class ObjectContaining extends AsymmetricMatcher { class StringContaining extends AsymmetricMatcher { sample: string; + inverse: boolean; constructor(sample: string, inverse: boolean = false) { super(); @@ -227,6 +228,7 @@ class StringContaining extends AsymmetricMatcher { class StringMatching extends AsymmetricMatcher { sample: RegExp; + inverse: boolean; constructor(sample: string | RegExp, inverse: boolean = false) { super(); From f4f55363960d01b83e2a7a6a84250cf4fff31ada Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 20:17:10 +0800 Subject: [PATCH 14/47] Migrate jestMatchersObject --- packages/expect/src/jestMatchersObject.ts | 29 ++++++++++++----------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/expect/src/jestMatchersObject.ts b/packages/expect/src/jestMatchersObject.ts index c2fc9600f5eb..1349c11b534b 100644 --- a/packages/expect/src/jestMatchersObject.ts +++ b/packages/expect/src/jestMatchersObject.ts @@ -4,15 +4,14 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow */ -import {AsymmetricMatcher} from './asymmetricMatchers'; -import type { +import { AsymmetricMatcher } from './asymmetricMatchers'; +import { Expect, MatchersObject, - SyncExpectationResult, -} from 'types/Matchers'; + ExpectationResult, +} from './types'; // Global matchers object holds the list of available matchers and // the state, that can hold matcher specific values that change over time. @@ -22,7 +21,7 @@ const JEST_MATCHERS_OBJECT = Symbol.for('$$jest-matchers-object'); // Jest may override the stack trace of Errors thrown by internal matchers. export const INTERNAL_MATCHER_FLAG = Symbol.for('$$jest-internal-matcher'); -if (!global[JEST_MATCHERS_OBJECT]) { +if (!(global as any)[JEST_MATCHERS_OBJECT]) { Object.defineProperty(global, JEST_MATCHERS_OBJECT, { value: { matchers: Object.create(null), @@ -36,13 +35,13 @@ if (!global[JEST_MATCHERS_OBJECT]) { }); } -export const getState = () => global[JEST_MATCHERS_OBJECT].state; +export const getState = () => (global as any)[JEST_MATCHERS_OBJECT].state; export const setState = (state: Object) => { - Object.assign(global[JEST_MATCHERS_OBJECT].state, state); + Object.assign((global as any)[JEST_MATCHERS_OBJECT].state, state); }; -export const getMatchers = () => global[JEST_MATCHERS_OBJECT].matchers; +export const getMatchers = () => (global as any)[JEST_MATCHERS_OBJECT].matchers; export const setMatchers = ( matchers: MatchersObject, @@ -60,6 +59,7 @@ export const setMatchers = ( class CustomMatcher extends AsymmetricMatcher { sample: Array; + inverse: boolean; constructor(inverse: boolean = false, ...sample: Array) { super(); @@ -68,10 +68,11 @@ export const setMatchers = ( } asymmetricMatch(other: any) { - const {pass} = ((matcher( - (other: any), - ...(this.sample: any), - ): any): SyncExpectationResult); + // @ts-ignore + const { pass }: ExpectationResult = matcher( + other, + ...this.sample as [any, any], + ); return this.inverse ? !pass : pass; } @@ -99,5 +100,5 @@ export const setMatchers = ( } }); - Object.assign(global[JEST_MATCHERS_OBJECT].matchers, matchers); + Object.assign((global as any)[JEST_MATCHERS_OBJECT].matchers, matchers); }; From bf8198c14673518ec7bf72984ba96635930718be Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 20:34:13 +0800 Subject: [PATCH 15/47] Upate Expectation object definition --- packages/expect/src/types.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/expect/src/types.ts b/packages/expect/src/types.ts index 50e5e6438da3..2327a92d16da 100644 --- a/packages/expect/src/types.ts +++ b/packages/expect/src/types.ts @@ -82,28 +82,28 @@ export type Expect = { not: { [id: string]: AsymmetricMatcher }, }; -type resolves = { +type resolvesFn = { [id: string]: PromiseMatcherFn, } & { not: { [id: string]: PromiseMatcherFn }, } -type rejects = { +type rejectsFn = { [id: string]: PromiseMatcherFn, } & { not: { [id: string]: PromiseMatcherFn }, } -type not = { +type notFn = { [id: string]: ThrowingMatcherFn } export type ExpectationObject = { [id: string]: ThrowingMatcherFn, } & { - resolves: resolves - rejects: rejects - not: not + resolves: resolvesFn + rejects: rejectsFn + not: notFn } export type MatcherHintOptions = { From a62f3a487e934959286900a45fddf6e6d7c47e7c Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 20:35:05 +0800 Subject: [PATCH 16/47] Migrate expect/index.ts --- packages/expect/src/index.ts | 67 ++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/packages/expect/src/index.ts b/packages/expect/src/index.ts index 1f50866a4e67..90aa72b2f232 100644 --- a/packages/expect/src/index.ts +++ b/packages/expect/src/index.ts @@ -4,12 +4,9 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow */ -import type { - Expect, - ExpectationObject, +import { AsyncExpectationResult, SyncExpectationResult, ExpectationResult, @@ -18,16 +15,18 @@ import type { RawMatcherFn, ThrowingMatcherFn, PromiseMatcherFn, -} from 'types/Matchers'; + ExpectationObject, + Expect, +} from './types'; import * as matcherUtils from 'jest-matcher-utils'; -import {iterableEquality, subsetEquality} from './utils'; +import { iterableEquality, subsetEquality } from './utils'; import matchers from './matchers'; import spyMatchers from './spyMatchers'; import toThrowMatchers, { createMatcher as createThrowMatcher, } from './toThrowMatchers'; -import {equals} from './jasmineUtils'; +import { equals } from './jasmineUtils'; import { any, anything, @@ -53,18 +52,18 @@ class JestAssertionError extends Error { matcherResult: any; } -const isPromise = obj => +const isPromise = (obj: any) => !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; -const createToThrowErrorMatchingSnapshotMatcher = function(matcher) { - return function(received: any, testNameOrInlineSnapshot?: string) { +const createToThrowErrorMatchingSnapshotMatcher = function (matcher: any) { + return function (this: any, received: any, testNameOrInlineSnapshot?: string) { return matcher.apply(this, [received, testNameOrInlineSnapshot, true]); }; }; -const getPromiseMatcher = (name, matcher) => { +const getPromiseMatcher = (name: string, matcher: any) => { if (name === 'toThrow' || name === 'toThrowError') { return createThrowMatcher(name, true); } else if ( @@ -77,16 +76,16 @@ const getPromiseMatcher = (name, matcher) => { return null; }; -const expect = (actual: any, ...rest): ExpectationObject => { +const expect: any = (actual: any, ...rest: Array): ExpectationObject => { if (rest.length !== 0) { throw new Error('Expect takes at most one argument.'); } const allMatchers = getMatchers(); - const expectation = { + const expectation: any = { not: {}, - rejects: {not: {}}, - resolves: {not: {}}, + rejects: { not: {} }, + resolves: { not: {} }, }; const err = new JestAssertionError(); @@ -131,7 +130,7 @@ const expect = (actual: any, ...rest): ExpectationObject => { return expectation; }; -const getMessage = message => +const getMessage = (message: any) => (message && message()) || matcherUtils.RECEIVED_COLOR('No message was specified for this matcher.'); @@ -234,7 +233,7 @@ const makeThrowingMatcher = ( ): ThrowingMatcherFn => function throwingMatcher(...args): any { let throws = true; - const utils = {...matcherUtils, iterableEquality, subsetEquality}; + const utils = { ...matcherUtils, iterableEquality, subsetEquality }; const matcherContext: MatcherState = { // When throws is disabled, the matcher will not throw errors during test @@ -294,7 +293,7 @@ const makeThrowingMatcher = ( const handlError = (error: Error) => { if ( - matcher[INTERNAL_MATCHER_FLAG] === true && + (matcher as any)[INTERNAL_MATCHER_FLAG] === true && !(error instanceof JestAssertionError) && error.name !== 'PrettyFormatPluginError' && // Guard for some environments (browsers) that do not support this feature. @@ -309,10 +308,10 @@ const makeThrowingMatcher = ( let potentialResult: ExpectationResult; try { - potentialResult = matcher.apply(matcherContext, [actual].concat(args)); + potentialResult = matcher.apply(matcherContext, ([actual] as any).concat(args)); - if (isPromise((potentialResult: any))) { - const asyncResult = ((potentialResult: any): AsyncExpectationResult); + if (isPromise(potentialResult)) { + const asyncResult: AsyncExpectationResult = potentialResult as any; const asyncError = new JestAssertionError(); if (Error.captureStackTrace) { Error.captureStackTrace(asyncError, throwingMatcher); @@ -322,7 +321,7 @@ const makeThrowingMatcher = ( .then(aResult => processResult(aResult, asyncError)) .catch(error => handlError(error)); } else { - const syncResult = ((potentialResult: any): SyncExpectationResult); + const syncResult: SyncExpectationResult = potentialResult as any; return processResult(syncResult); } @@ -332,7 +331,7 @@ const makeThrowingMatcher = ( }; expect.extend = (matchers: MatchersObject): void => - setMatchers(matchers, false, expect); + setMatchers(matchers, false, expect as any); expect.anything = anything; expect.any = any; @@ -349,7 +348,7 @@ expect.arrayContaining = arrayContaining; expect.stringContaining = stringContaining; expect.stringMatching = stringMatching; -const _validateResult = result => { +const _validateResult = (result: any) => { if ( typeof result !== 'object' || typeof result.pass !== 'boolean' || @@ -359,10 +358,10 @@ const _validateResult = result => { ) { throw new Error( 'Unexpected return from a matcher function.\n' + - 'Matcher functions should ' + - 'return an object in the following format:\n' + - ' {message?: string | function, pass: boolean}\n' + - `'${matcherUtils.stringify(result)}' was returned`, + 'Matcher functions should ' + + 'return an object in the following format:\n' + + ' {message?: string | function, pass: boolean}\n' + + `'${matcherUtils.stringify(result)}' was returned`, ); } }; @@ -376,7 +375,7 @@ function assertions(expected: number) { getState().expectedAssertionsNumber = expected; getState().expectedAssertionsNumberError = error; } -function hasAssertions(...args) { +function hasAssertions(...args: Array) { const error = new Error(); if (Error.captureStackTrace) { Error.captureStackTrace(error, hasAssertions); @@ -388,15 +387,15 @@ function hasAssertions(...args) { } // add default jest matchers -setMatchers(matchers, true, expect); -setMatchers(spyMatchers, true, expect); -setMatchers(toThrowMatchers, true, expect); +setMatchers(matchers, true, expect as Expect); +setMatchers(spyMatchers, true, expect as Expect); +setMatchers(toThrowMatchers, true, expect as Expect); expect.addSnapshotSerializer = () => void 0; expect.assertions = assertions; expect.hasAssertions = hasAssertions; expect.getState = getState; expect.setState = setState; -expect.extractExpectedAssertionsErrors = extractExpectedAssertionsErrors; +(expect as any).extractExpectedAssertionsErrors = extractExpectedAssertionsErrors; -module.exports = (expect: Expect); +exports = (expect as Expect); From 428620dda3a1afad263fa60b9d17c8ca582a0cf6 Mon Sep 17 00:00:00 2001 From: Alcedo Nathaniel De Guzman Jr Date: Sun, 17 Feb 2019 21:14:58 +0800 Subject: [PATCH 17/47] Add a diff file since it wont fit in the PR description --- packages/expect/.npmignore | 1 + packages/expect/ts-migration.diff | 898 ++++++++++++++++++++++++++++++ 2 files changed, 899 insertions(+) create mode 100644 packages/expect/ts-migration.diff diff --git a/packages/expect/.npmignore b/packages/expect/.npmignore index 85e48fe7b0a4..b40db0e109a1 100644 --- a/packages/expect/.npmignore +++ b/packages/expect/.npmignore @@ -1,3 +1,4 @@ **/__mocks__/** **/__tests__/** src +*.diff diff --git a/packages/expect/ts-migration.diff b/packages/expect/ts-migration.diff new file mode 100644 index 000000000000..4a2f3018ece1 --- /dev/null +++ b/packages/expect/ts-migration.diff @@ -0,0 +1,898 @@ +diff --git a/packages/expect/build-es5/index.js b/packages/expect/build-es5/index.js +index 5a87f236f..768c555b9 100644 +--- a/packages/expect/build-es5/index.js ++++ b/packages/expect/build-es5/index.js +@@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap + /******/ + /******/ + /******/ // Load entry module and return exports +-/******/ return __webpack_require__(__webpack_require__.s = "./packages/expect/src/index.js"); ++/******/ return __webpack_require__(__webpack_require__.s = "./packages/expect/src/index.ts"); + /******/ }) + /************************************************************************/ + /******/ ({ +@@ -27168,7 +27168,6 @@ function _interopRequireDefault(obj) { + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. +- * + */ + + +@@ -27191,9 +27190,9 @@ module.exports = allColorsAsFunc; + + /***/ }), + +-/***/ "./packages/expect/src/asymmetricMatchers.js": ++/***/ "./packages/expect/src/asymmetricMatchers.ts": + /*!***************************************************!*\ +- !*** ./packages/expect/src/asymmetricMatchers.js ***! ++ !*** ./packages/expect/src/asymmetricMatchers.ts ***! + \***************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { +@@ -27206,9 +27205,9 @@ Object.defineProperty(exports, "__esModule", { + }); + exports.stringNotMatching = exports.stringMatching = exports.stringNotContaining = exports.stringContaining = exports.objectNotContaining = exports.objectContaining = exports.arrayNotContaining = exports.arrayContaining = exports.anything = exports.any = exports.AsymmetricMatcher = void 0; + +-var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.js"); ++var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); + +-var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.js"); ++var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +@@ -27608,9 +27607,9 @@ exports.stringNotMatching = stringNotMatching; + + /***/ }), + +-/***/ "./packages/expect/src/extractExpectedAssertionsErrors.js": ++/***/ "./packages/expect/src/extractExpectedAssertionsErrors.ts": + /*!****************************************************************!*\ +- !*** ./packages/expect/src/extractExpectedAssertionsErrors.js ***! ++ !*** ./packages/expect/src/extractExpectedAssertionsErrors.ts ***! + \****************************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { +@@ -27625,7 +27624,7 @@ exports.default = void 0; + + var _jestMatcherUtils = __webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js"); + +-var _jestMatchersObject = __webpack_require__(/*! ./jestMatchersObject */ "./packages/expect/src/jestMatchersObject.js"); ++var _jestMatchersObject = __webpack_require__(/*! ./jestMatchersObject */ "./packages/expect/src/jestMatchersObject.ts"); + + /** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. +@@ -27633,7 +27632,6 @@ var _jestMatchersObject = __webpack_require__(/*! ./jestMatchersObject */ "./pac + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * +- * + */ + var resetAssertionsLocalState = function resetAssertionsLocalState() { + (0, _jestMatchersObject.setState)({ +@@ -27690,9 +27688,9 @@ exports.default = _default; + + /***/ }), + +-/***/ "./packages/expect/src/index.js": ++/***/ "./packages/expect/src/index.ts": + /*!**************************************!*\ +- !*** ./packages/expect/src/index.js ***! ++ !*** ./packages/expect/src/index.ts ***! + \**************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { +@@ -27702,21 +27700,21 @@ exports.default = _default; + + var matcherUtils = _interopRequireWildcard(__webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js")); + +-var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.js"); ++var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); + +-var _matchers = _interopRequireDefault(__webpack_require__(/*! ./matchers */ "./packages/expect/src/matchers.js")); ++var _matchers = _interopRequireDefault(__webpack_require__(/*! ./matchers */ "./packages/expect/src/matchers.ts")); + +-var _spyMatchers = _interopRequireDefault(__webpack_require__(/*! ./spyMatchers */ "./packages/expect/src/spyMatchers.js")); ++var _spyMatchers = _interopRequireDefault(__webpack_require__(/*! ./spyMatchers */ "./packages/expect/src/spyMatchers.ts")); + +-var _toThrowMatchers = _interopRequireWildcard(__webpack_require__(/*! ./toThrowMatchers */ "./packages/expect/src/toThrowMatchers.js")); ++var _toThrowMatchers = _interopRequireWildcard(__webpack_require__(/*! ./toThrowMatchers */ "./packages/expect/src/toThrowMatchers.ts")); + +-var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.js"); ++var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); + +-var _asymmetricMatchers = __webpack_require__(/*! ./asymmetricMatchers */ "./packages/expect/src/asymmetricMatchers.js"); ++var _asymmetricMatchers = __webpack_require__(/*! ./asymmetricMatchers */ "./packages/expect/src/asymmetricMatchers.ts"); + +-var _jestMatchersObject = __webpack_require__(/*! ./jestMatchersObject */ "./packages/expect/src/jestMatchersObject.js"); ++var _jestMatchersObject = __webpack_require__(/*! ./jestMatchersObject */ "./packages/expect/src/jestMatchersObject.ts"); + +-var _extractExpectedAssertionsErrors = _interopRequireDefault(__webpack_require__(/*! ./extractExpectedAssertionsErrors */ "./packages/expect/src/extractExpectedAssertionsErrors.js")); ++var _extractExpectedAssertionsErrors = _interopRequireDefault(__webpack_require__(/*! ./extractExpectedAssertionsErrors */ "./packages/expect/src/extractExpectedAssertionsErrors.ts")); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +@@ -28031,13 +28029,13 @@ expect.hasAssertions = hasAssertions; + expect.getState = _jestMatchersObject.getState; + expect.setState = _jestMatchersObject.setState; + expect.extractExpectedAssertionsErrors = _extractExpectedAssertionsErrors.default; +-module.exports = expect; ++exports = expect; + + /***/ }), + +-/***/ "./packages/expect/src/jasmineUtils.js": ++/***/ "./packages/expect/src/jasmineUtils.ts": + /*!*********************************************!*\ +- !*** ./packages/expect/src/jasmineUtils.js ***! ++ !*** ./packages/expect/src/jasmineUtils.ts ***! + \*********************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { +@@ -28080,7 +28078,6 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +- + */ + + /* eslint-disable */ +@@ -28370,9 +28367,9 @@ function isImmutableUnorderedSet(maybeSet) { + + /***/ }), + +-/***/ "./packages/expect/src/jestMatchersObject.js": ++/***/ "./packages/expect/src/jestMatchersObject.ts": + /*!***************************************************!*\ +- !*** ./packages/expect/src/jestMatchersObject.js ***! ++ !*** ./packages/expect/src/jestMatchersObject.ts ***! + \***************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { +@@ -28385,7 +28382,7 @@ Object.defineProperty(exports, "__esModule", { + }); + exports.setMatchers = exports.getMatchers = exports.setState = exports.getState = exports.INTERNAL_MATCHER_FLAG = void 0; + +-var _asymmetricMatchers = __webpack_require__(/*! ./asymmetricMatchers */ "./packages/expect/src/asymmetricMatchers.js"); ++var _asymmetricMatchers = __webpack_require__(/*! ./asymmetricMatchers */ "./packages/expect/src/asymmetricMatchers.ts"); + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +@@ -28493,8 +28490,9 @@ var setMatchers = function setMatchers(matchers, isInternal, expect) { + _createClass(CustomMatcher, [{ + key: "asymmetricMatch", + value: function asymmetricMatch(other) { +- var _ref = matcher.apply(void 0, [other].concat(_toConsumableArray(this.sample))), +- pass = _ref.pass; ++ // @ts-ignore ++ var _matcher = matcher.apply(void 0, [other].concat(_toConsumableArray(this.sample))), ++ pass = _matcher.pass; + + return this.inverse ? !pass : pass; + } +@@ -28547,9 +28545,9 @@ exports.setMatchers = setMatchers; + + /***/ }), + +-/***/ "./packages/expect/src/matchers.js": ++/***/ "./packages/expect/src/matchers.ts": + /*!*****************************************!*\ +- !*** ./packages/expect/src/matchers.js ***! ++ !*** ./packages/expect/src/matchers.ts ***! + \*****************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { +@@ -28568,9 +28566,9 @@ var _jestRegexUtil = __webpack_require__(/*! jest-regex-util */ "./packages/jest + + var _jestMatcherUtils = __webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js"); + +-var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.js"); ++var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); + +-var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.js"); ++var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +@@ -29117,9 +29115,9 @@ exports.default = _default; + + /***/ }), + +-/***/ "./packages/expect/src/spyMatchers.js": ++/***/ "./packages/expect/src/spyMatchers.ts": + /*!********************************************!*\ +- !*** ./packages/expect/src/spyMatchers.js ***! ++ !*** ./packages/expect/src/spyMatchers.ts ***! + \********************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { +@@ -29134,9 +29132,9 @@ exports.default = void 0; + + var _jestMatcherUtils = __webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js"); + +-var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.js"); ++var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); + +-var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.js"); ++var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +@@ -29152,7 +29150,6 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * +- * + */ + var CALL_PRINT_LIMIT = 3; + var RETURN_PRINT_LIMIT = 5; +@@ -29378,7 +29375,7 @@ var createNthCalledWithMatcher = function createNthCalledWithMatcher(matcherName + + ensureMock(received, matcherName); + var receivedIsSpy = isSpy(received); +- var type = receivedIsSpy ? 'spy' : 'mock function'; ++ var type = receivedIsSpy ? 'spy' : 'mock function'; // @ts-ignore + + if (typeof nth !== 'number' || parseInt(nth, 10) !== nth || nth < 1) { + var _message = function _message() { +@@ -29412,7 +29409,7 @@ var createNthCalledWithMatcher = function createNthCalledWithMatcher(matcherName + + var createNthReturnedWithMatcher = function createNthReturnedWithMatcher(matcherName) { + return function (received, nth, expected) { +- ensureMock(received, matcherName); ++ ensureMock(received, matcherName); //@ts-ignore + + if (typeof nth !== 'number' || parseInt(nth, 10) !== nth || nth < 1) { + var _message2 = function _message2() { +@@ -29566,9 +29563,9 @@ exports.default = _default; + + /***/ }), + +-/***/ "./packages/expect/src/toThrowMatchers.js": ++/***/ "./packages/expect/src/toThrowMatchers.ts": + /*!************************************************!*\ +- !*** ./packages/expect/src/toThrowMatchers.js ***! ++ !*** ./packages/expect/src/toThrowMatchers.ts ***! + \************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { +@@ -29585,7 +29582,7 @@ var _jestMessageUtil = __webpack_require__(/*! jest-message-util */ "./packages/ + + var _jestMatcherUtils = __webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js"); + +-var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.js"); ++var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +@@ -29763,7 +29760,8 @@ var formatReceived = function formatReceived(label, thrown, key) { + }; + + var formatStack = function formatStack(thrown) { +- return thrown === null || !thrown.isError ? '' : (0, _jestMessageUtil.formatStackTrace)((0, _jestMessageUtil.separateMessageFromStack)(thrown.value.stack).stack, { ++ return thrown === null || !thrown.isError ? '' : (0, _jestMessageUtil.formatStackTrace)( // @ts-ignore ++ (0, _jestMessageUtil.separateMessageFromStack)(thrown.value.stack).stack, { + rootDir: process.cwd(), + testMatch: [] + }, { +@@ -29777,9 +29775,9 @@ exports.default = _default; + + /***/ }), + +-/***/ "./packages/expect/src/utils.js": ++/***/ "./packages/expect/src/utils.ts": + /*!**************************************!*\ +- !*** ./packages/expect/src/utils.js ***! ++ !*** ./packages/expect/src/utils.ts ***! + \**************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { +@@ -29793,7 +29791,7 @@ Object.defineProperty(exports, "__esModule", { + exports.emptyObject = emptyObject; + exports.isOneline = exports.isError = exports.partition = exports.sparseArrayEquality = exports.typeEquality = exports.subsetEquality = exports.iterableEquality = exports.getObjectSubset = exports.getPath = exports.hasOwnProperty = void 0; + +-var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.js"); ++var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +diff --git a/packages/expect/build-es5/index.js.map b/packages/expect/build-es5/index.js.map +index 2ae764b5a..996c2f5a6 100644 +--- a/packages/expect/build-es5/index.js.map ++++ b/packages/expect/build-es5/index.js.map +@@ -1 +1 @@ +-{"version":3,"sources":["webpack://expect/webpack/universalModuleDefinition","webpack://expect/webpack/bootstrap","webpack://expect/./node_modules/@babel/code-frame/lib/index.js","webpack://expect/./node_modules/@babel/highlight/lib/index.js","webpack://expect/./node_modules/ansi-regex/index.js","webpack://expect/./node_modules/ansi-styles/index.js","webpack://expect/./node_modules/arr-diff/index.js","webpack://expect/./node_modules/arr-flatten/index.js","webpack://expect/./node_modules/arr-union/index.js","webpack://expect/./node_modules/array-unique/index.js","webpack://expect/./node_modules/assign-symbols/index.js","webpack://expect/./node_modules/base/index.js","webpack://expect/./node_modules/base/node_modules/define-property/index.js","webpack://expect/./node_modules/braces/index.js","webpack://expect/./node_modules/braces/lib/braces.js","webpack://expect/./node_modules/braces/lib/compilers.js","webpack://expect/./node_modules/braces/lib/parsers.js","webpack://expect/./node_modules/braces/lib/utils.js","webpack://expect/./node_modules/braces/node_modules/fill-range/index.js","webpack://expect/./node_modules/cache-base/index.js","webpack://expect/./node_modules/class-utils/index.js","webpack://expect/./node_modules/collection-visit/index.js","webpack://expect/./node_modules/color-convert/conversions.js","webpack://expect/./node_modules/color-convert/index.js","webpack://expect/./node_modules/color-convert/route.js","webpack://expect/./node_modules/color-name/index.js","webpack://expect/./node_modules/component-emitter/index.js","webpack://expect/./node_modules/copy-descriptor/index.js","webpack://expect/./node_modules/define-property/index.js","webpack://expect/./node_modules/define-property/node_modules/is-accessor-descriptor/index.js","webpack://expect/./node_modules/define-property/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/define-property/node_modules/is-data-descriptor/index.js","webpack://expect/./node_modules/define-property/node_modules/is-data-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/define-property/node_modules/is-descriptor/index.js","webpack://expect/./node_modules/define-property/node_modules/kind-of/index.js","webpack://expect/./node_modules/esutils/lib/ast.js","webpack://expect/./node_modules/esutils/lib/code.js","webpack://expect/./node_modules/esutils/lib/keyword.js","webpack://expect/./node_modules/esutils/lib/utils.js","webpack://expect/./node_modules/expand-brackets/index.js","webpack://expect/./node_modules/expand-brackets/lib/compilers.js","webpack://expect/./node_modules/expand-brackets/lib/parsers.js","webpack://expect/./node_modules/expand-brackets/lib/utils.js","webpack://expect/./node_modules/expand-brackets/node_modules/debug/src/browser.js","webpack://expect/./node_modules/expand-brackets/node_modules/debug/src/debug.js","webpack://expect/./node_modules/extend-shallow/index.js","webpack://expect/./node_modules/extglob/index.js","webpack://expect/./node_modules/extglob/lib/compilers.js","webpack://expect/./node_modules/extglob/lib/extglob.js","webpack://expect/./node_modules/extglob/lib/parsers.js","webpack://expect/./node_modules/extglob/lib/utils.js","webpack://expect/./node_modules/extglob/node_modules/define-property/index.js","webpack://expect/./node_modules/for-in/index.js","webpack://expect/./node_modules/fragment-cache/index.js","webpack://expect/./node_modules/get-value/index.js","webpack://expect/./node_modules/has-value/index.js","webpack://expect/./node_modules/has-values/index.js","webpack://expect/./node_modules/has-values/node_modules/kind-of/index.js","webpack://expect/./node_modules/inherits/inherits_browser.js","webpack://expect/./node_modules/is-accessor-descriptor/index.js","webpack://expect/./node_modules/is-accessor-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/is-buffer/index.js","webpack://expect/./node_modules/is-data-descriptor/index.js","webpack://expect/./node_modules/is-data-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/is-descriptor/index.js","webpack://expect/./node_modules/is-descriptor/node_modules/kind-of/index.js","webpack://expect/./node_modules/is-extendable/index.js","webpack://expect/./node_modules/is-number/index.js","webpack://expect/./node_modules/is-plain-object/index.js","webpack://expect/./node_modules/is-windows/index.js","webpack://expect/./node_modules/isarray/index.js","webpack://expect/./node_modules/isobject/index.js","webpack://expect/./node_modules/js-tokens/index.js","webpack://expect/./node_modules/kind-of/index.js","webpack://expect/./node_modules/map-cache/index.js","webpack://expect/./node_modules/map-visit/index.js","webpack://expect/./node_modules/micromatch/index.js","webpack://expect/./node_modules/micromatch/lib/cache.js","webpack://expect/./node_modules/micromatch/lib/compilers.js","webpack://expect/./node_modules/micromatch/lib/parsers.js","webpack://expect/./node_modules/micromatch/lib/utils.js","webpack://expect/./node_modules/micromatch/node_modules/define-property/index.js","webpack://expect/./node_modules/micromatch/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/micromatch/node_modules/is-extendable/index.js","webpack://expect/./node_modules/micromatch/node_modules/kind-of/index.js","webpack://expect/./node_modules/mixin-deep/index.js","webpack://expect/./node_modules/mixin-deep/node_modules/is-extendable/index.js","webpack://expect/./node_modules/ms/index.js","webpack://expect/./node_modules/nanomatch/index.js","webpack://expect/./node_modules/nanomatch/lib/cache.js","webpack://expect/./node_modules/nanomatch/lib/compilers.js","webpack://expect/./node_modules/nanomatch/lib/parsers.js","webpack://expect/./node_modules/nanomatch/lib/utils.js","webpack://expect/./node_modules/nanomatch/node_modules/define-property/index.js","webpack://expect/./node_modules/nanomatch/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/nanomatch/node_modules/is-extendable/index.js","webpack://expect/./node_modules/nanomatch/node_modules/kind-of/index.js","webpack://expect/./node_modules/object-copy/index.js","webpack://expect/./node_modules/object-visit/index.js","webpack://expect/./node_modules/object.pick/index.js","webpack://expect/./node_modules/pascalcase/index.js","webpack://expect/./node_modules/path-browserify/index.js","webpack://expect/./node_modules/posix-character-classes/index.js","webpack://expect/./node_modules/process/browser.js","webpack://expect/./node_modules/regex-not/index.js","webpack://expect/./node_modules/regex-not/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/regex-not/node_modules/is-extendable/index.js","webpack://expect/./node_modules/repeat-element/index.js","webpack://expect/./node_modules/repeat-string/index.js","webpack://expect/./node_modules/resolve-url/resolve-url.js","webpack://expect/./node_modules/ret/lib/index.js","webpack://expect/./node_modules/ret/lib/positions.js","webpack://expect/./node_modules/ret/lib/sets.js","webpack://expect/./node_modules/ret/lib/types.js","webpack://expect/./node_modules/ret/lib/util.js","webpack://expect/./node_modules/safe-regex/index.js","webpack://expect/./node_modules/set-value/index.js","webpack://expect/./node_modules/setimmediate/setImmediate.js","webpack://expect/./node_modules/slash/index.js","webpack://expect/./node_modules/snapdragon-node/index.js","webpack://expect/./node_modules/snapdragon-node/node_modules/define-property/index.js","webpack://expect/./node_modules/snapdragon-util/index.js","webpack://expect/./node_modules/snapdragon/index.js","webpack://expect/./node_modules/snapdragon/lib/compiler.js","webpack://expect/./node_modules/snapdragon/lib/parser.js","webpack://expect/./node_modules/snapdragon/lib/position.js","webpack://expect/./node_modules/snapdragon/lib/source-maps.js","webpack://expect/./node_modules/snapdragon/lib/utils.js","webpack://expect/./node_modules/snapdragon/node_modules/debug/src/browser.js","webpack://expect/./node_modules/snapdragon/node_modules/debug/src/debug.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/array-set.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/base64-vlq.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/base64.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/binary-search.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/mapping-list.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/quick-sort.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/source-map-consumer.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/source-map-generator.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/source-node.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/lib/util.js","webpack://expect/./node_modules/snapdragon/node_modules/source-map/source-map.js","webpack://expect/./node_modules/source-map-resolve/source-map-resolve.js","webpack://expect/./node_modules/source-map-url/source-map-url.js","webpack://expect/./node_modules/split-string/index.js","webpack://expect/./node_modules/split-string/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/split-string/node_modules/is-extendable/index.js","webpack://expect/./node_modules/stack-utils/index.js","webpack://expect/./node_modules/static-extend/index.js","webpack://expect/./node_modules/timers-browserify/main.js","webpack://expect/./node_modules/to-object-path/index.js","webpack://expect/./node_modules/to-regex-range/index.js","webpack://expect/./node_modules/to-regex/index.js","webpack://expect/./node_modules/to-regex/node_modules/define-property/index.js","webpack://expect/./node_modules/to-regex/node_modules/extend-shallow/index.js","webpack://expect/./node_modules/to-regex/node_modules/is-extendable/index.js","webpack://expect/./node_modules/union-value/index.js","webpack://expect/./node_modules/union-value/node_modules/set-value/index.js","webpack://expect/./node_modules/unset-value/index.js","webpack://expect/./node_modules/unset-value/node_modules/has-value/index.js","webpack://expect/./node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js","webpack://expect/./node_modules/unset-value/node_modules/has-values/index.js","webpack://expect/./node_modules/use/index.js","webpack://expect/./node_modules/util/support/isBufferBrowser.js","webpack://expect/./node_modules/util/util.js","webpack://expect/(webpack)/buildin/global.js","webpack://expect/(webpack)/buildin/module.js","webpack://expect/./packages/diff-sequences/build/index.js","webpack://expect/./packages/expect/build/fakeChalk.js","webpack://expect/./packages/expect/src/asymmetricMatchers.js","webpack://expect/./packages/expect/src/extractExpectedAssertionsErrors.js","webpack://expect/./packages/expect/src/index.js","webpack://expect/./packages/expect/src/jasmineUtils.js","webpack://expect/./packages/expect/src/jestMatchersObject.js","webpack://expect/./packages/expect/src/matchers.js","webpack://expect/./packages/expect/src/spyMatchers.js","webpack://expect/./packages/expect/src/toThrowMatchers.js","webpack://expect/./packages/expect/src/utils.js","webpack://expect/./packages/jest-diff/build/constants.js","webpack://expect/./packages/jest-diff/build/diffStrings.js","webpack://expect/./packages/jest-diff/build/index.js","webpack://expect/./packages/jest-get-type/build/index.js","webpack://expect/./packages/jest-matcher-utils/build/index.js","webpack://expect/./packages/jest-message-util/build/index.js","webpack://expect/./packages/jest-regex-util/build/index.js","webpack://expect/./packages/pretty-format/build/collections.js","webpack://expect/./packages/pretty-format/build/index.js","webpack://expect/./packages/pretty-format/build/plugins/AsymmetricMatcher.js","webpack://expect/./packages/pretty-format/build/plugins/ConvertAnsi.js","webpack://expect/./packages/pretty-format/build/plugins/DOMCollection.js","webpack://expect/./packages/pretty-format/build/plugins/DOMElement.js","webpack://expect/./packages/pretty-format/build/plugins/Immutable.js","webpack://expect/./packages/pretty-format/build/plugins/ReactElement.js","webpack://expect/./packages/pretty-format/build/plugins/ReactTestComponent.js","webpack://expect/./packages/pretty-format/build/plugins/lib/escapeHTML.js","webpack://expect/./packages/pretty-format/build/plugins/lib/markup.js"],"names":["Object","defineProperty","exports","value","codeFrameColumns","default","_default","_highlight","data","_interopRequireWildcard","require","obj","__esModule","newObj","key","prototype","hasOwnProperty","call","desc","getOwnPropertyDescriptor","get","set","deprecationWarningShown","getDefs","chalk","gutter","grey","marker","red","bold","message","NEWLINE","getMarkerLines","loc","source","opts","startLoc","assign","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","i","lineNumber","sourceLength","rawLines","highlighted","highlightCode","forceColor","shouldHighlight","getChalk","defs","maybeHighlight","chalkFn","string","lines","split","hasColumns","numberMaxWidth","String","frame","slice","map","index","number","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","join","reset","colNumber","process","emitWarning","deprecationError","Error","name","console","warn","location","highlight","_jsTokens","_esutils","_interopRequireDefault","_chalk","keyword","cyan","capitalized","yellow","jsx_tag","punctuator","magenta","green","regex","comment","invalid","white","bgRed","JSX_TAG","BRACKET","getTokenType","match","offset","text","token","matchToToken","type","isReservedWordES6","test","substr","toLowerCase","highlightTokens","args","colorize","str","options","supportsColor","constructor","enabled","level","code","module","onlyFirst","pattern","RegExp","undefined","colorConvert","wrapAnsi16","fn","apply","arguments","wrapAnsi256","wrapAnsi16m","rgb","assembleStyles","codes","Map","styles","modifier","dim","italic","underline","inverse","hidden","strikethrough","color","black","blue","gray","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgColor","bgBlack","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","keys","groupName","group","styleName","style","open","close","enumerable","ansi2ansi","n","rgb2rgb","r","g","b","ansi","ansi256","ansi16m","suite","ansi16","diff","arr","len","idx","diffArray","one","two","tlen","olen","ele","hasEle","val","push","flat","res","cur","union","init","TypeError","arg","j","indexOf","unique","splice","immutable","uniqueImmutable","arrLen","newArr","receiver","objects","Symbol","getOwnPropertySymbols","isEnumerable","propertyIsEnumerable","target","provider","names","util","define","CacheBase","Emitter","isObject","merge","pascal","cu","namespace","Cache","fns","Base","config","is","initBase","inherits","cache","_callbacks","visit","run","isRegistered","register","registered","emit","use","mixin","mixins","configurable","parent","base","prop","extend","Ctor","Parent","Child","inherit","bubble","isDescriptor","writable","toRegex","compilers","parsers","Braces","utils","MAX_LENGTH","braces","createKey","disabled","create","nodupes","expand","optimize","maxLength","isEmptySets","isQuotedString","proto","result","output","noempty","filter","Boolean","memoize","makeRe","strictErrors","parse","compile","ast","clearCache","Snapdragon","isInitialized","createOptions","snapdragon","compiler","parser","parsed","input","stack","addParent","pop","node","nodes","queue","isEscaped","count","escaped","negated","inner","last","arrayify","mapVisit","segs","multiplier","quantifiers","isQuantifier","isType","expanded","isOptimized","unescape","hasQueue","multiply","flatten","shift","prev","isLiteralBrace","noInner","hasEmpty","Node","pos","position","m","ch","consume","charAt","concatNodes","isInside","esc","isExtglobChar","brace","strict","lastNode","first","orig","a","simpleText","splitString","fillRange","id","bval","sep","keepQuotes","keepEscaping","escapeBrackets","rangeLimit","tok","stringifyArray","step","RangeError","brackets","parens","isString","escapeRegex","isNumber","stop","toNumber","transform","isValidNumber","strictRanges","isValid","inspect","isPadded","toString","stringify","charCodeAt","abs","toRange","zero","greater","lesser","asc","round","fromCharCode","zeros","toSequence","capture","dash","pad","Number","isValidLetter","toPath","del","has","ctx","clear","method","staticExtend","isObj","nativeKeys","hasAll","values","noop","identity","hasConstructor","getOwnPropertyNames","getDescriptor","copyDescriptor","copy","omit","props","concat","events","on","bind","collection","cssKeywords","reverseKeywords","convert","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","hcg","apple","model","delta","h","s","l","rdif","gdif","bdif","v","diffc","c","w","y","k","comparativeDistance","x","pow","reversed","currentClosestDistance","Infinity","currentClosestKeyword","distance","z","t1","t2","t3","smin","lmin","sv","hi","floor","f","p","q","t","vmin","sl","wh","bl","ratio","y2","x2","z2","hr","atan2","PI","sqrt","cos","sin","mult","rem","integer","toUpperCase","substring","colorString","char","parseInt","chroma","grayscale","hue","pure","mg","conversions","route","models","wrapRaw","wrappedFn","conversion","wrapRounded","forEach","fromModel","routes","routeModels","toModel","raw","buildGraph","graph","deriveBFS","current","adjacents","adjacent","unshift","link","from","to","wrapConversion","path","addEventListener","event","once","off","removeListener","removeAllListeners","removeEventListener","callbacks","cb","listeners","hasListeners","typeOf","accessor","isAccessorDescriptor","isBuffer","kindOf","Function","Date","isDataDescriptor","isAccessor","isData","isExpression","isIterationStatement","isStatement","isSourceElement","trailingStatement","alternate","consequent","body","isProblematicIfStatement","ES6Regex","ES5Regex","NON_ASCII_WHITESPACES","IDENTIFIER_START","IDENTIFIER_PART","NonAsciiIdentifierStart","NonAsciiIdentifierPart","isDecimalDigit","isHexDigit","isOctalDigit","isWhiteSpace","isLineTerminator","fromCodePoint","cp","cu1","cu2","isIdentifierStartES5","isIdentifierPartES5","isIdentifierStartES6","isIdentifierPartES6","isStrictModeReservedWordES6","isKeywordES5","isKeywordES6","isReservedWordES5","isRestrictedWord","isIdentifierNameES5","iz","decodeUtf16","lead","trail","isIdentifierNameES6","lowCh","check","isIdentifierES5","isIdentifierES6","debug","__filename","isMatch","matcher","failglob","nonull","nullglob","re","posix","isNegated","TEXT_REGEX","not","createRegex","state","sets","bracket","inside","insideBracket","next","rest","regexNot","cached","include","contains","strictClose","log","formatArgs","save","load","useColors","storage","chrome","local","localstorage","colors","window","document","documentElement","WebkitAppearance","firebug","exception","table","navigator","userAgent","$1","formatters","JSON","err","humanize","lastC","namespaces","removeItem","e","env","DEBUG","enable","localStorage","createDebug","coerce","disable","skips","prevTime","selectColor","hash","self","curr","ms","format","formatter","logFn","o","hasOwn","Extglob","extglob","list","matches","strictOpen","ext","exec","SyntaxError","__data__","star","prefix","bash","hasSlash","slash","patterns","sibling","loose","paren","metachar","forIn","thisArg","MapCache","FragmentCache","caches","cacheName","hasValues","hasValue","size","ctor","superCtor","super_","TempCtor","isGeneratorFn","isArguments","isDate","isError","isRegexp","ctorName","isGeneratorObj","stackTraceLimit","toDateString","getDate","setDate","flags","ignoreCase","multiline","global","throw","return","callee","isSlowBuffer","_isBuffer","readFloatLE","isExtendable","num","trim","isObjectObject","isPlainObject","prot","factory","isWindows","platform","OSTYPE","closed","mapSet","mapGet","mapHas","mapDelete","micromatch","keep","unixify","ignore","isEmptyString","equals","equalsPattern","some","every","any","all","containsPattern","matchBase","basename","matchKeys","pick","compose","hasSpecialChars","nocase","matchPath","matchBasename","ast_array","nobrace","braceExpand","instantiate","matchers","file","nanomatch","escape","qmark","plus","dot","noext","escapeExtglobs","TEXT","createNotRegex","textRegex","notRegex","notStr","toPosixPath","stripPrefix","isSlash","_equals","filepath","unixPath","_contains","equal","lower","isobject","Reflect","assignSymbols","toObject","isEnum","mixinDeep","d","isNaN","long","fmtLong","fmtShort","parseFloat","plural","ceil","matcherFn","wrap","nonegate","dotfiles","addQmark","leadingGlobstar","before","after","prior","isStart","NOT_REGEX","createTextRegex","slashes","paths","addPrefix","quote","advanceTo","bos","append","noglobstar","globstar","starRe","endChar","advance","isRegex","combineDupes","stripDrive","fp","isSimpleChar","pascalcase","_","normalizeArray","parts","allowAboveRoot","up","splitPathRe","splitPath","filename","resolve","resolvedPath","resolvedAbsolute","cwd","normalize","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","delimiter","dirname","root","dir","extname","xs","alnum","alpha","ascii","blank","cntrl","digit","print","punct","space","upper","word","xdigit","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","setTimeout","clearTimeout","runTimeout","fun","runClearTimeout","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","nextTick","Item","array","title","browser","argv","version","versions","addListener","prependListener","prependOnceListener","binding","chdir","umask","safe","strictNegate","resolveUrl","numUrls","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","types","positions","regexpStr","ROOT","lastGroup","groupStack","repeatErr","error","strToChars","wordBoundary","nonWordBoundary","words","notWords","ints","notInts","whitespace","notWhitespace","REFERENCE","CHAR","begin","classTokens","tokenizeClass","SET","anyChar","GROUP","remember","followedBy","notFollowedBy","rs","REPETITION","POSITION","INTS","RANGE","WORDS","WHITESPACE","NOTANYCHAR","CTRL","SLSH","chars_regex","lbs","a16","b16","c8","dctrl","eslsh","tokens","regexp","lastIndex","msg","replimit","limit","isRegExp","reps","walk","starHeight","ok","setImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","registerImmediate","callback","task","clearImmediate","handle","runIfPresent","installNextTickImplementation","canUsePostMessage","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","installPostMessageImplementation","messagePrefix","random","onGlobalMessage","attachEvent","installMessageChannelImplementation","channel","MessageChannel","port1","port2","installReadyStateChangeImplementation","html","script","onreadystatechange","appendChild","installSetTimeoutImplementation","attachTo","getPrototypeOf","isExtendedLengthPath","hasNonAscii","ownNames","lazyKeys","isNode","isEmpty","assert","remove","find","findNode","hasType","siblings","isScope","scope","toNoop","isFunction","addOpen","unshiftNode","addClose","pushNode","wrapNodes","popNode","shiftNode","removeNode","firstOfType","isOpen","isClose","hasOpen","hasClose","hasOpenAndClose","addType","removeType","child","isInsideType","Compiler","Parser","regexCache","compiled","reason","silent","errors","parsingErrors","sourcemap","sourcemaps","applySourceMaps","toJSON","Position","currentType","setCount","updatePosition","lastIndexOf","capturePair","openRegex","closeRegex","specialChars","suffix","eos","visited","hasDelims","fs","SourceMap","SourceMapGenerator","content","files","addMapping","generated","original","addContent","addFile","setSourceContent","inputSourcemaps","originalMap","sourceMapResolve","resolveSync","readFileSync","SourceMapConsumer","relativeTo","sourcesRelativeTo","applySourceMap","_comment","hasNativeMap","ArraySet","_array","_set","fromArray","ArraySet_fromArray","aArray","aAllowDuplicates","add","ArraySet_size","ArraySet_add","aStr","sStr","toSetString","isDuplicate","ArraySet_has","ArraySet_indexOf","at","ArraySet_at","aIdx","toArray","ArraySet_toArray","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","encode","base64VLQ_encode","encoded","vlq","decode","base64VLQ_decode","aIndex","aOutParam","strLen","continuation","intToCharMap","charCode","bigA","bigZ","littleA","littleZ","nine","littleOffset","numberOffset","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","cmp","search","generatedPositionAfter","mappingA","mappingB","lineA","generatedLine","lineB","columnA","generatedColumn","columnB","compareByGeneratedPositionsInflated","MappingList","_sorted","_last","unsortedForEach","MappingList_forEach","aCallback","aThisArg","MappingList_add","aMapping","MappingList_toArray","sort","swap","ary","temp","randomIntInRange","low","high","doQuickSort","comparator","pivotIndex","pivot","quickSort","binarySearch","base64VLQ","aSourceMap","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","fromSourceMap","_version","__generatedMappings","_parseMappings","_mappings","sourceRoot","__originalMappings","_charIsMappingSeparator","SourceMapConsumer_charIsMappingSeparator","SourceMapConsumer_parseMappings","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","eachMapping","SourceMapConsumer_eachMapping","aContext","aOrder","context","order","mappings","_generatedMappings","_originalMappings","mapping","_sources","originalLine","originalColumn","_names","allGeneratedPositionsFor","SourceMapConsumer_allGeneratedPositionsFor","aArgs","getArg","needle","_findMapping","compareByOriginalPositions","lastColumn","sources","sourcesContent","consumer","SourceMapConsumer_fromSourceMap","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","Mapping","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","originalMappings","segment","compareByGeneratedPositionsDeflated","SourceMapConsumer_findMapping","aMappings","aLineName","aColumnName","aComparator","computeColumnSpans","SourceMapConsumer_computeColumnSpans","nextMapping","lastGeneratedColumn","originalPositionFor","SourceMapConsumer_originalPositionFor","hasContentsOfAllSources","BasicSourceMapConsumer_hasContentsOfAllSources","sc","sourceContentFor","SourceMapConsumer_sourceContentFor","aSource","nullOnMissing","url","urlParse","fileUriAbsPath","scheme","generatedPositionFor","SourceMapConsumer_generatedPositionFor","lastOffset","_sections","offsetLine","offsetColumn","generatedOffset","IndexedSourceMapConsumer_originalPositionFor","sectionIndex","section","bias","IndexedSourceMapConsumer_hasContentsOfAllSources","IndexedSourceMapConsumer_sourceContentFor","IndexedSourceMapConsumer_generatedPositionFor","generatedPosition","ret","IndexedSourceMapConsumer_parseMappings","sectionMappings","adjustedMapping","_skipValidation","_sourcesContents","SourceMapGenerator_fromSourceMap","aSourceMapConsumer","generator","newMapping","sourceFile","SourceMapGenerator_addMapping","_validateMapping","SourceMapGenerator_setSourceContent","aSourceFile","aSourceContent","SourceMapGenerator_applySourceMap","aSourceMapPath","newSources","newNames","SourceMapGenerator_validateMapping","aGenerated","aOriginal","aName","_serializeMappings","SourceMapGenerator_serializeMappings","previousGeneratedLine","nameIdx","sourceIdx","SourceMapGenerator_generateSourcesContent","aSources","SourceMapGenerator_toJSON","SourceMapGenerator_toString","REGEX_NEWLINE","NEWLINE_CODE","isSourceNode","SourceNode","aLine","aColumn","aChunks","children","sourceContents","fromStringWithSourceMap","SourceNode_fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","lineContents","getNextLine","newLine","lastGeneratedLine","lastMapping","addMappingWithCode","nextLine","SourceNode_add","aChunk","chunk","prepend","SourceNode_prepend","SourceNode_walk","aFn","SourceNode_join","aSep","newChildren","replaceRight","SourceNode_replaceRight","aPattern","aReplacement","lastChild","SourceNode_setSourceContent","walkSourceContents","SourceNode_walkSourceContents","fromSetString","SourceNode_toString","toStringWithSourceMap","SourceNode_toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","aDefaultValue","urlRegexp","dataUrlRegexp","aUrl","auth","host","port","urlGenerate","aParsedUrl","aPath","part","aRoot","aPathUrl","aRootUrl","joined","supportsNullProto","isProtoString","onlyCompareOriginal","onlyCompareGenerated","strcmp","aStr1","aStr2","sourceMappingURL","callbackAsync","parseMapToJSON","sourceMapData","readSync","read","readUrl","resolveSourceMap","codeUrl","mapData","resolveSourceMapHelper","resolveSourceMapSync","dataUriRegex","jsonMimeTypeRegex","getFrom","dataUri","mimeType","lastParameter","atob","decodeURIComponent","mapUrl","resolveSources","pending","sourcesResolved","done","resolveSourcesHelper","fullUrl","resolveSourcesSync","endingSlash","_resolveSources","innerRegex","_innerRegex","existsIn","removeFrom","quotes","closeIdx","expected","getClosingQuote","keepDoubleQuotes","keepSingleQuotes","StackUtils","_cwd","_internals","internals","_wrapCallSite","wrapCallSite","nodeInternals","natives","clean","outdent","lastNonAtLine","st","isInternal","internal","isAtLine","captureString","limitBefore","captureStackTrace","prepBefore","prepareStackTrace","site","getLineNumber","getColumnNumber","_setFile","getFileName","isConstructor","isEval","evalOrigin","getEvalOrigin","isNative","native","typename","getTypeName","er","fname","getFunctionName","function","meth","getMethodName","methodRe","parseLine","evalFile","evalLine","evalCol","lnum","col","closeParen","closes","methodMatch","evalColumn","bound","extendFn","Timeout","setInterval","clearInterval","clearFn","_id","_clearFn","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","onTimeout","_onTimeout","toRegexRange","relax","relaxZeros","shorthand","padding","positives","negatives","maxLen","newMin","newMax","splitToPatterns","siftPatterns","neg","onlyNegative","filterPatterns","onlyPositive","intersected","subpatterns","splitToRanges","nines","stops","countNines","countZeros","compare","rangeToPattern","digits","zipped","zip","numbers","startDigit","stopDigit","toCharacterClass","ranges","range","toQuantifier","padZeros","comparison","intersection","negate","originalOptions","createdOptions","unionValue","unset","noZero","app","hook","plugin","fill","readUInt8","getOwnPropertyDescriptors","descriptors","formatRegExp","isNull","deprecate","noDeprecation","warned","deprecated","throwDeprecation","traceDeprecation","trace","debugs","debugEnviron","debuglog","isUndefined","NODE_DEBUG","pid","seen","stylize","stylizeNoColor","depth","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","formatError","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","numLinesEst","reduce","ar","isNullOrUndefined","isSymbol","objectToString","isPrimitive","months","timestamp","time","getHours","getMinutes","getSeconds","getMonth","origin","kCustomPromisifiedSymbol","promisify","promiseResolve","promiseReject","promise","Promise","reject","setPrototypeOf","defineProperties","custom","callbackifyOnRejected","newReason","callbackify","callbackified","maybeCb","then","rej","webpackPolyfill","pkg","NOT_YET_SET","countCommonItemsF","aEnd","bIndex","bEnd","isCommon","nCommon","countCommonItemsR","aStart","bStart","extendPathsF","bF","aIndexesF","iMaxF","iF","kF","aFirst","aIndexPrev1","nF","extendPathsR","bR","aIndexesR","iMaxR","iR","kR","nR","extendOverlappablePathsF","division","aLength","bLength","baDeltaLength","kMinOverlapF","kMaxOverlapF","insert","aLastPrev","bFirst","nCommonF","aLast","bLastPrev","nCommonR","aIndexPrevFirst","bIndexPrevFirst","aEndPreceding","bEndPreceding","nChangePreceding","nCommonPreceding","aCommonPreceding","bCommonPreceding","nCommonFollowing","aCommonFollowing","bCommonFollowing","aStartFollowing","bStartFollowing","nChangeFollowing","extendOverlappablePathsR","kMinOverlapR","kMaxOverlapR","bLast","divide","nChange","dMin","dMax","findSubsequences","transposed","_callbacks$","foundSubsequence","_foundSubsequence","_x","_x2","_x3","bCommon","aCommon","_isCommon","_x4","_x5","tStart","tEnd","validateLength","isSafeInteger","validateCallback","nCommonFR","_ansiStyles","returnInput","allColorsAsFunc","acc","AsymmetricMatcher","$$typeof","for","Any","sample","other","Anything","ArrayContaining","another","ObjectContaining","property","StringContaining","includes","StringMatching","expectedObject","anything","arrayContaining","arrayNotContaining","objectContaining","objectNotContaining","stringContaining","stringNotContaining","stringMatching","stringNotMatching","resetAssertionsLocalState","assertionCalls","expectedAssertionsNumber","isExpectingAssertions","extractExpectedAssertionsErrors","expectedAssertionsNumberError","isExpectingAssertionsError","numOfAssertionsExpected","isDirectExpectCall","actual","received","JestAssertionError","isPromise","createToThrowErrorMatchingSnapshotMatcher","testNameOrInlineSnapshot","getPromiseMatcher","expect","allMatchers","expectation","rejects","resolves","promiseMatcher","makeThrowingMatcher","makeResolveMatcher","makeRejectMatcher","getMessage","matcherUtils","RECEIVED_COLOR","matcherName","isNot","outerErr","matcherErrorMessage","matcherHint","printWithType","printReceived","innerErr","throwingMatcher","throws","iterableEquality","subsetEquality","matcherContext","dontThrow","processResult","asyncError","_validateResult","pass","matcherResult","suppressedErrors","handlError","INTERNAL_MATCHER_FLAG","potentialResult","asyncResult","aResult","catch","syncResult","assertions","hasAssertions","ensureNoExpected","spyMatchers","toThrowMatchers","addSnapshotSerializer","getState","setState","customTesters","strictCheck","eq","hasKey","hasDefinedKey","isAsymmetric","isA","asymmetricMatch","asymmetricA","asymmetricB","aStack","bStack","asymmetricResult","customTesterResult","className","aIsDomNode","isDomNode","bIsDomNode","isEqualNode","aIsElement","Element","bIsElement","outerHTML","innerText","textContent","aKeys","allKeys","symbol","extraKeys","typeName","nodeType","nodeName","fnNameFor","func","getPrototype","hasProperty","IS_KEYED_SENTINEL","IS_SET_SENTINEL","IS_ORDERED_SENTINEL","isImmutableUnorderedKeyed","maybeKeyed","isImmutableUnorderedSet","maybeSet","JEST_MATCHERS_OBJECT","getMatchers","setMatchers","CustomMatcher","toBe","receivedType","expectedType","suggestToEqual","oneline","diffString","SUGGEST_TO_EQUAL","toBeCloseTo","precision","secondArgument","expectedDiff","receivedDiff","toBeDefined","toBeFalsy","toBeGreaterThan","toBeGreaterThanOrEqual","toBeInstanceOf","constType","printExpected","toBeLessThan","toBeLessThanOrEqual","toBeNaN","toBeNull","toBeTruthy","toBeUndefined","toContain","collectionType","converted","stringExpected","stringReceived","printLabel","suggestToContainEqual","findIndex","SUGGEST_TO_CONTAIN_EQUAL","toContainEqual","toEqual","toHaveLength","stringReceivedLength","stringReceivedValue","toHaveProperty","object","keyPath","valuePassed","keyPathType","lastTraversedObject","hasEndProp","traversedPath","toMatch","toMatchObject","receivedObject","toStrictEqual","typeEquality","sparseArrayEquality","hint","CALL_PRINT_LIMIT","RETURN_PRINT_LIMIT","LAST_CALL_PRINT_LIMIT","createToBeCalledMatcher","ensureMock","receivedIsSpy","isSpy","receivedName","getMockName","identifier","calls","mock","formatReceivedCalls","sameSentence","createToReturnMatcher","returnValues","results","getPrintedReturnValues","createToBeCalledTimesMatcher","createToReturnTimesMatcher","returnResults","createToBeCalledWithMatcher","fail","formatMismatchedCalls","createToReturnWithMatcher","formatMismatchedReturnValues","createLastCalledWithMatcher","createLastReturnedMatcher","lastResult","createNthCalledWithMatcher","nth","nthToString","createNthReturnedWithMatcher","nthResult","nthString","lastCalledWith","lastReturnedWith","nthCalledWith","nthReturnedWith","toBeCalled","toBeCalledTimes","toBeCalledWith","toHaveBeenCalled","toHaveBeenCalledTimes","toHaveBeenCalledWith","toHaveBeenLastCalledWith","toHaveBeenNthCalledWith","toHaveLastReturnedWith","toHaveNthReturnedWith","toHaveReturned","toHaveReturnedTimes","toHaveReturnedWith","toReturn","toReturnTimes","toReturnWith","spy","mockOrSpy","_isMockFunction","getPrintedCalls","but","printedCalls","formatMismatchedArgs","printedArgs","DID_NOT_THROW","getThrown","hasMessage","createMatcher","fromPromise","thrown","placeholder","toThrow","toThrowExpectedClass","toThrowExpectedString","toThrowExpectedRegExp","toThrowExpectedAsymmetric","toThrowExpectedObject","toThrowError","formatExpected","formatReceived","formatStack","label","rootDir","testMatch","noStackTrace","hasGetterFromConstructor","descriptor","getPath","propertyPath","lastProp","newObject","getObjectSubset","subset","sub","trimmed","IteratorSymbol","iterator","hasIterator","allFound","bValue","isEqual","aEntry","bEntry","matchedKey","matchedValue","bIterator","nextB","isObjectWithKeys","bKeys","partition","items","predicate","emptyObject","MULTILINE_REGEXP","isOneline","SIMILAR_MESSAGE","NO_DIFF_MESSAGE","_diffSequences","_constants","DIFF_CONTEXT_DEFAULT","fgPatchMark","fgDelete","fgInsert","fgCommon","fgIndent","bgCommon","bgInverse","highlightTrailingSpaces","highlightLeadingTrailingSpaces","getHighlightSpaces","bothEdges","getAnnotation","aAnnotation","bAnnotation","formatDelete","aLinesUn","aLinesIn","put","highlightSpaces","aLineUn","aLineIn","indentation","formatInsert","bLinesUn","bLinesIn","bLineUn","bLineIn","formatCommon","bLineInLength","hasSameIndentation","fg","bg","diffExpand","createPatchMark","getContextLines","contextLines","diffNoExpand","nContextLines","iPatchMark","isAtEnd","nContextLines2","aStartCommon","bStartCommon","aEndCommon","bEndCommon","nLines","maxContextLines","_prettyFormat","_jestGetType","_diffStrings","_objectSpread","ownKeys","sym","_defineProperty","_prettyFormat$plugins","plugins","DOMCollection","DOMElement","Immutable","ReactElement","ReactTestComponent","PLUGINS","FORMAT_OPTIONS","FORMAT_OPTIONS_0","indent","FALLBACK_FORMAT_OPTIONS","callToJSON","maxDepth","FALLBACK_FORMAT_OPTIONS_0","aType","omitDifference","getExpectedType","comparePrimitive","compareObjects","sortMap","sortSet","entries","Set","diffMessage","hasThrown","getType","getLabelPrinter","pluralize","ensureNumbers","ensureExpectedIsNumber","ensureActualIsNumber","highlightTrailingWhitespace","EXPECTED_COLOR","_jestDiff","DIM_COLOR","NUMBERS","matcherString","shouldPrintDiff","strings","generic","specific","_options$comment","_options$isDirectExpe","_options$isNot","_options$promise","_options$secondArgume","dimString","_types","Frame","separateMessageFromStack","formatResultsErrors","formatStackTrace","getTopFrame","getStackTraceLines","formatExecError","_fs","_path","_micromatch","_slash","_codeFrame","_stackUtils","jestReadFile","stackUtils","PATH_NODE_MODULES","PATH_JEST_PACKAGES","JASMINE_IGNORE","JEST_INTERNALS_IGNORE","ANONYMOUS_FN_IGNORE","ANONYMOUS_PROMISE_IGNORE","ANONYMOUS_GENERATOR_IGNORE","NATIVE_NEXT_IGNORE","TITLE_INDENT","MESSAGE_INDENT","STACK_INDENT","ANCESTRY_SEPARATOR","TITLE_BULLET","STACK_TRACE_COLOR","STACK_PATH_REGEXP","EXEC_ERROR_MESSAGE","NOT_EMPTY_LINE_REGEXP","indentAllLines","trimPaths","getRenderedCallsite","fileContent","renderedCallsite","testPath","reuseMessage","separated","messageToUse","removeInternalStackEntries","pathCounter","formatPaths","relativeTestPath","filePath","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","parsedFrame","topFrame","stacktrace","testResults","failedResults","failureMessages","_separateMessageFromS","ancestorTitles","messageMatch","replacePathSepForRegex","escapeStrForRegex","escapePathForRegex","_match","p2","printIteratorEntries","printIteratorValues","printListItems","printObjectProperties","getKeysOfEnumerableProperties","refs","printer","separator","spacingOuter","indentationNext","spacingInner","_collections","_AsymmetricMatcher","_ConvertAnsi","_DOMCollection","_DOMElement","_Immutable","_ReactElement","_ReactTestComponent","toISOString","errorToString","regExpToString","symbolToString","getConstructorName","isWindow","SYMBOL_REGEXP","NEWLINE_REGEXP","PrettyFormatPluginError","isToStringedArrayType","toStringed","printNumber","printFunction","printFunctionName","printSymbol","printError","printBasicValue","escapeString","printComplexValue","hasCalledToJSON","hitMaxDepth","isNewPlugin","serialize","printPlugin","printed","valChild","edgeSpacing","spacing","findPlugin","basicResult","DEFAULT_THEME","tag","DEFAULT_THEME_KEYS","DEFAULT_OPTIONS","theme","validateOptions","getColorsHighlight","getColorsEmpty","getPrintFunctionName","getEscapeRegex","getEscapeString","getConfig","createIndent","prettyFormat","ConvertAnsi","asymmetricMatcher","SPACE","stringedValue","toAsymmetricMatcher","_ansiRegex","toHumanReadableAnsi","OBJECT_NAMES","ARRAY_REGEXP","testName","propsReducer","attribute","_markup","ELEMENT_NODE","TEXT_NODE","COMMENT_NODE","FRAGMENT_NODE","ELEMENT_REGEXP","testNode","nodeIsText","nodeIsComment","nodeIsFragment","printText","printComment","tagName","printElementAsLeaf","printElement","printProps","attributes","attr","printChildren","childNodes","IS_ITERABLE_SENTINEL","IS_LIST_SENTINEL","IS_MAP_SENTINEL","IS_RECORD_SENTINEL","IS_SEQ_SENTINEL","IS_STACK_SENTINEL","getImmutableName","printAsLeaf","LAZY","printImmutableEntries","getRecordEntries","_keys","printImmutableRecord","_name","printImmutableSeq","_iter","_object","_collection","_iterable","printImmutableValues","elementSymbol","fragmentSymbol","forwardRefSymbol","providerSymbol","contextSymbol","memoSymbol","getChildren","element","displayName","functionName","render","getPropKeys","testSymbol","escapeHTML","_escapeHTML","contentColor","commentColor","printedProps","printedChildren","tagColor"],"mappings":"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","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"expect\"] = factory();\n\telse\n\t\troot[\"expect\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./packages/expect/src/index.js\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.codeFrameColumns = codeFrameColumns;\nexports.default = _default;\n\nfunction _highlight() {\n const data = _interopRequireWildcard(require(\"@babel/highlight\"));\n\n _highlight = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nlet deprecationWarningShown = false;\n\nfunction getDefs(chalk) {\n return {\n gutter: chalk.grey,\n marker: chalk.red.bold,\n message: chalk.red.bold\n };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\nfunction getMarkerLines(loc, source, opts) {\n const startLoc = Object.assign({\n column: 0,\n line: -1\n }, loc.start);\n const endLoc = Object.assign({}, startLoc, loc.end);\n const {\n linesAbove = 2,\n linesBelow = 3\n } = opts || {};\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return {\n start,\n end,\n markerLines\n };\n}\n\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight().shouldHighlight)(opts);\n const chalk = (0, _highlight().getChalk)(opts);\n const defs = getDefs(chalk);\n\n const maybeHighlight = (chalkFn, string) => {\n return highlighted ? chalkFn(string) : string;\n };\n\n if (highlighted) rawLines = (0, _highlight().default)(rawLines, opts);\n const lines = rawLines.split(NEWLINE);\n const {\n start,\n end,\n markerLines\n } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n const numberMaxWidth = String(end).length;\n let frame = lines.slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} | `;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\"\\n \", maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")), markerSpacing, maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers)].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n }\n }\n\n return [maybeHighlight(defs.marker, \">\"), maybeHighlight(defs.gutter, gutter), line, markerLine].join(\"\");\n } else {\n return ` ${maybeHighlight(defs.gutter, gutter)}${line}`;\n }\n }).join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n if (highlighted) {\n return chalk.reset(frame);\n } else {\n return frame;\n }\n}\n\nfunction _default(rawLines, lineNumber, colNumber, opts = {}) {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n const message = \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n if (process.emitWarning) {\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n\n colNumber = Math.max(colNumber, 0);\n const location = {\n start: {\n column: colNumber,\n line: lineNumber\n }\n };\n return codeFrameColumns(rawLines, location, opts);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shouldHighlight = shouldHighlight;\nexports.getChalk = getChalk;\nexports.default = highlight;\n\nfunction _jsTokens() {\n const data = _interopRequireWildcard(require(\"js-tokens\"));\n\n _jsTokens = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _esutils() {\n const data = _interopRequireDefault(require(\"esutils\"));\n\n _esutils = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _chalk() {\n const data = _interopRequireDefault(require(\"chalk\"));\n\n _chalk = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction getDefs(chalk) {\n return {\n keyword: chalk.cyan,\n capitalized: chalk.yellow,\n jsx_tag: chalk.yellow,\n punctuator: chalk.yellow,\n number: chalk.magenta,\n string: chalk.green,\n regex: chalk.magenta,\n comment: chalk.grey,\n invalid: chalk.white.bgRed.bold\n };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nconst JSX_TAG = /^[a-z][\\w-]*$/i;\nconst BRACKET = /^[()[\\]{}]$/;\n\nfunction getTokenType(match) {\n const [offset, text] = match.slice(-2);\n const token = (0, _jsTokens().matchToToken)(match);\n\n if (token.type === \"name\") {\n if (_esutils().default.keyword.isReservedWordES6(token.value)) {\n return \"keyword\";\n }\n\n if (JSX_TAG.test(token.value) && (text[offset - 1] === \"<\" || text.substr(offset - 2, 2) == \" colorize(str)).join(\"\\n\");\n } else {\n return args[0];\n }\n });\n}\n\nfunction shouldHighlight(options) {\n return _chalk().default.supportsColor || options.forceColor;\n}\n\nfunction getChalk(options) {\n let chalk = _chalk().default;\n\n if (options.forceColor) {\n chalk = new (_chalk().default.constructor)({\n enabled: true,\n level: 1\n });\n }\n\n return chalk;\n}\n\nfunction highlight(code, options = {}) {\n if (shouldHighlight(options)) {\n const chalk = getChalk(options);\n const defs = getDefs(chalk);\n return highlightTokens(defs, code);\n } else {\n return code;\n }\n}","'use strict';\n\nmodule.exports = options => {\n\toptions = Object.assign({\n\t\tonlyFirst: false\n\t}, options);\n\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:[a-zA-Z\\\\d]*(?:;[a-zA-Z\\\\d]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, options.onlyFirst ? undefined : 'g');\n};\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","/*!\n * arr-diff \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function diff(arr/*, arrays*/) {\n var len = arguments.length;\n var idx = 0;\n while (++idx < len) {\n arr = diffArray(arr, arguments[idx]);\n }\n return arr;\n};\n\nfunction diffArray(one, two) {\n if (!Array.isArray(two)) {\n return one.slice();\n }\n\n var tlen = two.length\n var olen = one.length;\n var idx = -1;\n var arr = [];\n\n while (++idx < olen) {\n var ele = one[idx];\n\n var hasEle = false;\n for (var i = 0; i < tlen; i++) {\n var val = two[i];\n\n if (ele === val) {\n hasEle = true;\n break;\n }\n }\n\n if (hasEle === false) {\n arr.push(ele);\n }\n }\n return arr;\n}\n","/*!\n * arr-flatten \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function (arr) {\n return flat(arr, []);\n};\n\nfunction flat(arr, res) {\n var i = 0, cur;\n var len = arr.length;\n for (; i < len; i++) {\n cur = arr[i];\n Array.isArray(cur) ? flat(cur, res) : res.push(cur);\n }\n return res;\n}\n","'use strict';\n\nmodule.exports = function union(init) {\n if (!Array.isArray(init)) {\n throw new TypeError('arr-union expects the first argument to be an array.');\n }\n\n var len = arguments.length;\n var i = 0;\n\n while (++i < len) {\n var arg = arguments[i];\n if (!arg) continue;\n\n if (!Array.isArray(arg)) {\n arg = [arg];\n }\n\n for (var j = 0; j < arg.length; j++) {\n var ele = arg[j];\n\n if (init.indexOf(ele) >= 0) {\n continue;\n }\n init.push(ele);\n }\n }\n return init;\n};\n","/*!\n * array-unique \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function unique(arr) {\n if (!Array.isArray(arr)) {\n throw new TypeError('array-unique expects an array.');\n }\n\n var len = arr.length;\n var i = -1;\n\n while (i++ < len) {\n var j = i + 1;\n\n for (; j < arr.length; ++j) {\n if (arr[i] === arr[j]) {\n arr.splice(j--, 1);\n }\n }\n }\n return arr;\n};\n\nmodule.exports.immutable = function uniqueImmutable(arr) {\n if (!Array.isArray(arr)) {\n throw new TypeError('array-unique expects an array.');\n }\n\n var arrLen = arr.length;\n var newArr = new Array(arrLen);\n\n for (var i = 0; i < arrLen; i++) {\n newArr[i] = arr[i];\n }\n\n return module.exports(newArr);\n};\n","/*!\n * assign-symbols \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(receiver, objects) {\n if (receiver === null || typeof receiver === 'undefined') {\n throw new TypeError('expected first argument to be an object.');\n }\n\n if (typeof objects === 'undefined' || typeof Symbol === 'undefined') {\n return receiver;\n }\n\n if (typeof Object.getOwnPropertySymbols !== 'function') {\n return receiver;\n }\n\n var isEnumerable = Object.prototype.propertyIsEnumerable;\n var target = Object(receiver);\n var len = arguments.length, i = 0;\n\n while (++i < len) {\n var provider = Object(arguments[i]);\n var names = Object.getOwnPropertySymbols(provider);\n\n for (var j = 0; j < names.length; j++) {\n var key = names[j];\n\n if (isEnumerable.call(provider, key)) {\n target[key] = provider[key];\n }\n }\n }\n return target;\n};\n","'use strict';\n\nvar util = require('util');\nvar define = require('define-property');\nvar CacheBase = require('cache-base');\nvar Emitter = require('component-emitter');\nvar isObject = require('isobject');\nvar merge = require('mixin-deep');\nvar pascal = require('pascalcase');\nvar cu = require('class-utils');\n\n/**\n * Optionally define a custom `cache` namespace to use.\n */\n\nfunction namespace(name) {\n var Cache = name ? CacheBase.namespace(name) : CacheBase;\n var fns = [];\n\n /**\n * Create an instance of `Base` with the given `config` and `options`.\n *\n * ```js\n * // initialize with `config` and `options`\n * var app = new Base({isApp: true}, {abc: true});\n * app.set('foo', 'bar');\n *\n * // values defined with the given `config` object will be on the root of the instance\n * console.log(app.baz); //=> undefined\n * console.log(app.foo); //=> 'bar'\n * // or use `.get`\n * console.log(app.get('isApp')); //=> true\n * console.log(app.get('foo')); //=> 'bar'\n *\n * // values defined with the given `options` object will be on `app.options\n * console.log(app.options.abc); //=> true\n * ```\n *\n * @param {Object} `config` If supplied, this object is passed to [cache-base][] to merge onto the the instance upon instantiation.\n * @param {Object} `options` If supplied, this object is used to initialize the `base.options` object.\n * @api public\n */\n\n function Base(config, options) {\n if (!(this instanceof Base)) {\n return new Base(config, options);\n }\n Cache.call(this, config);\n this.is('base');\n this.initBase(config, options);\n }\n\n /**\n * Inherit cache-base\n */\n\n util.inherits(Base, Cache);\n\n /**\n * Add static emitter methods\n */\n\n Emitter(Base);\n\n /**\n * Initialize `Base` defaults with the given `config` object\n */\n\n Base.prototype.initBase = function(config, options) {\n this.options = merge({}, this.options, options);\n this.cache = this.cache || {};\n this.define('registered', {});\n if (name) this[name] = {};\n\n // make `app._callbacks` non-enumerable\n this.define('_callbacks', this._callbacks);\n if (isObject(config)) {\n this.visit('set', config);\n }\n Base.run(this, 'use', fns);\n };\n\n /**\n * Set the given `name` on `app._name` and `app.is*` properties. Used for doing\n * lookups in plugins.\n *\n * ```js\n * app.is('foo');\n * console.log(app._name);\n * //=> 'foo'\n * console.log(app.isFoo);\n * //=> true\n * app.is('bar');\n * console.log(app.isFoo);\n * //=> true\n * console.log(app.isBar);\n * //=> true\n * console.log(app._name);\n * //=> 'bar'\n * ```\n * @name .is\n * @param {String} `name`\n * @return {Boolean}\n * @api public\n */\n\n Base.prototype.is = function(name) {\n if (typeof name !== 'string') {\n throw new TypeError('expected name to be a string');\n }\n this.define('is' + pascal(name), true);\n this.define('_name', name);\n this.define('_appname', name);\n return this;\n };\n\n /**\n * Returns true if a plugin has already been registered on an instance.\n *\n * Plugin implementors are encouraged to use this first thing in a plugin\n * to prevent the plugin from being called more than once on the same\n * instance.\n *\n * ```js\n * var base = new Base();\n * base.use(function(app) {\n * if (app.isRegistered('myPlugin')) return;\n * // do stuff to `app`\n * });\n *\n * // to also record the plugin as being registered\n * base.use(function(app) {\n * if (app.isRegistered('myPlugin', true)) return;\n * // do stuff to `app`\n * });\n * ```\n * @name .isRegistered\n * @emits `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once.\n * @param {String} `name` The plugin name.\n * @param {Boolean} `register` If the plugin if not already registered, to record it as being registered pass `true` as the second argument.\n * @return {Boolean} Returns true if a plugin is already registered.\n * @api public\n */\n\n Base.prototype.isRegistered = function(name, register) {\n if (this.registered.hasOwnProperty(name)) {\n return true;\n }\n if (register !== false) {\n this.registered[name] = true;\n this.emit('plugin', name);\n }\n return false;\n };\n\n /**\n * Define a plugin function to be called immediately upon init. Plugins are chainable\n * and expose the following arguments to the plugin function:\n *\n * - `app`: the current instance of `Base`\n * - `base`: the [first ancestor instance](#base) of `Base`\n *\n * ```js\n * var app = new Base()\n * .use(foo)\n * .use(bar)\n * .use(baz)\n * ```\n * @name .use\n * @param {Function} `fn` plugin function to call\n * @return {Object} Returns the item instance for chaining.\n * @api public\n */\n\n Base.prototype.use = function(fn) {\n fn.call(this, this);\n return this;\n };\n\n /**\n * The `.define` method is used for adding non-enumerable property on the instance.\n * Dot-notation is **not supported** with `define`.\n *\n * ```js\n * // arbitrary `render` function using lodash `template`\n * app.define('render', function(str, locals) {\n * return _.template(str)(locals);\n * });\n * ```\n * @name .define\n * @param {String} `key` The name of the property to define.\n * @param {any} `value`\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Base.prototype.define = function(key, val) {\n if (isObject(key)) {\n return this.visit('define', key);\n }\n define(this, key, val);\n return this;\n };\n\n /**\n * Mix property `key` onto the Base prototype. If base is inherited using\n * `Base.extend` this method will be overridden by a new `mixin` method that will\n * only add properties to the prototype of the inheriting application.\n *\n * ```js\n * app.mixin('foo', function() {\n * // do stuff\n * });\n * ```\n * @name .mixin\n * @param {String} `key`\n * @param {Object|Array} `val`\n * @return {Object} Returns the `base` instance for chaining.\n * @api public\n */\n\n Base.prototype.mixin = function(key, val) {\n Base.prototype[key] = val;\n return this;\n };\n\n /**\n * Non-enumberable mixin array, used by the static [Base.mixin]() method.\n */\n\n Base.prototype.mixins = Base.prototype.mixins || [];\n\n /**\n * Getter/setter used when creating nested instances of `Base`, for storing a reference\n * to the first ancestor instance. This works by setting an instance of `Base` on the `parent`\n * property of a \"child\" instance. The `base` property defaults to the current instance if\n * no `parent` property is defined.\n *\n * ```js\n * // create an instance of `Base`, this is our first (\"base\") instance\n * var first = new Base();\n * first.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later\n *\n * // create another instance\n * var second = new Base();\n * // create a reference to the first instance (`first`)\n * second.parent = first;\n *\n * // create another instance\n * var third = new Base();\n * // create a reference to the previous instance (`second`)\n * // repeat this pattern every time a \"child\" instance is created\n * third.parent = second;\n *\n * // we can always access the first instance using the `base` property\n * console.log(first.base.foo);\n * //=> 'bar'\n * console.log(second.base.foo);\n * //=> 'bar'\n * console.log(third.base.foo);\n * //=> 'bar'\n * // and now you know how to get to third base ;)\n * ```\n * @name .base\n * @api public\n */\n\n Object.defineProperty(Base.prototype, 'base', {\n configurable: true,\n get: function() {\n return this.parent ? this.parent.base : this;\n }\n });\n\n /**\n * Static method for adding global plugin functions that will\n * be added to an instance when created.\n *\n * ```js\n * Base.use(function(app) {\n * app.foo = 'bar';\n * });\n * var app = new Base();\n * console.log(app.foo);\n * //=> 'bar'\n * ```\n * @name #use\n * @param {Function} `fn` Plugin function to use on each instance.\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'use', function(fn) {\n fns.push(fn);\n return Base;\n });\n\n /**\n * Run an array of functions by passing each function\n * to a method on the given object specified by the given property.\n *\n * @param {Object} `obj` Object containing method to use.\n * @param {String} `prop` Name of the method on the object to use.\n * @param {Array} `arr` Array of functions to pass to the method.\n */\n\n define(Base, 'run', function(obj, prop, arr) {\n var len = arr.length, i = 0;\n while (len--) {\n obj[prop](arr[i++]);\n }\n return Base;\n });\n\n /**\n * Static method for inheriting the prototype and static methods of the `Base` class.\n * This method greatly simplifies the process of creating inheritance-based applications.\n * See [static-extend][] for more details.\n *\n * ```js\n * var extend = cu.extend(Parent);\n * Parent.extend(Child);\n *\n * // optional methods\n * Parent.extend(Child, {\n * foo: function() {},\n * bar: function() {}\n * });\n * ```\n * @name #extend\n * @param {Function} `Ctor` constructor to extend\n * @param {Object} `methods` Optional prototype properties to mix in.\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'extend', cu.extend(Base, function(Ctor, Parent) {\n Ctor.prototype.mixins = Ctor.prototype.mixins || [];\n\n define(Ctor, 'mixin', function(fn) {\n var mixin = fn(Ctor.prototype, Ctor);\n if (typeof mixin === 'function') {\n Ctor.prototype.mixins.push(mixin);\n }\n return Ctor;\n });\n\n define(Ctor, 'mixins', function(Child) {\n Base.run(Child, 'mixin', Ctor.prototype.mixins);\n return Ctor;\n });\n\n Ctor.prototype.mixin = function(key, value) {\n Ctor.prototype[key] = value;\n return this;\n };\n return Base;\n }));\n\n /**\n * Used for adding methods to the `Base` prototype, and/or to the prototype of child instances.\n * When a mixin function returns a function, the returned function is pushed onto the `.mixins`\n * array, making it available to be used on inheriting classes whenever `Base.mixins()` is\n * called (e.g. `Base.mixins(Child)`).\n *\n * ```js\n * Base.mixin(function(proto) {\n * proto.foo = function(msg) {\n * return 'foo ' + msg;\n * };\n * });\n * ```\n * @name #mixin\n * @param {Function} `fn` Function to call\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'mixin', function(fn) {\n var mixin = fn(Base.prototype, Base);\n if (typeof mixin === 'function') {\n Base.prototype.mixins.push(mixin);\n }\n return Base;\n });\n\n /**\n * Static method for running global mixin functions against a child constructor.\n * Mixins must be registered before calling this method.\n *\n * ```js\n * Base.extend(Child);\n * Base.mixins(Child);\n * ```\n * @name #mixins\n * @param {Function} `Child` Constructor function of a child class\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'mixins', function(Child) {\n Base.run(Child, 'mixin', Base.prototype.mixins);\n return Base;\n });\n\n /**\n * Similar to `util.inherit`, but copies all static properties, prototype properties, and\n * getters/setters from `Provider` to `Receiver`. See [class-utils][]{#inherit} for more details.\n *\n * ```js\n * Base.inherit(Foo, Bar);\n * ```\n * @name #inherit\n * @param {Function} `Receiver` Receiving (child) constructor\n * @param {Function} `Provider` Providing (parent) constructor\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'inherit', cu.inherit);\n define(Base, 'bubble', cu.bubble);\n return Base;\n}\n\n/**\n * Expose `Base` with default settings\n */\n\nmodule.exports = namespace();\n\n/**\n * Allow users to define a namespace\n */\n\nmodule.exports.namespace = namespace;\n","/*!\n * define-property \n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isDescriptor = require('is-descriptor');\n\nmodule.exports = function defineProperty(obj, prop, val) {\n if (typeof obj !== 'object' && typeof obj !== 'function') {\n throw new TypeError('expected an object or function.');\n }\n\n if (typeof prop !== 'string') {\n throw new TypeError('expected `prop` to be a string.');\n }\n\n if (isDescriptor(val) && ('set' in val || 'get' in val)) {\n return Object.defineProperty(obj, prop, val);\n }\n\n return Object.defineProperty(obj, prop, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n};\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar toRegex = require('to-regex');\nvar unique = require('array-unique');\nvar extend = require('extend-shallow');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\nvar Braces = require('./lib/braces');\nvar utils = require('./lib/utils');\nvar MAX_LENGTH = 1024 * 64;\nvar cache = {};\n\n/**\n * Convert the given `braces` pattern into a regex-compatible string. By default, only one string is generated for every input string. Set `options.expand` to true to return an array of patterns (similar to Bash or minimatch. Before using `options.expand`, it's recommended that you read the [performance notes](#performance)).\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces('{a,b,c}'));\n * //=> ['(a|b|c)']\n *\n * console.log(braces('{a,b,c}', {expand: true}));\n * //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nfunction braces(pattern, options) {\n var key = utils.createKey(String(pattern), options);\n var arr = [];\n\n var disabled = options && options.cache === false;\n if (!disabled && cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n if (Array.isArray(pattern)) {\n for (var i = 0; i < pattern.length; i++) {\n arr.push.apply(arr, braces.create(pattern[i], options));\n }\n } else {\n arr = braces.create(pattern, options);\n }\n\n if (options && options.nodupes === true) {\n arr = unique(arr);\n }\n\n if (!disabled) {\n cache[key] = arr;\n }\n return arr;\n}\n\n/**\n * Expands a brace pattern into an array. This method is called by the main [braces](#braces) function when `options.expand` is true. Before using this method it's recommended that you read the [performance notes](#performance)) and advantages of using [.optimize](#optimize) instead.\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = function(pattern, options) {\n return braces.create(pattern, extend({}, options, {expand: true}));\n};\n\n/**\n * Expands a brace pattern into a regex-compatible, optimized string. This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.optimize = function(pattern, options) {\n return braces.create(pattern, options);\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array (if `options.expand` is true), a highly optimized regex-compatible string. This method is called by the main [braces](#braces) function.\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n var maxLength = (options && options.maxLength) || MAX_LENGTH;\n if (pattern.length >= maxLength) {\n throw new Error('expected pattern to be less than ' + maxLength + ' characters');\n }\n\n function create() {\n if (pattern === '' || pattern.length < 3) {\n return [pattern];\n }\n\n if (utils.isEmptySets(pattern)) {\n return [];\n }\n\n if (utils.isQuotedString(pattern)) {\n return [pattern.slice(1, -1)];\n }\n\n var proto = new Braces(options);\n var result = !options || options.expand !== true\n ? proto.optimize(pattern, options)\n : proto.expand(pattern, options);\n\n // get the generated pattern(s)\n var arr = result.output;\n\n // filter out empty strings if specified\n if (options && options.noempty === true) {\n arr = arr.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options && options.nodupes === true) {\n arr = unique(arr);\n }\n\n Object.defineProperty(arr, 'result', {\n enumerable: false,\n value: result\n });\n\n return arr;\n }\n\n return memoize('create', pattern, options, create);\n};\n\n/**\n * Create a regular expression from the given string `pattern`.\n *\n * ```js\n * var braces = require('braces');\n *\n * console.log(braces.makeRe('id-{200..300}'));\n * //=> /^(?:id-(20[0-9]|2[1-9][0-9]|300))$/\n * ```\n * @param {String} `pattern` The pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nbraces.makeRe = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n var maxLength = (options && options.maxLength) || MAX_LENGTH;\n if (pattern.length >= maxLength) {\n throw new Error('expected pattern to be less than ' + maxLength + ' characters');\n }\n\n function makeRe() {\n var arr = braces(pattern, options);\n var opts = extend({strictErrors: false}, options);\n return toRegex(arr, opts);\n }\n\n return memoize('makeRe', pattern, options, makeRe);\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * var braces = require('braces');\n * var ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * // { type: 'root',\n * // errors: [],\n * // input: 'a/{b,c}/d',\n * // nodes:\n * // [ { type: 'bos', val: '' },\n * // { type: 'text', val: 'a/' },\n * // { type: 'brace',\n * // nodes:\n * // [ { type: 'brace.open', val: '{' },\n * // { type: 'text', val: 'b,c' },\n * // { type: 'brace.close', val: '}' } ] },\n * // { type: 'text', val: '/d' },\n * // { type: 'eos', val: '' } ] }\n * ```\n * @param {String} `pattern` Brace pattern to parse\n * @param {Object} `options`\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = function(pattern, options) {\n var proto = new Braces(options);\n return proto.parse(pattern, options);\n};\n\n/**\n * Compile the given `ast` or string with the given `options`.\n *\n * ```js\n * var braces = require('braces');\n * var ast = braces.parse('a/{b,c}/d');\n * console.log(braces.compile(ast));\n * // { options: { source: 'string' },\n * // state: {},\n * // compilers:\n * // { eos: [Function],\n * // noop: [Function],\n * // bos: [Function],\n * // brace: [Function],\n * // 'brace.open': [Function],\n * // text: [Function],\n * // 'brace.close': [Function] },\n * // output: [ 'a/(b|c)/d' ],\n * // ast:\n * // { ... },\n * // parsingErrors: [] }\n * ```\n * @param {Object|String} `ast` AST from [.parse](#parse). If a string is passed it will be parsed first.\n * @param {Object} `options`\n * @return {Object} Returns an object that has an `output` property with the compiled string.\n * @api public\n */\n\nbraces.compile = function(ast, options) {\n var proto = new Braces(options);\n return proto.compile(ast, options);\n};\n\n/**\n * Clear the regex cache.\n *\n * ```js\n * braces.clearCache();\n * ```\n * @api public\n */\n\nbraces.clearCache = function() {\n cache = braces.cache = {};\n};\n\n/**\n * Memoize a generated regex or function. A unique key is generated\n * from the method name, pattern, and user-defined options. Set\n * options.memoize to false to disable.\n */\n\nfunction memoize(type, pattern, options, fn) {\n var key = utils.createKey(type + ':' + pattern, options);\n var disabled = options && options.cache === false;\n if (disabled) {\n braces.clearCache();\n return fn(pattern, options);\n }\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n var res = fn(pattern, options);\n cache[key] = res;\n return res;\n}\n\n/**\n * Expose `Braces` constructor and methods\n * @type {Function}\n */\n\nbraces.Braces = Braces;\nbraces.compilers = compilers;\nbraces.parsers = parsers;\nbraces.cache = cache;\n\n/**\n * Expose `braces`\n * @type {Function}\n */\n\nmodule.exports = braces;\n","'use strict';\n\nvar extend = require('extend-shallow');\nvar Snapdragon = require('snapdragon');\nvar compilers = require('./compilers');\nvar parsers = require('./parsers');\nvar utils = require('./utils');\n\n/**\n * Customize Snapdragon parser and renderer\n */\n\nfunction Braces(options) {\n this.options = extend({}, options);\n}\n\n/**\n * Initialize braces\n */\n\nBraces.prototype.init = function(options) {\n if (this.isInitialized) return;\n this.isInitialized = true;\n var opts = utils.createOptions({}, this.options, options);\n this.snapdragon = this.options.snapdragon || new Snapdragon(opts);\n this.compiler = this.snapdragon.compiler;\n this.parser = this.snapdragon.parser;\n\n compilers(this.snapdragon, opts);\n parsers(this.snapdragon, opts);\n\n /**\n * Call Snapdragon `.parse` method. When AST is returned, we check to\n * see if any unclosed braces are left on the stack and, if so, we iterate\n * over the stack and correct the AST so that compilers are called in the correct\n * order and unbalance braces are properly escaped.\n */\n\n utils.define(this.snapdragon, 'parse', function(pattern, options) {\n var parsed = Snapdragon.prototype.parse.apply(this, arguments);\n this.parser.ast.input = pattern;\n\n var stack = this.parser.stack;\n while (stack.length) {\n addParent({type: 'brace.close', val: ''}, stack.pop());\n }\n\n function addParent(node, parent) {\n utils.define(node, 'parent', parent);\n parent.nodes.push(node);\n }\n\n // add non-enumerable parser reference\n utils.define(parsed, 'parser', this.parser);\n return parsed;\n });\n};\n\n/**\n * Decorate `.parse` method\n */\n\nBraces.prototype.parse = function(ast, options) {\n if (ast && typeof ast === 'object' && ast.nodes) return ast;\n this.init(options);\n return this.snapdragon.parse(ast, options);\n};\n\n/**\n * Decorate `.compile` method\n */\n\nBraces.prototype.compile = function(ast, options) {\n if (typeof ast === 'string') {\n ast = this.parse(ast, options);\n } else {\n this.init(options);\n }\n return this.snapdragon.compile(ast, options);\n};\n\n/**\n * Expand\n */\n\nBraces.prototype.expand = function(pattern) {\n var ast = this.parse(pattern, {expand: true});\n return this.compile(ast, {expand: true});\n};\n\n/**\n * Optimize\n */\n\nBraces.prototype.optimize = function(pattern) {\n var ast = this.parse(pattern, {optimize: true});\n return this.compile(ast, {optimize: true});\n};\n\n/**\n * Expose `Braces`\n */\n\nmodule.exports = Braces;\n","'use strict';\n\nvar utils = require('./utils');\n\nmodule.exports = function(braces, options) {\n braces.compiler\n\n /**\n * bos\n */\n\n .set('bos', function() {\n if (this.output) return;\n this.ast.queue = isEscaped(this.ast) ? [this.ast.val] : [];\n this.ast.count = 1;\n })\n\n /**\n * Square brackets\n */\n\n .set('bracket', function(node) {\n var close = node.close;\n var open = !node.escaped ? '[' : '\\\\[';\n var negated = node.negated;\n var inner = node.inner;\n\n inner = inner.replace(/\\\\(?=[\\\\\\w]|$)/g, '\\\\\\\\');\n if (inner === ']-') {\n inner = '\\\\]\\\\-';\n }\n\n if (negated && inner.indexOf('.') === -1) {\n inner += '.';\n }\n if (negated && inner.indexOf('/') === -1) {\n inner += '/';\n }\n\n var val = open + negated + inner + close;\n var queue = node.parent.queue;\n var last = utils.arrayify(queue.pop());\n\n queue.push(utils.join(last, val));\n queue.push.apply(queue, []);\n })\n\n /**\n * Brace\n */\n\n .set('brace', function(node) {\n node.queue = isEscaped(node) ? [node.val] : [];\n node.count = 1;\n return this.mapVisit(node.nodes);\n })\n\n /**\n * Open\n */\n\n .set('brace.open', function(node) {\n node.parent.open = node.val;\n })\n\n /**\n * Inner\n */\n\n .set('text', function(node) {\n var queue = node.parent.queue;\n var escaped = node.escaped;\n var segs = [node.val];\n\n if (node.optimize === false) {\n options = utils.extend({}, options, {optimize: false});\n }\n\n if (node.multiplier > 1) {\n node.parent.count *= node.multiplier;\n }\n\n if (options.quantifiers === true && utils.isQuantifier(node.val)) {\n escaped = true;\n\n } else if (node.val.length > 1) {\n if (isType(node.parent, 'brace') && !isEscaped(node)) {\n var expanded = utils.expand(node.val, options);\n segs = expanded.segs;\n\n if (expanded.isOptimized) {\n node.parent.isOptimized = true;\n }\n\n // if nothing was expanded, we probably have a literal brace\n if (!segs.length) {\n var val = (expanded.val || node.val);\n if (options.unescape !== false) {\n // unescape unexpanded brace sequence/set separators\n val = val.replace(/\\\\([,.])/g, '$1');\n // strip quotes\n val = val.replace(/[\"'`]/g, '');\n }\n\n segs = [val];\n escaped = true;\n }\n }\n\n } else if (node.val === ',') {\n if (options.expand) {\n node.parent.queue.push(['']);\n segs = [''];\n } else {\n segs = ['|'];\n }\n } else {\n escaped = true;\n }\n\n if (escaped && isType(node.parent, 'brace')) {\n if (node.parent.nodes.length <= 4 && node.parent.count === 1) {\n node.parent.escaped = true;\n } else if (node.parent.length <= 3) {\n node.parent.escaped = true;\n }\n }\n\n if (!hasQueue(node.parent)) {\n node.parent.queue = segs;\n return;\n }\n\n var last = utils.arrayify(queue.pop());\n if (node.parent.count > 1 && options.expand) {\n last = multiply(last, node.parent.count);\n node.parent.count = 1;\n }\n\n queue.push(utils.join(utils.flatten(last), segs.shift()));\n queue.push.apply(queue, segs);\n })\n\n /**\n * Close\n */\n\n .set('brace.close', function(node) {\n var queue = node.parent.queue;\n var prev = node.parent.parent;\n var last = prev.queue.pop();\n var open = node.parent.open;\n var close = node.val;\n\n if (open && close && isOptimized(node, options)) {\n open = '(';\n close = ')';\n }\n\n // if a close brace exists, and the previous segment is one character\n // don't wrap the result in braces or parens\n var ele = utils.last(queue);\n if (node.parent.count > 1 && options.expand) {\n ele = multiply(queue.pop(), node.parent.count);\n node.parent.count = 1;\n queue.push(ele);\n }\n\n if (close && typeof ele === 'string' && ele.length === 1) {\n open = '';\n close = '';\n }\n\n if ((isLiteralBrace(node, options) || noInner(node)) && !node.parent.hasEmpty) {\n queue.push(utils.join(open, queue.pop() || ''));\n queue = utils.flatten(utils.join(queue, close));\n }\n\n if (typeof last === 'undefined') {\n prev.queue = [queue];\n } else {\n prev.queue.push(utils.flatten(utils.join(last, queue)));\n }\n })\n\n /**\n * eos\n */\n\n .set('eos', function(node) {\n if (this.input) return;\n\n if (options.optimize !== false) {\n this.output = utils.last(utils.flatten(this.ast.queue));\n } else if (Array.isArray(utils.last(this.ast.queue))) {\n this.output = utils.flatten(this.ast.queue.pop());\n } else {\n this.output = utils.flatten(this.ast.queue);\n }\n\n if (node.parent.count > 1 && options.expand) {\n this.output = multiply(this.output, node.parent.count);\n }\n\n this.output = utils.arrayify(this.output);\n this.ast.queue = [];\n });\n\n};\n\n/**\n * Multiply the segments in the current brace level\n */\n\nfunction multiply(queue, n, options) {\n return utils.flatten(utils.repeat(utils.arrayify(queue), n));\n}\n\n/**\n * Return true if `node` is escaped\n */\n\nfunction isEscaped(node) {\n return node.escaped === true;\n}\n\n/**\n * Returns true if regex parens should be used for sets. If the parent `type`\n * is not `brace`, then we're on a root node, which means we should never\n * expand segments and open/close braces should be `{}` (since this indicates\n * a brace is missing from the set)\n */\n\nfunction isOptimized(node, options) {\n if (node.parent.isOptimized) return true;\n return isType(node.parent, 'brace')\n && !isEscaped(node.parent)\n && options.expand !== true;\n}\n\n/**\n * Returns true if the value in `node` should be wrapped in a literal brace.\n * @return {Boolean}\n */\n\nfunction isLiteralBrace(node, options) {\n return isEscaped(node.parent) || options.optimize !== false;\n}\n\n/**\n * Returns true if the given `node` does not have an inner value.\n * @return {Boolean}\n */\n\nfunction noInner(node, type) {\n if (node.parent.queue.length === 1) {\n return true;\n }\n var nodes = node.parent.nodes;\n return nodes.length === 3\n && isType(nodes[0], 'brace.open')\n && !isType(nodes[1], 'text')\n && isType(nodes[2], 'brace.close');\n}\n\n/**\n * Returns true if the given `node` is the given `type`\n * @return {Boolean}\n */\n\nfunction isType(node, type) {\n return typeof node !== 'undefined' && node.type === type;\n}\n\n/**\n * Returns true if the given `node` has a non-empty queue.\n * @return {Boolean}\n */\n\nfunction hasQueue(node) {\n return Array.isArray(node.queue) && node.queue.length;\n}\n","'use strict';\n\nvar Node = require('snapdragon-node');\nvar utils = require('./utils');\n\n/**\n * Braces parsers\n */\n\nmodule.exports = function(braces, options) {\n braces.parser\n .set('bos', function() {\n if (!this.parsed) {\n this.ast = this.nodes[0] = new Node(this.ast);\n }\n })\n\n /**\n * Character parsers\n */\n\n .set('escape', function() {\n var pos = this.position();\n var m = this.match(/^(?:\\\\(.)|\\$\\{)/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n var node = pos(new Node({\n type: 'text',\n multiplier: 1,\n val: m[0]\n }));\n\n if (node.val === '\\\\\\\\') {\n return node;\n }\n\n if (node.val === '${') {\n var str = this.input;\n var idx = -1;\n var ch;\n\n while ((ch = str[++idx])) {\n this.consume(1);\n node.val += ch;\n if (ch === '\\\\') {\n node.val += str[++idx];\n continue;\n }\n if (ch === '}') {\n break;\n }\n }\n }\n\n if (this.options.unescape !== false) {\n node.val = node.val.replace(/\\\\([{}])/g, '$1');\n }\n\n if (last.val === '\"' && this.input.charAt(0) === '\"') {\n last.val = node.val;\n this.consume(1);\n return;\n }\n\n return concatNodes.call(this, pos, node, prev, options);\n })\n\n /**\n * Brackets: \"[...]\" (basic, this is overridden by\n * other parsers in more advanced implementations)\n */\n\n .set('bracket', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^(?:\\[([!^]?)([^\\]]{2,}|\\]-)(\\]|[^*+?]+)|\\[)/);\n if (!m) return;\n\n var prev = this.prev();\n var val = m[0];\n var negated = m[1] ? '^' : '';\n var inner = m[2] || '';\n var close = m[3] || '';\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n var esc = this.input.slice(0, 2);\n if (inner === '' && esc === '\\\\]') {\n inner += esc;\n this.consume(2);\n\n var str = this.input;\n var idx = -1;\n var ch;\n\n while ((ch = str[++idx])) {\n this.consume(1);\n if (ch === ']') {\n close = ch;\n break;\n }\n inner += ch;\n }\n }\n\n return pos(new Node({\n type: 'bracket',\n val: val,\n escaped: close !== ']',\n negated: negated,\n inner: inner,\n close: close\n }));\n })\n\n /**\n * Empty braces (we capture these early to\n * speed up processing in the compiler)\n */\n\n .set('multiplier', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^\\{((?:,|\\{,+\\})+)\\}/);\n if (!m) return;\n\n this.multiplier = true;\n var prev = this.prev();\n var val = m[0];\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n var node = pos(new Node({\n type: 'text',\n multiplier: 1,\n match: m,\n val: val\n }));\n\n return concatNodes.call(this, pos, node, prev, options);\n })\n\n /**\n * Open\n */\n\n .set('brace.open', function() {\n var pos = this.position();\n var m = this.match(/^\\{(?!(?:[^\\\\}]?|,+)\\})/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n // if the last parsed character was an extglob character\n // we need to _not optimize_ the brace pattern because\n // it might be mistaken for an extglob by a downstream parser\n if (last && last.val && isExtglobChar(last.val.slice(-1))) {\n last.optimize = false;\n }\n\n var open = pos(new Node({\n type: 'brace.open',\n val: m[0]\n }));\n\n var node = pos(new Node({\n type: 'brace',\n nodes: []\n }));\n\n node.push(open);\n prev.push(node);\n this.push('brace', node);\n })\n\n /**\n * Close\n */\n\n .set('brace.close', function() {\n var pos = this.position();\n var m = this.match(/^\\}/);\n if (!m || !m[0]) return;\n\n var brace = this.pop('brace');\n var node = pos(new Node({\n type: 'brace.close',\n val: m[0]\n }));\n\n if (!this.isType(brace, 'brace')) {\n if (this.options.strict) {\n throw new Error('missing opening \"{\"');\n }\n node.type = 'text';\n node.multiplier = 0;\n node.escaped = true;\n return node;\n }\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n if (last.text) {\n var lastNode = utils.last(last.nodes);\n if (lastNode.val === ')' && /[!@*?+]\\(/.test(last.text)) {\n var open = last.nodes[0];\n var text = last.nodes[1];\n if (open.type === 'brace.open' && text && text.type === 'text') {\n text.optimize = false;\n }\n }\n }\n\n if (brace.nodes.length > 2) {\n var first = brace.nodes[1];\n if (first.type === 'text' && first.val === ',') {\n brace.nodes.splice(1, 1);\n brace.nodes.push(first);\n }\n }\n\n brace.push(node);\n })\n\n /**\n * Capture boundary characters\n */\n\n .set('boundary', function() {\n var pos = this.position();\n var m = this.match(/^[$^](?!\\{)/);\n if (!m) return;\n return pos(new Node({\n type: 'text',\n val: m[0]\n }));\n })\n\n /**\n * One or zero, non-comma characters wrapped in braces\n */\n\n .set('nobrace', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^\\{[^,]?\\}/);\n if (!m) return;\n\n var prev = this.prev();\n var val = m[0];\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n return pos(new Node({\n type: 'text',\n multiplier: 0,\n val: val\n }));\n })\n\n /**\n * Text\n */\n\n .set('text', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^((?!\\\\)[^${}[\\]])+/);\n if (!m) return;\n\n var prev = this.prev();\n var val = m[0];\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n var node = pos(new Node({\n type: 'text',\n multiplier: 1,\n val: val\n }));\n\n return concatNodes.call(this, pos, node, prev, options);\n });\n};\n\n/**\n * Returns true if the character is an extglob character.\n */\n\nfunction isExtglobChar(ch) {\n return ch === '!' || ch === '@' || ch === '*' || ch === '?' || ch === '+';\n}\n\n/**\n * Combine text nodes, and calculate empty sets (`{,,}`)\n * @param {Function} `pos` Function to calculate node position\n * @param {Object} `node` AST node\n * @return {Object}\n */\n\nfunction concatNodes(pos, node, parent, options) {\n node.orig = node.val;\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n var isEscaped = false;\n\n if (node.val.length > 1) {\n var a = node.val.charAt(0);\n var b = node.val.slice(-1);\n\n isEscaped = (a === '\"' && b === '\"')\n || (a === \"'\" && b === \"'\")\n || (a === '`' && b === '`');\n }\n\n if (isEscaped && options.unescape !== false) {\n node.val = node.val.slice(1, node.val.length - 1);\n node.escaped = true;\n }\n\n if (node.match) {\n var match = node.match[1];\n if (!match || match.indexOf('}') === -1) {\n match = node.match[0];\n }\n\n // replace each set with a single \",\"\n var val = match.replace(/\\{/g, ',').replace(/\\}/g, '');\n node.multiplier *= val.length;\n node.val = '';\n }\n\n var simpleText = last.type === 'text'\n && last.multiplier === 1\n && node.multiplier === 1\n && node.val;\n\n if (simpleText) {\n last.val += node.val;\n return;\n }\n\n prev.push(node);\n}\n","'use strict';\n\nvar splitString = require('split-string');\nvar utils = module.exports;\n\n/**\n * Module dependencies\n */\n\nutils.extend = require('extend-shallow');\nutils.flatten = require('arr-flatten');\nutils.isObject = require('isobject');\nutils.fillRange = require('fill-range');\nutils.repeat = require('repeat-element');\nutils.unique = require('array-unique');\n\nutils.define = function(obj, key, val) {\n Object.defineProperty(obj, key, {\n writable: true,\n configurable: true,\n enumerable: false,\n value: val\n });\n};\n\n/**\n * Returns true if the given string contains only empty brace sets.\n */\n\nutils.isEmptySets = function(str) {\n return /^(?:\\{,\\})+$/.test(str);\n};\n\n/**\n * Returns true if the given string contains only empty brace sets.\n */\n\nutils.isQuotedString = function(str) {\n var open = str.charAt(0);\n if (open === '\\'' || open === '\"' || open === '`') {\n return str.slice(-1) === open;\n }\n return false;\n};\n\n/**\n * Create the key to use for memoization. The unique key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nutils.createKey = function(pattern, options) {\n var id = pattern;\n if (typeof options === 'undefined') {\n return id;\n }\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n id += ';' + key + '=' + String(options[key]);\n }\n return id;\n};\n\n/**\n * Normalize options\n */\n\nutils.createOptions = function(options) {\n var opts = utils.extend.apply(null, arguments);\n if (typeof opts.expand === 'boolean') {\n opts.optimize = !opts.expand;\n }\n if (typeof opts.optimize === 'boolean') {\n opts.expand = !opts.optimize;\n }\n if (opts.optimize === true) {\n opts.makeRe = true;\n }\n return opts;\n};\n\n/**\n * Join patterns in `a` to patterns in `b`\n */\n\nutils.join = function(a, b, options) {\n options = options || {};\n a = utils.arrayify(a);\n b = utils.arrayify(b);\n\n if (!a.length) return b;\n if (!b.length) return a;\n\n var len = a.length;\n var idx = -1;\n var arr = [];\n\n while (++idx < len) {\n var val = a[idx];\n if (Array.isArray(val)) {\n for (var i = 0; i < val.length; i++) {\n val[i] = utils.join(val[i], b, options);\n }\n arr.push(val);\n continue;\n }\n\n for (var j = 0; j < b.length; j++) {\n var bval = b[j];\n\n if (Array.isArray(bval)) {\n arr.push(utils.join(val, bval, options));\n } else {\n arr.push(val + bval);\n }\n }\n }\n return arr;\n};\n\n/**\n * Split the given string on `,` if not escaped.\n */\n\nutils.split = function(str, options) {\n var opts = utils.extend({sep: ','}, options);\n if (typeof opts.keepQuotes !== 'boolean') {\n opts.keepQuotes = true;\n }\n if (opts.unescape === false) {\n opts.keepEscaping = true;\n }\n return splitString(str, opts, utils.escapeBrackets(opts));\n};\n\n/**\n * Expand ranges or sets in the given `pattern`.\n *\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object}\n */\n\nutils.expand = function(str, options) {\n var opts = utils.extend({rangeLimit: 10000}, options);\n var segs = utils.split(str, opts);\n var tok = { segs: segs };\n\n if (utils.isQuotedString(str)) {\n return tok;\n }\n\n if (opts.rangeLimit === true) {\n opts.rangeLimit = 10000;\n }\n\n if (segs.length > 1) {\n if (opts.optimize === false) {\n tok.val = segs[0];\n return tok;\n }\n\n tok.segs = utils.stringifyArray(tok.segs);\n } else if (segs.length === 1) {\n var arr = str.split('..');\n\n if (arr.length === 1) {\n tok.val = tok.segs[tok.segs.length - 1] || tok.val || str;\n tok.segs = [];\n return tok;\n }\n\n if (arr.length === 2 && arr[0] === arr[1]) {\n tok.escaped = true;\n tok.val = arr[0];\n tok.segs = [];\n return tok;\n }\n\n if (arr.length > 1) {\n if (opts.optimize !== false) {\n opts.optimize = true;\n delete opts.expand;\n }\n\n if (opts.optimize !== true) {\n var min = Math.min(arr[0], arr[1]);\n var max = Math.max(arr[0], arr[1]);\n var step = arr[2] || 1;\n\n if (opts.rangeLimit !== false && ((max - min) / step >= opts.rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n }\n\n arr.push(opts);\n tok.segs = utils.fillRange.apply(null, arr);\n\n if (!tok.segs.length) {\n tok.escaped = true;\n tok.val = str;\n return tok;\n }\n\n if (opts.optimize === true) {\n tok.segs = utils.stringifyArray(tok.segs);\n }\n\n if (tok.segs === '') {\n tok.val = str;\n } else {\n tok.val = tok.segs[0];\n }\n return tok;\n }\n } else {\n tok.val = str;\n }\n return tok;\n};\n\n/**\n * Ensure commas inside brackets and parens are not split.\n * @param {Object} `tok` Token from the `split-string` module\n * @return {undefined}\n */\n\nutils.escapeBrackets = function(options) {\n return function(tok) {\n if (tok.escaped && tok.val === 'b') {\n tok.val = '\\\\b';\n return;\n }\n\n if (tok.val !== '(' && tok.val !== '[') return;\n var opts = utils.extend({}, options);\n var brackets = [];\n var parens = [];\n var stack = [];\n var val = tok.val;\n var str = tok.str;\n var i = tok.idx - 1;\n\n while (++i < str.length) {\n var ch = str[i];\n\n if (ch === '\\\\') {\n val += (opts.keepEscaping === false ? '' : ch) + str[++i];\n continue;\n }\n\n if (ch === '(') {\n parens.push(ch);\n stack.push(ch);\n }\n\n if (ch === '[') {\n brackets.push(ch);\n stack.push(ch);\n }\n\n if (ch === ')') {\n parens.pop();\n stack.pop();\n if (!stack.length) {\n val += ch;\n break;\n }\n }\n\n if (ch === ']') {\n brackets.pop();\n stack.pop();\n if (!stack.length) {\n val += ch;\n break;\n }\n }\n val += ch;\n }\n\n tok.split = false;\n tok.val = val.slice(1);\n tok.idx = i;\n };\n};\n\n/**\n * Returns true if the given string looks like a regex quantifier\n * @return {Boolean}\n */\n\nutils.isQuantifier = function(str) {\n return /^(?:[0-9]?,[0-9]|[0-9],)$/.test(str);\n};\n\n/**\n * Cast `val` to an array.\n * @param {*} `val`\n */\n\nutils.stringifyArray = function(arr) {\n return [utils.arrayify(arr).join('|')];\n};\n\n/**\n * Cast `val` to an array.\n * @param {*} `val`\n */\n\nutils.arrayify = function(arr) {\n if (typeof arr === 'undefined') {\n return [];\n }\n if (typeof arr === 'string') {\n return [arr];\n }\n return arr;\n};\n\n/**\n * Returns true if the given `str` is a non-empty string\n * @return {Boolean}\n */\n\nutils.isString = function(str) {\n return str != null && typeof str === 'string';\n};\n\n/**\n * Get the last element from `array`\n * @param {Array} `array`\n * @return {*}\n */\n\nutils.last = function(arr, n) {\n return arr[arr.length - (n || 1)];\n};\n\nutils.escapeRegex = function(str) {\n return str.replace(/\\\\?([!^*?()[\\]{}+?/])/g, '\\\\$1');\n};\n","/*!\n * fill-range \n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar util = require('util');\nvar isNumber = require('is-number');\nvar extend = require('extend-shallow');\nvar repeat = require('repeat-string');\nvar toRegex = require('to-regex-range');\n\n/**\n * Return a range of numbers or letters.\n *\n * @param {String} `start` Start of the range\n * @param {String} `stop` End of the range\n * @param {String} `step` Increment or decrement to use.\n * @param {Function} `fn` Custom function to modify each element in the range.\n * @return {Array}\n */\n\nfunction fillRange(start, stop, step, options) {\n if (typeof start === 'undefined') {\n return [];\n }\n\n if (typeof stop === 'undefined' || start === stop) {\n // special case, for handling negative zero\n var isString = typeof start === 'string';\n if (isNumber(start) && !toNumber(start)) {\n return [isString ? '0' : 0];\n }\n return [start];\n }\n\n if (typeof step !== 'number' && typeof step !== 'string') {\n options = step;\n step = undefined;\n }\n\n if (typeof options === 'function') {\n options = { transform: options };\n }\n\n var opts = extend({step: step}, options);\n if (opts.step && !isValidNumber(opts.step)) {\n if (opts.strictRanges === true) {\n throw new TypeError('expected options.step to be a number');\n }\n return [];\n }\n\n opts.isNumber = isValidNumber(start) && isValidNumber(stop);\n if (!opts.isNumber && !isValid(start, stop)) {\n if (opts.strictRanges === true) {\n throw new RangeError('invalid range arguments: ' + util.inspect([start, stop]));\n }\n return [];\n }\n\n opts.isPadded = isPadded(start) || isPadded(stop);\n opts.toString = opts.stringify\n || typeof opts.step === 'string'\n || typeof start === 'string'\n || typeof stop === 'string'\n || !opts.isNumber;\n\n if (opts.isPadded) {\n opts.maxLength = Math.max(String(start).length, String(stop).length);\n }\n\n // support legacy minimatch/fill-range options\n if (typeof opts.optimize === 'boolean') opts.toRegex = opts.optimize;\n if (typeof opts.makeRe === 'boolean') opts.toRegex = opts.makeRe;\n return expand(start, stop, opts);\n}\n\nfunction expand(start, stop, options) {\n var a = options.isNumber ? toNumber(start) : start.charCodeAt(0);\n var b = options.isNumber ? toNumber(stop) : stop.charCodeAt(0);\n\n var step = Math.abs(toNumber(options.step)) || 1;\n if (options.toRegex && step === 1) {\n return toRange(a, b, start, stop, options);\n }\n\n var zero = {greater: [], lesser: []};\n var asc = a < b;\n var arr = new Array(Math.round((asc ? b - a : a - b) / step));\n var idx = 0;\n\n while (asc ? a <= b : a >= b) {\n var val = options.isNumber ? a : String.fromCharCode(a);\n if (options.toRegex && (val >= 0 || !options.isNumber)) {\n zero.greater.push(val);\n } else {\n zero.lesser.push(Math.abs(val));\n }\n\n if (options.isPadded) {\n val = zeros(val, options);\n }\n\n if (options.toString) {\n val = String(val);\n }\n\n if (typeof options.transform === 'function') {\n arr[idx++] = options.transform(val, a, b, step, idx, arr, options);\n } else {\n arr[idx++] = val;\n }\n\n if (asc) {\n a += step;\n } else {\n a -= step;\n }\n }\n\n if (options.toRegex === true) {\n return toSequence(arr, zero, options);\n }\n return arr;\n}\n\nfunction toRange(a, b, start, stop, options) {\n if (options.isPadded) {\n return toRegex(start, stop, options);\n }\n\n if (options.isNumber) {\n return toRegex(Math.min(a, b), Math.max(a, b), options);\n }\n\n var start = String.fromCharCode(Math.min(a, b));\n var stop = String.fromCharCode(Math.max(a, b));\n return '[' + start + '-' + stop + ']';\n}\n\nfunction toSequence(arr, zeros, options) {\n var greater = '', lesser = '';\n if (zeros.greater.length) {\n greater = zeros.greater.join('|');\n }\n if (zeros.lesser.length) {\n lesser = '-(' + zeros.lesser.join('|') + ')';\n }\n var res = greater && lesser\n ? greater + '|' + lesser\n : greater || lesser;\n\n if (options.capture) {\n return '(' + res + ')';\n }\n return res;\n}\n\nfunction zeros(val, options) {\n if (options.isPadded) {\n var str = String(val);\n var len = str.length;\n var dash = '';\n if (str.charAt(0) === '-') {\n dash = '-';\n str = str.slice(1);\n }\n var diff = options.maxLength - len;\n var pad = repeat('0', diff);\n val = (dash + pad + str);\n }\n if (options.stringify) {\n return String(val);\n }\n return val;\n}\n\nfunction toNumber(val) {\n return Number(val) || 0;\n}\n\nfunction isPadded(str) {\n return /^-?0\\d/.test(str);\n}\n\nfunction isValid(min, max) {\n return (isValidNumber(min) || isValidLetter(min))\n && (isValidNumber(max) || isValidLetter(max));\n}\n\nfunction isValidLetter(ch) {\n return typeof ch === 'string' && ch.length === 1 && /^\\w+$/.test(ch);\n}\n\nfunction isValidNumber(n) {\n return isNumber(n) && !/\\./.test(n);\n}\n\n/**\n * Expose `fillRange`\n * @type {Function}\n */\n\nmodule.exports = fillRange;\n","'use strict';\n\nvar isObject = require('isobject');\nvar Emitter = require('component-emitter');\nvar visit = require('collection-visit');\nvar toPath = require('to-object-path');\nvar union = require('union-value');\nvar del = require('unset-value');\nvar get = require('get-value');\nvar has = require('has-value');\nvar set = require('set-value');\n\n/**\n * Create a `Cache` constructor that when instantiated will\n * store values on the given `prop`.\n *\n * ```js\n * var Cache = require('cache-base').namespace('data');\n * var cache = new Cache();\n *\n * cache.set('foo', 'bar');\n * //=> {data: {foo: 'bar'}}\n * ```\n * @param {String} `prop` The property name to use for storing values.\n * @return {Function} Returns a custom `Cache` constructor\n * @api public\n */\n\nfunction namespace(prop) {\n\n /**\n * Create a new `Cache`. Internally the `Cache` constructor is created using\n * the `namespace` function, with `cache` defined as the storage object.\n *\n * ```js\n * var app = new Cache();\n * ```\n * @param {Object} `cache` Optionally pass an object to initialize with.\n * @constructor\n * @api public\n */\n\n function Cache(cache) {\n if (prop) {\n this[prop] = {};\n }\n if (cache) {\n this.set(cache);\n }\n }\n\n /**\n * Inherit Emitter\n */\n\n Emitter(Cache.prototype);\n\n /**\n * Assign `value` to `key`. Also emits `set` with\n * the key and value.\n *\n * ```js\n * app.on('set', function(key, val) {\n * // do something when `set` is emitted\n * });\n *\n * app.set(key, value);\n *\n * // also takes an object or array\n * app.set({name: 'Halle'});\n * app.set([{foo: 'bar'}, {baz: 'quux'}]);\n * console.log(app);\n * //=> {name: 'Halle', foo: 'bar', baz: 'quux'}\n * ```\n *\n * @name .set\n * @emits `set` with `key` and `value` as arguments.\n * @param {String} `key`\n * @param {any} `value`\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.set = function(key, val) {\n if (Array.isArray(key) && arguments.length === 2) {\n key = toPath(key);\n }\n if (isObject(key) || Array.isArray(key)) {\n this.visit('set', key);\n } else {\n set(prop ? this[prop] : this, key, val);\n this.emit('set', key, val);\n }\n return this;\n };\n\n /**\n * Union `array` to `key`. Also emits `set` with\n * the key and value.\n *\n * ```js\n * app.union('a.b', ['foo']);\n * app.union('a.b', ['bar']);\n * console.log(app.get('a'));\n * //=> {b: ['foo', 'bar']}\n * ```\n * @name .union\n * @param {String} `key`\n * @param {any} `value`\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.union = function(key, val) {\n if (Array.isArray(key) && arguments.length === 2) {\n key = toPath(key);\n }\n var ctx = prop ? this[prop] : this;\n union(ctx, key, arrayify(val));\n this.emit('union', val);\n return this;\n };\n\n /**\n * Return the value of `key`. Dot notation may be used\n * to get [nested property values][get-value].\n *\n * ```js\n * app.set('a.b.c', 'd');\n * app.get('a.b');\n * //=> {c: 'd'}\n *\n * app.get(['a', 'b']);\n * //=> {c: 'd'}\n * ```\n *\n * @name .get\n * @emits `get` with `key` and `value` as arguments.\n * @param {String} `key` The name of the property to get. Dot-notation may be used.\n * @return {any} Returns the value of `key`\n * @api public\n */\n\n Cache.prototype.get = function(key) {\n key = toPath(arguments);\n\n var ctx = prop ? this[prop] : this;\n var val = get(ctx, key);\n\n this.emit('get', key, val);\n return val;\n };\n\n /**\n * Return true if app has a stored value for `key`,\n * false only if value is `undefined`.\n *\n * ```js\n * app.set('foo', 'bar');\n * app.has('foo');\n * //=> true\n * ```\n *\n * @name .has\n * @emits `has` with `key` and true or false as arguments.\n * @param {String} `key`\n * @return {Boolean}\n * @api public\n */\n\n Cache.prototype.has = function(key) {\n key = toPath(arguments);\n\n var ctx = prop ? this[prop] : this;\n var val = get(ctx, key);\n\n var has = typeof val !== 'undefined';\n this.emit('has', key, has);\n return has;\n };\n\n /**\n * Delete one or more properties from the instance.\n *\n * ```js\n * app.del(); // delete all\n * // or\n * app.del('foo');\n * // or\n * app.del(['foo', 'bar']);\n * ```\n * @name .del\n * @emits `del` with the `key` as the only argument.\n * @param {String|Array} `key` Property name or array of property names.\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.del = function(key) {\n if (Array.isArray(key)) {\n this.visit('del', key);\n } else {\n del(prop ? this[prop] : this, key);\n this.emit('del', key);\n }\n return this;\n };\n\n /**\n * Reset the entire cache to an empty object.\n *\n * ```js\n * app.clear();\n * ```\n * @api public\n */\n\n Cache.prototype.clear = function() {\n if (prop) {\n this[prop] = {};\n }\n };\n\n /**\n * Visit `method` over the properties in the given object, or map\n * visit over the object-elements in an array.\n *\n * @name .visit\n * @param {String} `method` The name of the `base` method to call.\n * @param {Object|Array} `val` The object or array to iterate over.\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.visit = function(method, val) {\n visit(this, method, val);\n return this;\n };\n\n return Cache;\n}\n\n/**\n * Cast val to an array\n */\n\nfunction arrayify(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n}\n\n/**\n * Expose `Cache`\n */\n\nmodule.exports = namespace();\n\n/**\n * Expose `Cache.namespace`\n */\n\nmodule.exports.namespace = namespace;\n","'use strict';\n\nvar util = require('util');\nvar union = require('arr-union');\nvar define = require('define-property');\nvar staticExtend = require('static-extend');\nvar isObj = require('isobject');\n\n/**\n * Expose class utils\n */\n\nvar cu = module.exports;\n\n/**\n * Expose class utils: `cu`\n */\n\ncu.isObject = function isObject(val) {\n return isObj(val) || typeof val === 'function';\n};\n\n/**\n * Returns true if an array has any of the given elements, or an\n * object has any of the give keys.\n *\n * ```js\n * cu.has(['a', 'b', 'c'], 'c');\n * //=> true\n *\n * cu.has(['a', 'b', 'c'], ['c', 'z']);\n * //=> true\n *\n * cu.has({a: 'b', c: 'd'}, ['c', 'z']);\n * //=> true\n * ```\n * @param {Object} `obj`\n * @param {String|Array} `val`\n * @return {Boolean}\n * @api public\n */\n\ncu.has = function has(obj, val) {\n val = cu.arrayify(val);\n var len = val.length;\n\n if (cu.isObject(obj)) {\n for (var key in obj) {\n if (val.indexOf(key) > -1) {\n return true;\n }\n }\n\n var keys = cu.nativeKeys(obj);\n return cu.has(keys, val);\n }\n\n if (Array.isArray(obj)) {\n var arr = obj;\n while (len--) {\n if (arr.indexOf(val[len]) > -1) {\n return true;\n }\n }\n return false;\n }\n\n throw new TypeError('expected an array or object.');\n};\n\n/**\n * Returns true if an array or object has all of the given values.\n *\n * ```js\n * cu.hasAll(['a', 'b', 'c'], 'c');\n * //=> true\n *\n * cu.hasAll(['a', 'b', 'c'], ['c', 'z']);\n * //=> false\n *\n * cu.hasAll({a: 'b', c: 'd'}, ['c', 'z']);\n * //=> false\n * ```\n * @param {Object|Array} `val`\n * @param {String|Array} `values`\n * @return {Boolean}\n * @api public\n */\n\ncu.hasAll = function hasAll(val, values) {\n values = cu.arrayify(values);\n var len = values.length;\n while (len--) {\n if (!cu.has(val, values[len])) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Cast the given value to an array.\n *\n * ```js\n * cu.arrayify('foo');\n * //=> ['foo']\n *\n * cu.arrayify(['foo']);\n * //=> ['foo']\n * ```\n *\n * @param {String|Array} `val`\n * @return {Array}\n * @api public\n */\n\ncu.arrayify = function arrayify(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Noop\n */\n\ncu.noop = function noop() {\n return;\n};\n\n/**\n * Returns the first argument passed to the function.\n */\n\ncu.identity = function identity(val) {\n return val;\n};\n\n/**\n * Returns true if a value has a `contructor`\n *\n * ```js\n * cu.hasConstructor({});\n * //=> true\n *\n * cu.hasConstructor(Object.create(null));\n * //=> false\n * ```\n * @param {Object} `value`\n * @return {Boolean}\n * @api public\n */\n\ncu.hasConstructor = function hasConstructor(val) {\n return cu.isObject(val) && typeof val.constructor !== 'undefined';\n};\n\n/**\n * Get the native `ownPropertyNames` from the constructor of the\n * given `object`. An empty array is returned if the object does\n * not have a constructor.\n *\n * ```js\n * cu.nativeKeys({a: 'b', b: 'c', c: 'd'})\n * //=> ['a', 'b', 'c']\n *\n * cu.nativeKeys(function(){})\n * //=> ['length', 'caller']\n * ```\n *\n * @param {Object} `obj` Object that has a `constructor`.\n * @return {Array} Array of keys.\n * @api public\n */\n\ncu.nativeKeys = function nativeKeys(val) {\n if (!cu.hasConstructor(val)) return [];\n var keys = Object.getOwnPropertyNames(val);\n if ('caller' in val) keys.push('caller');\n return keys;\n};\n\n/**\n * Returns property descriptor `key` if it's an \"own\" property\n * of the given object.\n *\n * ```js\n * function App() {}\n * Object.defineProperty(App.prototype, 'count', {\n * get: function() {\n * return Object.keys(this).length;\n * }\n * });\n * cu.getDescriptor(App.prototype, 'count');\n * // returns:\n * // {\n * // get: [Function],\n * // set: undefined,\n * // enumerable: false,\n * // configurable: false\n * // }\n * ```\n *\n * @param {Object} `obj`\n * @param {String} `key`\n * @return {Object} Returns descriptor `key`\n * @api public\n */\n\ncu.getDescriptor = function getDescriptor(obj, key) {\n if (!cu.isObject(obj)) {\n throw new TypeError('expected an object.');\n }\n if (typeof key !== 'string') {\n throw new TypeError('expected key to be a string.');\n }\n return Object.getOwnPropertyDescriptor(obj, key);\n};\n\n/**\n * Copy a descriptor from one object to another.\n *\n * ```js\n * function App() {}\n * Object.defineProperty(App.prototype, 'count', {\n * get: function() {\n * return Object.keys(this).length;\n * }\n * });\n * var obj = {};\n * cu.copyDescriptor(obj, App.prototype, 'count');\n * ```\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String} `name`\n * @return {Object}\n * @api public\n */\n\ncu.copyDescriptor = function copyDescriptor(receiver, provider, name) {\n if (!cu.isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!cu.isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n if (typeof name !== 'string') {\n throw new TypeError('expected name to be a string.');\n }\n\n var val = cu.getDescriptor(provider, name);\n if (val) Object.defineProperty(receiver, name, val);\n};\n\n/**\n * Copy static properties, prototype properties, and descriptors\n * from one object to another.\n *\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String|Array} `omit` One or more properties to omit\n * @return {Object}\n * @api public\n */\n\ncu.copy = function copy(receiver, provider, omit) {\n if (!cu.isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!cu.isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n var props = Object.getOwnPropertyNames(provider);\n var keys = Object.keys(provider);\n var len = props.length,\n key;\n omit = cu.arrayify(omit);\n\n while (len--) {\n key = props[len];\n\n if (cu.has(keys, key)) {\n define(receiver, key, provider[key]);\n } else if (!(key in receiver) && !cu.has(omit, key)) {\n cu.copyDescriptor(receiver, provider, key);\n }\n }\n};\n\n/**\n * Inherit the static properties, prototype properties, and descriptors\n * from of an object.\n *\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String|Array} `omit` One or more properties to omit\n * @return {Object}\n * @api public\n */\n\ncu.inherit = function inherit(receiver, provider, omit) {\n if (!cu.isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!cu.isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n\n var keys = [];\n for (var key in provider) {\n keys.push(key);\n receiver[key] = provider[key];\n }\n\n keys = keys.concat(cu.arrayify(omit));\n\n var a = provider.prototype || provider;\n var b = receiver.prototype || receiver;\n cu.copy(b, a, keys);\n};\n\n/**\n * Returns a function for extending the static properties,\n * prototype properties, and descriptors from the `Parent`\n * constructor onto `Child` constructors.\n *\n * ```js\n * var extend = cu.extend(Parent);\n * Parent.extend(Child);\n *\n * // optional methods\n * Parent.extend(Child, {\n * foo: function() {},\n * bar: function() {}\n * });\n * ```\n * @param {Function} `Parent` Parent ctor\n * @param {Function} `extend` Optional extend function to handle custom extensions. Useful when updating methods that require a specific prototype.\n * @param {Function} `Child` Child ctor\n * @param {Object} `proto` Optionally pass additional prototype properties to inherit.\n * @return {Object}\n * @api public\n */\n\ncu.extend = function() {\n // keep it lazy, instead of assigning to `cu.extend`\n return staticExtend.apply(null, arguments);\n};\n\n/**\n * Bubble up events emitted from static methods on the Parent ctor.\n *\n * @param {Object} `Parent`\n * @param {Array} `events` Event names to bubble up\n * @api public\n */\n\ncu.bubble = function(Parent, events) {\n events = events || [];\n Parent.bubble = function(Child, arr) {\n if (Array.isArray(arr)) {\n events = union([], events, arr);\n }\n var len = events.length;\n var idx = -1;\n while (++idx < len) {\n var name = events[idx];\n Parent.on(name, Child.emit.bind(Child, name));\n }\n cu.bubble(Child, events);\n };\n};\n","/*!\n * collection-visit \n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar visit = require('object-visit');\nvar mapVisit = require('map-visit');\n\nmodule.exports = function(collection, method, val) {\n var result;\n\n if (typeof val === 'string' && (method in collection)) {\n var args = [].slice.call(arguments, 2);\n result = collection[method].apply(collection, args);\n } else if (Array.isArray(val)) {\n result = mapVisit.apply(null, arguments);\n } else {\n result = visit.apply(null, arguments);\n }\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n return collection;\n};\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","/*!\n * copy-descriptor \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Copy a descriptor from one object to another.\n *\n * ```js\n * function App() {\n * this.cache = {};\n * }\n * App.prototype.set = function(key, val) {\n * this.cache[key] = val;\n * return this;\n * };\n * Object.defineProperty(App.prototype, 'count', {\n * get: function() {\n * return Object.keys(this.cache).length;\n * }\n * });\n *\n * copy(App.prototype, 'count', 'len');\n *\n * // create an instance\n * var app = new App();\n *\n * app.set('a', true);\n * app.set('b', true);\n * app.set('c', true);\n *\n * console.log(app.count);\n * //=> 3\n * console.log(app.len);\n * //=> 3\n * ```\n * @name copy\n * @param {Object} `receiver` The target object\n * @param {Object} `provider` The provider object\n * @param {String} `from` The key to copy on provider.\n * @param {String} `to` Optionally specify a new key name to use.\n * @return {Object}\n * @api public\n */\n\nmodule.exports = function copyDescriptor(receiver, provider, from, to) {\n if (!isObject(provider) && typeof provider !== 'function') {\n to = from;\n from = provider;\n provider = receiver;\n }\n if (!isObject(receiver) && typeof receiver !== 'function') {\n throw new TypeError('expected the first argument to be an object');\n }\n if (!isObject(provider) && typeof provider !== 'function') {\n throw new TypeError('expected provider to be an object');\n }\n\n if (typeof to !== 'string') {\n to = from;\n }\n if (typeof from !== 'string') {\n throw new TypeError('expected key to be a string');\n }\n\n if (!(from in provider)) {\n throw new Error('property \"' + from + '\" does not exist');\n }\n\n var val = Object.getOwnPropertyDescriptor(provider, from);\n if (val) Object.defineProperty(receiver, to, val);\n};\n\nfunction isObject(val) {\n return {}.toString.call(val) === '[object Object]';\n}\n\n","/*!\n * define-property \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isDescriptor = require('is-descriptor');\n\nmodule.exports = function defineProperty(obj, prop, val) {\n if (typeof obj !== 'object' && typeof obj !== 'function') {\n throw new TypeError('expected an object or function.');\n }\n\n if (typeof prop !== 'string') {\n throw new TypeError('expected `prop` to be a string.');\n }\n\n if (isDescriptor(val) && ('set' in val || 'get' in val)) {\n return Object.defineProperty(obj, prop, val);\n }\n\n return Object.defineProperty(obj, prop, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n};\n","/*!\n * is-accessor-descriptor \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\n// accessor descriptor properties\nvar accessor = {\n get: 'function',\n set: 'function',\n configurable: 'boolean',\n enumerable: 'boolean'\n};\n\nfunction isAccessorDescriptor(obj, prop) {\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (has(obj, 'value') || has(obj, 'writable')) {\n return false;\n }\n\n if (!has(obj, 'get') || typeof obj.get !== 'function') {\n return false;\n }\n\n // tldr: it's valid to have \"set\" be undefined\n // \"set\" might be undefined if `Object.getOwnPropertyDescriptor`\n // was used to get the value, and only `get` was defined by the user\n if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') {\n return false;\n }\n\n for (var key in obj) {\n if (!accessor.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === accessor[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n}\n\nfunction has(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n\n/**\n * Expose `isAccessorDescriptor`\n */\n\nmodule.exports = isAccessorDescriptor;\n","var isBuffer = require('is-buffer');\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n","/*!\n * is-data-descriptor \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\n// data descriptor properties\nvar data = {\n configurable: 'boolean',\n enumerable: 'boolean',\n writable: 'boolean'\n};\n\nfunction isDataDescriptor(obj, prop) {\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (!('value' in obj) && !('writable' in obj)) {\n return false;\n }\n\n for (var key in obj) {\n if (key === 'value') continue;\n\n if (!data.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === data[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Expose `isDataDescriptor`\n */\n\nmodule.exports = isDataDescriptor;\n","var isBuffer = require('is-buffer');\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n","/*!\n * is-descriptor \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\nvar isAccessor = require('is-accessor-descriptor');\nvar isData = require('is-data-descriptor');\n\nmodule.exports = function isDescriptor(obj, key) {\n if (typeOf(obj) !== 'object') {\n return false;\n }\n if ('get' in obj) {\n return isAccessor(obj, key);\n }\n return isData(obj, key);\n};\n","var toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n var type = typeof val;\n\n // primitivies\n if (type === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (type === 'string' || val instanceof String) {\n return 'string';\n }\n if (type === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (type === 'function' || val instanceof Function) {\n if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') {\n return 'generatorfunction';\n }\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n \n if (type === '[object Map Iterator]') {\n return 'mapiterator';\n }\n if (type === '[object Set Iterator]') {\n return 'setiterator';\n }\n if (type === '[object String Iterator]') {\n return 'stringiterator';\n }\n if (type === '[object Array Iterator]') {\n return 'arrayiterator';\n }\n \n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n return val.constructor\n && typeof val.constructor.isBuffer === 'function'\n && val.constructor.isBuffer(val);\n}\n","/*\n Copyright (C) 2013 Yusuke Suzuki \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n 'use strict';\n\n function isExpression(node) {\n if (node == null) { return false; }\n switch (node.type) {\n case 'ArrayExpression':\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'CallExpression':\n case 'ConditionalExpression':\n case 'FunctionExpression':\n case 'Identifier':\n case 'Literal':\n case 'LogicalExpression':\n case 'MemberExpression':\n case 'NewExpression':\n case 'ObjectExpression':\n case 'SequenceExpression':\n case 'ThisExpression':\n case 'UnaryExpression':\n case 'UpdateExpression':\n return true;\n }\n return false;\n }\n\n function isIterationStatement(node) {\n if (node == null) { return false; }\n switch (node.type) {\n case 'DoWhileStatement':\n case 'ForInStatement':\n case 'ForStatement':\n case 'WhileStatement':\n return true;\n }\n return false;\n }\n\n function isStatement(node) {\n if (node == null) { return false; }\n switch (node.type) {\n case 'BlockStatement':\n case 'BreakStatement':\n case 'ContinueStatement':\n case 'DebuggerStatement':\n case 'DoWhileStatement':\n case 'EmptyStatement':\n case 'ExpressionStatement':\n case 'ForInStatement':\n case 'ForStatement':\n case 'IfStatement':\n case 'LabeledStatement':\n case 'ReturnStatement':\n case 'SwitchStatement':\n case 'ThrowStatement':\n case 'TryStatement':\n case 'VariableDeclaration':\n case 'WhileStatement':\n case 'WithStatement':\n return true;\n }\n return false;\n }\n\n function isSourceElement(node) {\n return isStatement(node) || node != null && node.type === 'FunctionDeclaration';\n }\n\n function trailingStatement(node) {\n switch (node.type) {\n case 'IfStatement':\n if (node.alternate != null) {\n return node.alternate;\n }\n return node.consequent;\n\n case 'LabeledStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'WhileStatement':\n case 'WithStatement':\n return node.body;\n }\n return null;\n }\n\n function isProblematicIfStatement(node) {\n var current;\n\n if (node.type !== 'IfStatement') {\n return false;\n }\n if (node.alternate == null) {\n return false;\n }\n current = node.consequent;\n do {\n if (current.type === 'IfStatement') {\n if (current.alternate == null) {\n return true;\n }\n }\n current = trailingStatement(current);\n } while (current);\n\n return false;\n }\n\n module.exports = {\n isExpression: isExpression,\n isStatement: isStatement,\n isIterationStatement: isIterationStatement,\n isSourceElement: isSourceElement,\n isProblematicIfStatement: isProblematicIfStatement,\n\n trailingStatement: trailingStatement\n };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013-2014 Yusuke Suzuki \n Copyright (C) 2014 Ivan Nikulin \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n 'use strict';\n\n var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch;\n\n // See `tools/generate-identifier-regex.js`.\n ES5Regex = {\n // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierStart:\n NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierPart:\n NonAsciiIdentifierPart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/\n };\n\n ES6Regex = {\n // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart:\n NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF98]|\\uD809[\\uDC00-\\uDC6E]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D]|\\uD87E[\\uDC00-\\uDE1D]/,\n // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart:\n NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDD0-\\uDDDA\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF01-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF98]|\\uD809[\\uDC00-\\uDC6E]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n };\n\n function isDecimalDigit(ch) {\n return 0x30 <= ch && ch <= 0x39; // 0..9\n }\n\n function isHexDigit(ch) {\n return 0x30 <= ch && ch <= 0x39 || // 0..9\n 0x61 <= ch && ch <= 0x66 || // a..f\n 0x41 <= ch && ch <= 0x46; // A..F\n }\n\n function isOctalDigit(ch) {\n return ch >= 0x30 && ch <= 0x37; // 0..7\n }\n\n // 7.2 White Space\n\n NON_ASCII_WHITESPACES = [\n 0x1680, 0x180E,\n 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A,\n 0x202F, 0x205F,\n 0x3000,\n 0xFEFF\n ];\n\n function isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 ||\n ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0;\n }\n\n // 7.3 Line Terminators\n\n function isLineTerminator(ch) {\n return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n }\n\n // 7.6 Identifier Names and Identifiers\n\n function fromCodePoint(cp) {\n if (cp <= 0xFFFF) { return String.fromCharCode(cp); }\n var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800);\n var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00);\n return cu1 + cu2;\n }\n\n IDENTIFIER_START = new Array(0x80);\n for(ch = 0; ch < 0x80; ++ch) {\n IDENTIFIER_START[ch] =\n ch >= 0x61 && ch <= 0x7A || // a..z\n ch >= 0x41 && ch <= 0x5A || // A..Z\n ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)\n }\n\n IDENTIFIER_PART = new Array(0x80);\n for(ch = 0; ch < 0x80; ++ch) {\n IDENTIFIER_PART[ch] =\n ch >= 0x61 && ch <= 0x7A || // a..z\n ch >= 0x41 && ch <= 0x5A || // A..Z\n ch >= 0x30 && ch <= 0x39 || // 0..9\n ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)\n }\n\n function isIdentifierStartES5(ch) {\n return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));\n }\n\n function isIdentifierPartES5(ch) {\n return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));\n }\n\n function isIdentifierStartES6(ch) {\n return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));\n }\n\n function isIdentifierPartES6(ch) {\n return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));\n }\n\n module.exports = {\n isDecimalDigit: isDecimalDigit,\n isHexDigit: isHexDigit,\n isOctalDigit: isOctalDigit,\n isWhiteSpace: isWhiteSpace,\n isLineTerminator: isLineTerminator,\n isIdentifierStartES5: isIdentifierStartES5,\n isIdentifierPartES5: isIdentifierPartES5,\n isIdentifierStartES6: isIdentifierStartES6,\n isIdentifierPartES6: isIdentifierPartES6\n };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013 Yusuke Suzuki \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n 'use strict';\n\n var code = require('./code');\n\n function isStrictModeReservedWordES6(id) {\n switch (id) {\n case 'implements':\n case 'interface':\n case 'package':\n case 'private':\n case 'protected':\n case 'public':\n case 'static':\n case 'let':\n return true;\n default:\n return false;\n }\n }\n\n function isKeywordES5(id, strict) {\n // yield should not be treated as keyword under non-strict mode.\n if (!strict && id === 'yield') {\n return false;\n }\n return isKeywordES6(id, strict);\n }\n\n function isKeywordES6(id, strict) {\n if (strict && isStrictModeReservedWordES6(id)) {\n return true;\n }\n\n switch (id.length) {\n case 2:\n return (id === 'if') || (id === 'in') || (id === 'do');\n case 3:\n return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try');\n case 4:\n return (id === 'this') || (id === 'else') || (id === 'case') ||\n (id === 'void') || (id === 'with') || (id === 'enum');\n case 5:\n return (id === 'while') || (id === 'break') || (id === 'catch') ||\n (id === 'throw') || (id === 'const') || (id === 'yield') ||\n (id === 'class') || (id === 'super');\n case 6:\n return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n (id === 'switch') || (id === 'export') || (id === 'import');\n case 7:\n return (id === 'default') || (id === 'finally') || (id === 'extends');\n case 8:\n return (id === 'function') || (id === 'continue') || (id === 'debugger');\n case 10:\n return (id === 'instanceof');\n default:\n return false;\n }\n }\n\n function isReservedWordES5(id, strict) {\n return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict);\n }\n\n function isReservedWordES6(id, strict) {\n return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict);\n }\n\n function isRestrictedWord(id) {\n return id === 'eval' || id === 'arguments';\n }\n\n function isIdentifierNameES5(id) {\n var i, iz, ch;\n\n if (id.length === 0) { return false; }\n\n ch = id.charCodeAt(0);\n if (!code.isIdentifierStartES5(ch)) {\n return false;\n }\n\n for (i = 1, iz = id.length; i < iz; ++i) {\n ch = id.charCodeAt(i);\n if (!code.isIdentifierPartES5(ch)) {\n return false;\n }\n }\n return true;\n }\n\n function decodeUtf16(lead, trail) {\n return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n }\n\n function isIdentifierNameES6(id) {\n var i, iz, ch, lowCh, check;\n\n if (id.length === 0) { return false; }\n\n check = code.isIdentifierStartES6;\n for (i = 0, iz = id.length; i < iz; ++i) {\n ch = id.charCodeAt(i);\n if (0xD800 <= ch && ch <= 0xDBFF) {\n ++i;\n if (i >= iz) { return false; }\n lowCh = id.charCodeAt(i);\n if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) {\n return false;\n }\n ch = decodeUtf16(ch, lowCh);\n }\n if (!check(ch)) {\n return false;\n }\n check = code.isIdentifierPartES6;\n }\n return true;\n }\n\n function isIdentifierES5(id, strict) {\n return isIdentifierNameES5(id) && !isReservedWordES5(id, strict);\n }\n\n function isIdentifierES6(id, strict) {\n return isIdentifierNameES6(id) && !isReservedWordES6(id, strict);\n }\n\n module.exports = {\n isKeywordES5: isKeywordES5,\n isKeywordES6: isKeywordES6,\n isReservedWordES5: isReservedWordES5,\n isReservedWordES6: isReservedWordES6,\n isRestrictedWord: isRestrictedWord,\n isIdentifierNameES5: isIdentifierNameES5,\n isIdentifierNameES6: isIdentifierNameES6,\n isIdentifierES5: isIdentifierES5,\n isIdentifierES6: isIdentifierES6\n };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013 Yusuke Suzuki \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n(function () {\n 'use strict';\n\n exports.ast = require('./ast');\n exports.code = require('./code');\n exports.keyword = require('./keyword');\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","'use strict';\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\n\n/**\n * Module dependencies\n */\n\nvar debug = require('debug')('expand-brackets');\nvar extend = require('extend-shallow');\nvar Snapdragon = require('snapdragon');\nvar toRegex = require('to-regex');\n\n/**\n * Parses the given POSIX character class `pattern` and returns a\n * string that can be used for creating regular expressions for matching.\n *\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object}\n * @api public\n */\n\nfunction brackets(pattern, options) {\n debug('initializing from <%s>', __filename);\n var res = brackets.create(pattern, options);\n return res.output;\n}\n\n/**\n * Takes an array of strings and a POSIX character class pattern, and returns a new\n * array with only the strings that matched the pattern.\n *\n * ```js\n * var brackets = require('expand-brackets');\n * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]'));\n * //=> ['a']\n *\n * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]+'));\n * //=> ['a', 'ab']\n * ```\n * @param {Array} `arr` Array of strings to match\n * @param {String} `pattern` POSIX character class pattern(s)\n * @param {Object} `options`\n * @return {Array}\n * @api public\n */\n\nbrackets.match = function(arr, pattern, options) {\n arr = [].concat(arr);\n var opts = extend({}, options);\n var isMatch = brackets.matcher(pattern, opts);\n var len = arr.length;\n var idx = -1;\n var res = [];\n\n while (++idx < len) {\n var ele = arr[idx];\n if (isMatch(ele)) {\n res.push(ele);\n }\n }\n\n if (res.length === 0) {\n if (opts.failglob === true) {\n throw new Error('no matches found for \"' + pattern + '\"');\n }\n\n if (opts.nonull === true || opts.nullglob === true) {\n return [pattern.split('\\\\').join('')];\n }\n }\n return res;\n};\n\n/**\n * Returns true if the specified `string` matches the given\n * brackets `pattern`.\n *\n * ```js\n * var brackets = require('expand-brackets');\n *\n * console.log(brackets.isMatch('a.a', '[[:alpha:]].[[:alpha:]]'));\n * //=> true\n * console.log(brackets.isMatch('1.2', '[[:alpha:]].[[:alpha:]]'));\n * //=> false\n * ```\n * @param {String} `string` String to match\n * @param {String} `pattern` Poxis pattern\n * @param {String} `options`\n * @return {Boolean}\n * @api public\n */\n\nbrackets.isMatch = function(str, pattern, options) {\n return brackets.matcher(pattern, options)(str);\n};\n\n/**\n * Takes a POSIX character class pattern and returns a matcher function. The returned\n * function takes the string to match as its only argument.\n *\n * ```js\n * var brackets = require('expand-brackets');\n * var isMatch = brackets.matcher('[[:lower:]].[[:upper:]]');\n *\n * console.log(isMatch('a.a'));\n * //=> false\n * console.log(isMatch('a.A'));\n * //=> true\n * ```\n * @param {String} `pattern` Poxis pattern\n * @param {String} `options`\n * @return {Boolean}\n * @api public\n */\n\nbrackets.matcher = function(pattern, options) {\n var re = brackets.makeRe(pattern, options);\n return function(str) {\n return re.test(str);\n };\n};\n\n/**\n * Create a regular expression from the given `pattern`.\n *\n * ```js\n * var brackets = require('expand-brackets');\n * var re = brackets.makeRe('[[:alpha:]]');\n * console.log(re);\n * //=> /^(?:[a-zA-Z])$/\n * ```\n * @param {String} `pattern` The pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nbrackets.makeRe = function(pattern, options) {\n var res = brackets.create(pattern, options);\n var opts = extend({strictErrors: false}, options);\n return toRegex(res.output, opts);\n};\n\n/**\n * Parses the given POSIX character class `pattern` and returns an object\n * with the compiled `output` and optional source `map`.\n *\n * ```js\n * var brackets = require('expand-brackets');\n * console.log(brackets('[[:alpha:]]'));\n * // { options: { source: 'string' },\n * // input: '[[:alpha:]]',\n * // state: {},\n * // compilers:\n * // { eos: [Function],\n * // noop: [Function],\n * // bos: [Function],\n * // not: [Function],\n * // escape: [Function],\n * // text: [Function],\n * // posix: [Function],\n * // bracket: [Function],\n * // 'bracket.open': [Function],\n * // 'bracket.inner': [Function],\n * // 'bracket.literal': [Function],\n * // 'bracket.close': [Function] },\n * // output: '[a-zA-Z]',\n * // ast:\n * // { type: 'root',\n * // errors: [],\n * // nodes: [ [Object], [Object], [Object] ] },\n * // parsingErrors: [] }\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object}\n * @api public\n */\n\nbrackets.create = function(pattern, options) {\n var snapdragon = (options && options.snapdragon) || new Snapdragon(options);\n compilers(snapdragon);\n parsers(snapdragon);\n\n var ast = snapdragon.parse(pattern, options);\n ast.input = pattern;\n var res = snapdragon.compile(ast, options);\n res.input = pattern;\n return res;\n};\n\n/**\n * Expose `brackets` constructor, parsers and compilers\n */\n\nbrackets.compilers = compilers;\nbrackets.parsers = parsers;\n\n/**\n * Expose `brackets`\n * @type {Function}\n */\n\nmodule.exports = brackets;\n","'use strict';\n\nvar posix = require('posix-character-classes');\n\nmodule.exports = function(brackets) {\n brackets.compiler\n\n /**\n * Escaped characters\n */\n\n .set('escape', function(node) {\n return this.emit('\\\\' + node.val.replace(/^\\\\/, ''), node);\n })\n\n /**\n * Text\n */\n\n .set('text', function(node) {\n return this.emit(node.val.replace(/([{}])/g, '\\\\$1'), node);\n })\n\n /**\n * POSIX character classes\n */\n\n .set('posix', function(node) {\n if (node.val === '[::]') {\n return this.emit('\\\\[::\\\\]', node);\n }\n\n var val = posix[node.inner];\n if (typeof val === 'undefined') {\n val = '[' + node.inner + ']';\n }\n return this.emit(val, node);\n })\n\n /**\n * Non-posix brackets\n */\n\n .set('bracket', function(node) {\n return this.mapVisit(node.nodes);\n })\n .set('bracket.open', function(node) {\n return this.emit(node.val, node);\n })\n .set('bracket.inner', function(node) {\n var inner = node.val;\n\n if (inner === '[' || inner === ']') {\n return this.emit('\\\\' + node.val, node);\n }\n if (inner === '^]') {\n return this.emit('^\\\\]', node);\n }\n if (inner === '^') {\n return this.emit('^', node);\n }\n\n if (/-/.test(inner) && !/(\\d-\\d|\\w-\\w)/.test(inner)) {\n inner = inner.split('-').join('\\\\-');\n }\n\n var isNegated = inner.charAt(0) === '^';\n // add slashes to negated brackets, per spec\n if (isNegated && inner.indexOf('/') === -1) {\n inner += '/';\n }\n if (isNegated && inner.indexOf('.') === -1) {\n inner += '.';\n }\n\n // don't unescape `0` (octal literal)\n inner = inner.replace(/\\\\([1-9])/g, '$1');\n return this.emit(inner, node);\n })\n .set('bracket.close', function(node) {\n var val = node.val.replace(/^\\\\/, '');\n if (node.parent.escaped === true) {\n return this.emit('\\\\' + val, node);\n }\n return this.emit(val, node);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar define = require('define-property');\n\n/**\n * Text regex\n */\n\nvar TEXT_REGEX = '(\\\\[(?=.*\\\\])|\\\\])+';\nvar not = utils.createRegex(TEXT_REGEX);\n\n/**\n * Brackets parsers\n */\n\nfunction parsers(brackets) {\n brackets.state = brackets.state || {};\n brackets.parser.sets.bracket = brackets.parser.sets.bracket || [];\n brackets.parser\n\n .capture('escape', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(/^\\\\(.)/);\n if (!m) return;\n\n return pos({\n type: 'escape',\n val: m[0]\n });\n })\n\n /**\n * Text parser\n */\n\n .capture('text', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(not);\n if (!m || !m[0]) return;\n\n return pos({\n type: 'text',\n val: m[0]\n });\n })\n\n /**\n * POSIX character classes: \"[[:alpha:][:digits:]]\"\n */\n\n .capture('posix', function() {\n var pos = this.position();\n var m = this.match(/^\\[:(.*?):\\](?=.*\\])/);\n if (!m) return;\n\n var inside = this.isInside('bracket');\n if (inside) {\n brackets.posix++;\n }\n\n return pos({\n type: 'posix',\n insideBracket: inside,\n inner: m[1],\n val: m[0]\n });\n })\n\n /**\n * Bracket (noop)\n */\n\n .capture('bracket', function() {})\n\n /**\n * Open: '['\n */\n\n .capture('bracket.open', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\[(?=.*\\])/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n if (parsed.slice(-1) === '\\\\' && !this.isInside('bracket')) {\n last.val = last.val.slice(0, last.val.length - 1);\n return pos({\n type: 'escape',\n val: m[0]\n });\n }\n\n var open = pos({\n type: 'bracket.open',\n val: m[0]\n });\n\n if (last.type === 'bracket.open' || this.isInside('bracket')) {\n open.val = '\\\\' + open.val;\n open.type = 'bracket.inner';\n open.escaped = true;\n return open;\n }\n\n var node = pos({\n type: 'bracket',\n nodes: [open]\n });\n\n define(node, 'parent', prev);\n define(open, 'parent', node);\n this.push('bracket', node);\n prev.nodes.push(node);\n })\n\n /**\n * Bracket text\n */\n\n .capture('bracket.inner', function() {\n if (!this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(not);\n if (!m || !m[0]) return;\n\n var next = this.input.charAt(0);\n var val = m[0];\n\n var node = pos({\n type: 'bracket.inner',\n val: val\n });\n\n if (val === '\\\\\\\\') {\n return node;\n }\n\n var first = val.charAt(0);\n var last = val.slice(-1);\n\n if (first === '!') {\n val = '^' + val.slice(1);\n }\n\n if (last === '\\\\' || (val === '^' && next === ']')) {\n val += this.input[0];\n this.consume(1);\n }\n\n node.val = val;\n return node;\n })\n\n /**\n * Close: ']'\n */\n\n .capture('bracket.close', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\]/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n if (parsed.slice(-1) === '\\\\' && !this.isInside('bracket')) {\n last.val = last.val.slice(0, last.val.length - 1);\n\n return pos({\n type: 'escape',\n val: m[0]\n });\n }\n\n var node = pos({\n type: 'bracket.close',\n rest: this.input,\n val: m[0]\n });\n\n if (last.type === 'bracket.open') {\n node.type = 'bracket.inner';\n node.escaped = true;\n return node;\n }\n\n var bracket = this.pop('bracket');\n if (!this.isType(bracket, 'bracket')) {\n if (this.options.strict) {\n throw new Error('missing opening \"[\"');\n }\n node.type = 'bracket.inner';\n node.escaped = true;\n return node;\n }\n\n bracket.nodes.push(node);\n define(node, 'parent', bracket);\n });\n}\n\n/**\n * Brackets parsers\n */\n\nmodule.exports = parsers;\n\n/**\n * Expose text regex\n */\n\nmodule.exports.TEXT_REGEX = TEXT_REGEX;\n","'use strict';\n\nvar toRegex = require('to-regex');\nvar regexNot = require('regex-not');\nvar cached;\n\n/**\n * Get the last element from `array`\n * @param {Array} `array`\n * @return {*}\n */\n\nexports.last = function(arr) {\n return arr[arr.length - 1];\n};\n\n/**\n * Create and cache regex to use for text nodes\n */\n\nexports.createRegex = function(pattern, include) {\n if (cached) return cached;\n var opts = {contains: true, strictClose: false};\n var not = regexNot.create(pattern, opts);\n var re;\n\n if (typeof include === 'string') {\n re = toRegex('^(?:' + include + '|' + not + ')', opts);\n } else {\n re = toRegex(not, opts);\n }\n\n return (cached = re);\n};\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","'use strict';\n\nvar isObject = require('is-extendable');\n\nmodule.exports = function extend(o/*, objects*/) {\n if (!isObject(o)) { o = {}; }\n\n var len = arguments.length;\n for (var i = 1; i < len; i++) {\n var obj = arguments[i];\n\n if (isObject(obj)) {\n assign(o, obj);\n }\n }\n return o;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar extend = require('extend-shallow');\nvar unique = require('array-unique');\nvar toRegex = require('to-regex');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\nvar Extglob = require('./lib/extglob');\nvar utils = require('./lib/utils');\nvar MAX_LENGTH = 1024 * 64;\n\n/**\n * Convert the given `extglob` pattern into a regex-compatible string. Returns\n * an object with the compiled result and the parsed AST.\n *\n * ```js\n * var extglob = require('extglob');\n * console.log(extglob('*.!(*a)'));\n * //=> '(?!\\\\.)[^/]*?\\\\.(?!(?!\\\\.)[^/]*?a\\\\b).*?'\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nfunction extglob(pattern, options) {\n return extglob.create(pattern, options).output;\n}\n\n/**\n * Takes an array of strings and an extglob pattern and returns a new\n * array that contains only the strings that match the pattern.\n *\n * ```js\n * var extglob = require('extglob');\n * console.log(extglob.match(['a.a', 'a.b', 'a.c'], '*.!(*a)'));\n * //=> ['a.b', 'a.c']\n * ```\n * @param {Array} `list` Array of strings to match\n * @param {String} `pattern` Extglob pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of matches\n * @api public\n */\n\nextglob.match = function(list, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n list = utils.arrayify(list);\n var isMatch = extglob.matcher(pattern, options);\n var len = list.length;\n var idx = -1;\n var matches = [];\n\n while (++idx < len) {\n var ele = list[idx];\n\n if (isMatch(ele)) {\n matches.push(ele);\n }\n }\n\n // if no options were passed, uniquify results and return\n if (typeof options === 'undefined') {\n return unique(matches);\n }\n\n if (matches.length === 0) {\n if (options.failglob === true) {\n throw new Error('no matches found for \"' + pattern + '\"');\n }\n if (options.nonull === true || options.nullglob === true) {\n return [pattern.split('\\\\').join('')];\n }\n }\n\n return options.nodupes !== false ? unique(matches) : matches;\n};\n\n/**\n * Returns true if the specified `string` matches the given\n * extglob `pattern`.\n *\n * ```js\n * var extglob = require('extglob');\n *\n * console.log(extglob.isMatch('a.a', '*.!(*a)'));\n * //=> false\n * console.log(extglob.isMatch('a.b', '*.!(*a)'));\n * //=> true\n * ```\n * @param {String} `string` String to match\n * @param {String} `pattern` Extglob pattern\n * @param {String} `options`\n * @return {Boolean}\n * @api public\n */\n\nextglob.isMatch = function(str, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (pattern === str) {\n return true;\n }\n\n if (pattern === '' || pattern === ' ' || pattern === '.') {\n return pattern === str;\n }\n\n var isMatch = utils.memoize('isMatch', pattern, options, extglob.matcher);\n return isMatch(str);\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar to `.isMatch` but\n * the pattern can match any part of the string.\n *\n * ```js\n * var extglob = require('extglob');\n * console.log(extglob.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(extglob.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {Object} `options`\n * @return {Boolean} Returns true if the patter matches any part of `str`.\n * @api public\n */\n\nextglob.contains = function(str, pattern, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (pattern === '' || pattern === ' ' || pattern === '.') {\n return pattern === str;\n }\n\n var opts = extend({}, options, {contains: true});\n opts.strictClose = false;\n opts.strictOpen = false;\n return extglob.isMatch(str, pattern, opts);\n};\n\n/**\n * Takes an extglob pattern and returns a matcher function. The returned\n * function takes the string to match as its only argument.\n *\n * ```js\n * var extglob = require('extglob');\n * var isMatch = extglob.matcher('*.!(*a)');\n *\n * console.log(isMatch('a.a'));\n * //=> false\n * console.log(isMatch('a.b'));\n * //=> true\n * ```\n * @param {String} `pattern` Extglob pattern\n * @param {String} `options`\n * @return {Boolean}\n * @api public\n */\n\nextglob.matcher = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n function matcher() {\n var re = extglob.makeRe(pattern, options);\n return function(str) {\n return re.test(str);\n };\n }\n\n return utils.memoize('matcher', pattern, options, matcher);\n};\n\n/**\n * Convert the given `extglob` pattern into a regex-compatible string. Returns\n * an object with the compiled result and the parsed AST.\n *\n * ```js\n * var extglob = require('extglob');\n * console.log(extglob.create('*.!(*a)').output);\n * //=> '(?!\\\\.)[^/]*?\\\\.(?!(?!\\\\.)[^/]*?a\\\\b).*?'\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nextglob.create = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n function create() {\n var ext = new Extglob(options);\n var ast = ext.parse(pattern, options);\n return ext.compile(ast, options);\n }\n\n return utils.memoize('create', pattern, options, create);\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string`, or `null`\n * if the pattern did not match.\n *\n * ```js\n * var extglob = require('extglob');\n * extglob.capture(pattern, string[, options]);\n *\n * console.log(extglob.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(extglob.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {String} `string` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nextglob.capture = function(pattern, str, options) {\n var re = extglob.makeRe(pattern, extend({capture: true}, options));\n\n function match() {\n return function(string) {\n var match = re.exec(string);\n if (!match) {\n return null;\n }\n\n return match.slice(1);\n };\n }\n\n var capture = utils.memoize('capture', pattern, options, match);\n return capture(str);\n};\n\n/**\n * Create a regular expression from the given `pattern` and `options`.\n *\n * ```js\n * var extglob = require('extglob');\n * var re = extglob.makeRe('*.!(*a)');\n * console.log(re);\n * //=> /^[^\\/]*?\\.(?![^\\/]*?a)[^\\/]*?$/\n * ```\n * @param {String} `pattern` The pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nextglob.makeRe = function(pattern, options) {\n if (pattern instanceof RegExp) {\n return pattern;\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n if (pattern.length > MAX_LENGTH) {\n throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');\n }\n\n function makeRe() {\n var opts = extend({strictErrors: false}, options);\n if (opts.strictErrors === true) opts.strict = true;\n var res = extglob.create(pattern, opts);\n return toRegex(res.output, opts);\n }\n\n var regex = utils.memoize('makeRe', pattern, options, makeRe);\n if (regex.source.length > MAX_LENGTH) {\n throw new SyntaxError('potentially malicious regex detected');\n }\n\n return regex;\n};\n\n/**\n * Cache\n */\n\nextglob.cache = utils.cache;\nextglob.clearCache = function() {\n extglob.cache.__data__ = {};\n};\n\n/**\n * Expose `Extglob` constructor, parsers and compilers\n */\n\nextglob.Extglob = Extglob;\nextglob.compilers = compilers;\nextglob.parsers = parsers;\n\n/**\n * Expose `extglob`\n * @type {Function}\n */\n\nmodule.exports = extglob;\n","'use strict';\n\nvar brackets = require('expand-brackets');\n\n/**\n * Extglob compilers\n */\n\nmodule.exports = function(extglob) {\n function star() {\n if (typeof extglob.options.star === 'function') {\n return extglob.options.star.apply(this, arguments);\n }\n if (typeof extglob.options.star === 'string') {\n return extglob.options.star;\n }\n return '.*?';\n }\n\n /**\n * Use `expand-brackets` compilers\n */\n\n extglob.use(brackets.compilers);\n extglob.compiler\n\n /**\n * Escaped: \"\\\\*\"\n */\n\n .set('escape', function(node) {\n return this.emit(node.val, node);\n })\n\n /**\n * Dot: \".\"\n */\n\n .set('dot', function(node) {\n return this.emit('\\\\' + node.val, node);\n })\n\n /**\n * Question mark: \"?\"\n */\n\n .set('qmark', function(node) {\n var val = '[^\\\\\\\\/.]';\n var prev = this.prev();\n\n if (node.parsed.slice(-1) === '(') {\n var ch = node.rest.charAt(0);\n if (ch !== '!' && ch !== '=' && ch !== ':') {\n return this.emit(val, node);\n }\n return this.emit(node.val, node);\n }\n\n if (prev.type === 'text' && prev.val) {\n return this.emit(val, node);\n }\n\n if (node.val.length > 1) {\n val += '{' + node.val.length + '}';\n }\n return this.emit(val, node);\n })\n\n /**\n * Plus: \"+\"\n */\n\n .set('plus', function(node) {\n var prev = node.parsed.slice(-1);\n if (prev === ']' || prev === ')') {\n return this.emit(node.val, node);\n }\n var ch = this.output.slice(-1);\n if (!this.output || (/[?*+]/.test(ch) && node.parent.type !== 'bracket')) {\n return this.emit('\\\\+', node);\n }\n if (/\\w/.test(ch) && !node.inside) {\n return this.emit('+\\\\+?', node);\n }\n return this.emit('+', node);\n })\n\n /**\n * Star: \"*\"\n */\n\n .set('star', function(node) {\n var prev = this.prev();\n var prefix = prev.type !== 'text' && prev.type !== 'escape'\n ? '(?!\\\\.)'\n : '';\n\n return this.emit(prefix + star.call(this, node), node);\n })\n\n /**\n * Parens\n */\n\n .set('paren', function(node) {\n return this.mapVisit(node.nodes);\n })\n .set('paren.open', function(node) {\n var capture = this.options.capture ? '(' : '';\n\n switch (node.parent.prefix) {\n case '!':\n case '^':\n return this.emit(capture + '(?:(?!(?:', node);\n case '*':\n case '+':\n case '?':\n case '@':\n return this.emit(capture + '(?:', node);\n default: {\n var val = node.val;\n if (this.options.bash === true) {\n val = '\\\\' + val;\n } else if (!this.options.capture && val === '(' && node.parent.rest[0] !== '?') {\n val += '?:';\n }\n\n return this.emit(val, node);\n }\n }\n })\n .set('paren.close', function(node) {\n var capture = this.options.capture ? ')' : '';\n\n switch (node.prefix) {\n case '!':\n case '^':\n var prefix = /^(\\)|$)/.test(node.rest) ? '$' : '';\n var str = star.call(this, node);\n\n // if the extglob has a slash explicitly defined, we know the user wants\n // to match slashes, so we need to ensure the \"star\" regex allows for it\n if (node.parent.hasSlash && !this.options.star && this.options.slash !== false) {\n str = '.*?';\n }\n\n return this.emit(prefix + ('))' + str + ')') + capture, node);\n case '*':\n case '+':\n case '?':\n return this.emit(')' + node.prefix + capture, node);\n case '@':\n return this.emit(')' + capture, node);\n default: {\n var val = (this.options.bash === true ? '\\\\' : '') + ')';\n return this.emit(val, node);\n }\n }\n })\n\n /**\n * Text\n */\n\n .set('text', function(node) {\n var val = node.val.replace(/[\\[\\]]/g, '\\\\$&');\n return this.emit(val, node);\n });\n};\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar Snapdragon = require('snapdragon');\nvar define = require('define-property');\nvar extend = require('extend-shallow');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./compilers');\nvar parsers = require('./parsers');\n\n/**\n * Customize Snapdragon parser and renderer\n */\n\nfunction Extglob(options) {\n this.options = extend({source: 'extglob'}, options);\n this.snapdragon = this.options.snapdragon || new Snapdragon(this.options);\n this.snapdragon.patterns = this.snapdragon.patterns || {};\n this.compiler = this.snapdragon.compiler;\n this.parser = this.snapdragon.parser;\n\n compilers(this.snapdragon);\n parsers(this.snapdragon);\n\n /**\n * Override Snapdragon `.parse` method\n */\n\n define(this.snapdragon, 'parse', function(str, options) {\n var parsed = Snapdragon.prototype.parse.apply(this, arguments);\n parsed.input = str;\n\n // escape unmatched brace/bracket/parens\n var last = this.parser.stack.pop();\n if (last && this.options.strict !== true) {\n var node = last.nodes[0];\n node.val = '\\\\' + node.val;\n var sibling = node.parent.nodes[1];\n if (sibling.type === 'star') {\n sibling.loose = true;\n }\n }\n\n // add non-enumerable parser reference\n define(parsed, 'parser', this.parser);\n return parsed;\n });\n\n /**\n * Decorate `.parse` method\n */\n\n define(this, 'parse', function(ast, options) {\n return this.snapdragon.parse.apply(this.snapdragon, arguments);\n });\n\n /**\n * Decorate `.compile` method\n */\n\n define(this, 'compile', function(ast, options) {\n return this.snapdragon.compile.apply(this.snapdragon, arguments);\n });\n\n}\n\n/**\n * Expose `Extglob`\n */\n\nmodule.exports = Extglob;\n","'use strict';\n\nvar brackets = require('expand-brackets');\nvar define = require('define-property');\nvar utils = require('./utils');\n\n/**\n * Characters to use in text regex (we want to \"not\" match\n * characters that are matched by other parsers)\n */\n\nvar TEXT_REGEX = '([!@*?+]?\\\\(|\\\\)|[*?.+\\\\\\\\]|\\\\[:?(?=.*\\\\])|:?\\\\])+';\nvar not = utils.createRegex(TEXT_REGEX);\n\n/**\n * Extglob parsers\n */\n\nfunction parsers(extglob) {\n extglob.state = extglob.state || {};\n\n /**\n * Use `expand-brackets` parsers\n */\n\n extglob.use(brackets.parsers);\n extglob.parser.sets.paren = extglob.parser.sets.paren || [];\n extglob.parser\n\n /**\n * Extglob open: \"*(\"\n */\n\n .capture('paren.open', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^([!@*?+])?\\(/);\n if (!m) return;\n\n var prev = this.prev();\n var prefix = m[1];\n var val = m[0];\n\n var open = pos({\n type: 'paren.open',\n parsed: parsed,\n val: val\n });\n\n var node = pos({\n type: 'paren',\n prefix: prefix,\n nodes: [open]\n });\n\n // if nested negation extglobs, just cancel them out to simplify\n if (prefix === '!' && prev.type === 'paren' && prev.prefix === '!') {\n prev.prefix = '@';\n node.prefix = '@';\n }\n\n define(node, 'rest', this.input);\n define(node, 'parsed', parsed);\n define(node, 'parent', prev);\n define(open, 'parent', node);\n\n this.push('paren', node);\n prev.nodes.push(node);\n })\n\n /**\n * Extglob close: \")\"\n */\n\n .capture('paren.close', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\)/);\n if (!m) return;\n\n var parent = this.pop('paren');\n var node = pos({\n type: 'paren.close',\n rest: this.input,\n parsed: parsed,\n val: m[0]\n });\n\n if (!this.isType(parent, 'paren')) {\n if (this.options.strict) {\n throw new Error('missing opening paren: \"(\"');\n }\n node.escaped = true;\n return node;\n }\n\n node.prefix = parent.prefix;\n parent.nodes.push(node);\n define(node, 'parent', parent);\n })\n\n /**\n * Escape: \"\\\\.\"\n */\n\n .capture('escape', function() {\n var pos = this.position();\n var m = this.match(/^\\\\(.)/);\n if (!m) return;\n\n return pos({\n type: 'escape',\n val: m[0],\n ch: m[1]\n });\n })\n\n /**\n * Question marks: \"?\"\n */\n\n .capture('qmark', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\?+(?!\\()/);\n if (!m) return;\n extglob.state.metachar = true;\n return pos({\n type: 'qmark',\n rest: this.input,\n parsed: parsed,\n val: m[0]\n });\n })\n\n /**\n * Character parsers\n */\n\n .capture('star', /^\\*(?!\\()/)\n .capture('plus', /^\\+(?!\\()/)\n .capture('dot', /^\\./)\n .capture('text', not);\n};\n\n/**\n * Expose text regex string\n */\n\nmodule.exports.TEXT_REGEX = TEXT_REGEX;\n\n/**\n * Extglob parsers\n */\n\nmodule.exports = parsers;\n","'use strict';\n\nvar regex = require('regex-not');\nvar Cache = require('fragment-cache');\n\n/**\n * Utils\n */\n\nvar utils = module.exports;\nvar cache = utils.cache = new Cache();\n\n/**\n * Cast `val` to an array\n * @return {Array}\n */\n\nutils.arrayify = function(val) {\n if (!Array.isArray(val)) {\n return [val];\n }\n return val;\n};\n\n/**\n * Memoize a generated regex or function\n */\n\nutils.memoize = function(type, pattern, options, fn) {\n var key = utils.createKey(type + pattern, options);\n\n if (cache.has(type, key)) {\n return cache.get(type, key);\n }\n\n var val = fn(pattern, options);\n if (options && options.cache === false) {\n return val;\n }\n\n cache.set(type, key, val);\n return val;\n};\n\n/**\n * Create the key to use for memoization. The key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nutils.createKey = function(pattern, options) {\n var key = pattern;\n if (typeof options === 'undefined') {\n return key;\n }\n for (var prop in options) {\n key += ';' + prop + '=' + String(options[prop]);\n }\n return key;\n};\n\n/**\n * Create the regex to use for matching text\n */\n\nutils.createRegex = function(str) {\n var opts = {contains: true, strictClose: false};\n return regex(str, opts);\n};\n","/*!\n * define-property \n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isDescriptor = require('is-descriptor');\n\nmodule.exports = function defineProperty(obj, prop, val) {\n if (typeof obj !== 'object' && typeof obj !== 'function') {\n throw new TypeError('expected an object or function.');\n }\n\n if (typeof prop !== 'string') {\n throw new TypeError('expected `prop` to be a string.');\n }\n\n if (isDescriptor(val) && ('set' in val || 'get' in val)) {\n return Object.defineProperty(obj, prop, val);\n }\n\n return Object.defineProperty(obj, prop, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n};\n","/*!\n * for-in \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function forIn(obj, fn, thisArg) {\n for (var key in obj) {\n if (fn.call(thisArg, obj[key], key, obj) === false) {\n break;\n }\n }\n};\n","/*!\n * fragment-cache \n *\n * Copyright (c) 2016-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar MapCache = require('map-cache');\n\n/**\n * Create a new `FragmentCache` with an optional object to use for `caches`.\n *\n * ```js\n * var fragment = new FragmentCache();\n * ```\n * @name FragmentCache\n * @param {String} `cacheName`\n * @return {Object} Returns the [map-cache][] instance.\n * @api public\n */\n\nfunction FragmentCache(caches) {\n this.caches = caches || {};\n}\n\n/**\n * Prototype\n */\n\nFragmentCache.prototype = {\n\n /**\n * Get cache `name` from the `fragment.caches` object. Creates a new\n * `MapCache` if it doesn't already exist.\n *\n * ```js\n * var cache = fragment.cache('files');\n * console.log(fragment.caches.hasOwnProperty('files'));\n * //=> true\n * ```\n * @name .cache\n * @param {String} `cacheName`\n * @return {Object} Returns the [map-cache][] instance.\n * @api public\n */\n\n cache: function(cacheName) {\n return this.caches[cacheName] || (this.caches[cacheName] = new MapCache());\n },\n\n /**\n * Set a value for property `key` on cache `name`\n *\n * ```js\n * fragment.set('files', 'somefile.js', new File({path: 'somefile.js'}));\n * ```\n * @name .set\n * @param {String} `name`\n * @param {String} `key` Property name to set\n * @param {any} `val` The value of `key`\n * @return {Object} The cache instance for chaining\n * @api public\n */\n\n set: function(cacheName, key, val) {\n var cache = this.cache(cacheName);\n cache.set(key, val);\n return cache;\n },\n\n /**\n * Returns true if a non-undefined value is set for `key` on fragment cache `name`.\n *\n * ```js\n * var cache = fragment.cache('files');\n * cache.set('somefile.js');\n *\n * console.log(cache.has('somefile.js'));\n * //=> true\n *\n * console.log(cache.has('some-other-file.js'));\n * //=> false\n * ```\n * @name .has\n * @param {String} `name` Cache name\n * @param {String} `key` Optionally specify a property to check for on cache `name`\n * @return {Boolean}\n * @api public\n */\n\n has: function(cacheName, key) {\n return typeof this.get(cacheName, key) !== 'undefined';\n },\n\n /**\n * Get `name`, or if specified, the value of `key`. Invokes the [cache]() method,\n * so that cache `name` will be created it doesn't already exist. If `key` is not passed,\n * the entire cache (`name`) is returned.\n *\n * ```js\n * var Vinyl = require('vinyl');\n * var cache = fragment.cache('files');\n * cache.set('somefile.js', new Vinyl({path: 'somefile.js'}));\n * console.log(cache.get('somefile.js'));\n * //=> \n * ```\n * @name .get\n * @param {String} `name`\n * @return {Object} Returns cache `name`, or the value of `key` if specified\n * @api public\n */\n\n get: function(name, key) {\n var cache = this.cache(name);\n if (typeof key === 'string') {\n return cache.get(key);\n }\n return cache;\n }\n};\n\n/**\n * Expose `FragmentCache`\n */\n\nexports = module.exports = FragmentCache;\n","/*!\n * get-value \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function(obj, prop, a, b, c) {\n if (!isObject(obj) || !prop) {\n return obj;\n }\n\n prop = toString(prop);\n\n // allowing for multiple properties to be passed as\n // a string or array, but much faster (3-4x) than doing\n // `[].slice.call(arguments)`\n if (a) prop += '.' + toString(a);\n if (b) prop += '.' + toString(b);\n if (c) prop += '.' + toString(c);\n\n if (prop in obj) {\n return obj[prop];\n }\n\n var segs = prop.split('.');\n var len = segs.length;\n var i = -1;\n\n while (obj && (++i < len)) {\n var key = segs[i];\n while (key[key.length - 1] === '\\\\') {\n key = key.slice(0, -1) + '.' + segs[++i];\n }\n obj = obj[key];\n }\n return obj;\n};\n\nfunction isObject(val) {\n return val !== null && (typeof val === 'object' || typeof val === 'function');\n}\n\nfunction toString(val) {\n if (!val) return '';\n if (Array.isArray(val)) {\n return val.join('.');\n }\n return val;\n}\n","/*!\n * has-value \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\nvar hasValues = require('has-values');\nvar get = require('get-value');\n\nmodule.exports = function(val, prop) {\n return hasValues(isObject(val) && prop ? get(val, prop) : val);\n};\n","/*!\n * has-values \n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\nvar isNumber = require('is-number');\n\nmodule.exports = function hasValue(val) {\n // is-number checks for NaN and other edge cases\n if (isNumber(val)) {\n return true;\n }\n\n switch (typeOf(val)) {\n case 'null':\n case 'boolean':\n case 'function':\n return true;\n case 'string':\n case 'arguments':\n return val.length !== 0;\n case 'error':\n return val.message !== '';\n case 'array':\n var len = val.length;\n if (len === 0) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (hasValue(val[i])) {\n return true;\n }\n }\n return false;\n case 'file':\n case 'map':\n case 'set':\n return val.size !== 0;\n case 'object':\n var keys = Object.keys(val);\n if (keys.length === 0) {\n return false;\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (hasValue(val[key])) {\n return true;\n }\n }\n return false;\n default: {\n return false;\n }\n }\n};\n","var isBuffer = require('is-buffer');\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","/*!\n * is-accessor-descriptor \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\n// accessor descriptor properties\nvar accessor = {\n get: 'function',\n set: 'function',\n configurable: 'boolean',\n enumerable: 'boolean'\n};\n\nfunction isAccessorDescriptor(obj, prop) {\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (has(obj, 'value') || has(obj, 'writable')) {\n return false;\n }\n\n if (!has(obj, 'get') || typeof obj.get !== 'function') {\n return false;\n }\n\n // tldr: it's valid to have \"set\" be undefined\n // \"set\" might be undefined if `Object.getOwnPropertyDescriptor`\n // was used to get the value, and only `get` was defined by the user\n if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') {\n return false;\n }\n\n for (var key in obj) {\n if (!accessor.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === accessor[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n}\n\nfunction has(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n\n/**\n * Expose `isAccessorDescriptor`\n */\n\nmodule.exports = isAccessorDescriptor;\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","/*!\n * is-data-descriptor \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\nmodule.exports = function isDataDescriptor(obj, prop) {\n // data descriptor properties\n var data = {\n configurable: 'boolean',\n enumerable: 'boolean',\n writable: 'boolean'\n };\n\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (!('value' in obj) && !('writable' in obj)) {\n return false;\n }\n\n for (var key in obj) {\n if (key === 'value') continue;\n\n if (!data.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === data[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n};\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","/*!\n * is-descriptor \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\nvar isAccessor = require('is-accessor-descriptor');\nvar isData = require('is-data-descriptor');\n\nmodule.exports = function isDescriptor(obj, key) {\n if (typeOf(obj) !== 'object') {\n return false;\n }\n if ('get' in obj) {\n return isAccessor(obj, key);\n }\n return isData(obj, key);\n};\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n","/*!\n * is-number \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\nmodule.exports = function isNumber(num) {\n var type = typeOf(num);\n\n if (type === 'string') {\n if (!num.trim()) return false;\n } else if (type !== 'number') {\n return false;\n }\n\n return (num - num + 1) >= 0;\n};\n","/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","/*!\n * is-windows \n *\n * Copyright © 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n(function(factory) {\n if (exports && typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof window !== 'undefined') {\n window.isWindows = factory();\n } else if (typeof global !== 'undefined') {\n global.isWindows = factory();\n } else if (typeof self !== 'undefined') {\n self.isWindows = factory();\n } else {\n this.isWindows = factory();\n }\n})(function() {\n 'use strict';\n return function isWindows() {\n return process && (process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE));\n };\n});\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * isobject \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n var token = {type: \"invalid\", value: match[0], closed: undefined}\n if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n else if (match[ 5]) token.type = \"comment\"\n else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n else if (match[ 8]) token.type = \"regex\"\n else if (match[ 9]) token.type = \"number\"\n else if (match[10]) token.type = \"name\"\n else if (match[11]) token.type = \"punctuator\"\n else if (match[12]) token.type = \"whitespace\"\n return token\n}\n","var isBuffer = require('is-buffer');\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n","/*!\n * map-cache \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\n/**\n * Expose `MapCache`\n */\n\nmodule.exports = MapCache;\n\n/**\n * Creates a cache object to store key/value pairs.\n *\n * ```js\n * var cache = new MapCache();\n * ```\n *\n * @api public\n */\n\nfunction MapCache(data) {\n this.__data__ = data || {};\n}\n\n/**\n * Adds `value` to `key` on the cache.\n *\n * ```js\n * cache.set('foo', 'bar');\n * ```\n *\n * @param {String} `key` The key of the value to cache.\n * @param {*} `value` The value to cache.\n * @returns {Object} Returns the `Cache` object for chaining.\n * @api public\n */\n\nMapCache.prototype.set = function mapSet(key, value) {\n if (key !== '__proto__') {\n this.__data__[key] = value;\n }\n return this;\n};\n\n/**\n * Gets the cached value for `key`.\n *\n * ```js\n * cache.get('foo');\n * //=> 'bar'\n * ```\n *\n * @param {String} `key` The key of the value to get.\n * @returns {*} Returns the cached value.\n * @api public\n */\n\nMapCache.prototype.get = function mapGet(key) {\n return key === '__proto__' ? undefined : this.__data__[key];\n};\n\n/**\n * Checks if a cached value for `key` exists.\n *\n * ```js\n * cache.has('foo');\n * //=> true\n * ```\n *\n * @param {String} `key` The key of the entry to check.\n * @returns {Boolean} Returns `true` if an entry for `key` exists, else `false`.\n * @api public\n */\n\nMapCache.prototype.has = function mapHas(key) {\n return key !== '__proto__' && hasOwn.call(this.__data__, key);\n};\n\n/**\n * Removes `key` and its value from the cache.\n *\n * ```js\n * cache.del('foo');\n * ```\n * @title .del\n * @param {String} `key` The key of the value to remove.\n * @returns {Boolean} Returns `true` if the entry was removed successfully, else `false`.\n * @api public\n */\n\nMapCache.prototype.del = function mapDelete(key) {\n return this.has(key) && delete this.__data__[key];\n};\n","'use strict';\n\nvar util = require('util');\nvar visit = require('object-visit');\n\n/**\n * Map `visit` over an array of objects.\n *\n * @param {Object} `collection` The context in which to invoke `method`\n * @param {String} `method` Name of the method to call on `collection`\n * @param {Object} `arr` Array of objects.\n */\n\nmodule.exports = function mapVisit(collection, method, val) {\n if (isObject(val)) {\n return visit.apply(null, arguments);\n }\n\n if (!Array.isArray(val)) {\n throw new TypeError('expected an array: ' + util.inspect(val));\n }\n\n var args = [].slice.call(arguments, 3);\n\n for (var i = 0; i < val.length; i++) {\n var ele = val[i];\n if (isObject(ele)) {\n visit.apply(null, [collection, method, ele].concat(args));\n } else {\n collection[method].apply(collection, [ele].concat(args));\n }\n }\n};\n\nfunction isObject(val) {\n return val && (typeof val === 'function' || (!Array.isArray(val) && typeof val === 'object'));\n}\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar util = require('util');\nvar braces = require('braces');\nvar toRegex = require('to-regex');\nvar extend = require('extend-shallow');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\nvar cache = require('./lib/cache');\nvar utils = require('./lib/utils');\nvar MAX_LENGTH = 1024 * 64;\n\n/**\n * The main function takes a list of strings and one or more\n * glob patterns to use for matching.\n *\n * ```js\n * var mm = require('micromatch');\n * mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {Array} `list` A list of strings to match\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nfunction micromatch(list, patterns, options) {\n patterns = utils.arrayify(patterns);\n list = utils.arrayify(list);\n\n var len = patterns.length;\n if (list.length === 0 || len === 0) {\n return [];\n }\n\n if (len === 1) {\n return micromatch.match(list, patterns[0], options);\n }\n\n var omit = [];\n var keep = [];\n var idx = -1;\n\n while (++idx < len) {\n var pattern = patterns[idx];\n\n if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 /* ! */) {\n omit.push.apply(omit, micromatch.match(list, pattern.slice(1), options));\n } else {\n keep.push.apply(keep, micromatch.match(list, pattern, options));\n }\n }\n\n var matches = utils.diff(keep, omit);\n if (!options || options.nodupes !== false) {\n return utils.unique(matches);\n }\n\n return matches;\n}\n\n/**\n * Similar to the main function, but `pattern` must be a string.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.match(list, pattern[, options]);\n *\n * console.log(mm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a'));\n * //=> ['a.a', 'a.aa']\n * ```\n * @param {Array} `list` Array of strings to match\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of matches\n * @api public\n */\n\nmicromatch.match = function(list, pattern, options) {\n if (Array.isArray(pattern)) {\n throw new TypeError('expected pattern to be a string');\n }\n\n var unixify = utils.unixify(options);\n var isMatch = memoize('match', pattern, options, micromatch.matcher);\n var matches = [];\n\n list = utils.arrayify(list);\n var len = list.length;\n var idx = -1;\n\n while (++idx < len) {\n var ele = list[idx];\n if (ele === pattern || isMatch(ele)) {\n matches.push(utils.value(ele, unixify, options));\n }\n }\n\n // if no options were passed, uniquify results and return\n if (typeof options === 'undefined') {\n return utils.unique(matches);\n }\n\n if (matches.length === 0) {\n if (options.failglob === true) {\n throw new Error('no matches found for \"' + pattern + '\"');\n }\n if (options.nonull === true || options.nullglob === true) {\n return [options.unescape ? utils.unescape(pattern) : pattern];\n }\n }\n\n // if `opts.ignore` was defined, diff ignored list\n if (options.ignore) {\n matches = micromatch.not(matches, options.ignore, options);\n }\n\n return options.nodupes !== false ? utils.unique(matches) : matches;\n};\n\n/**\n * Returns true if the specified `string` matches the given glob `pattern`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.isMatch(string, pattern[, options]);\n *\n * console.log(mm.isMatch('a.a', '*.a'));\n * //=> true\n * console.log(mm.isMatch('a.b', '*.a'));\n * //=> false\n * ```\n * @param {String} `string` String to match\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if the string matches the glob pattern.\n * @api public\n */\n\nmicromatch.isMatch = function(str, pattern, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n var equals = utils.equalsPattern(options);\n if (equals(str)) {\n return true;\n }\n\n var isMatch = memoize('isMatch', pattern, options, micromatch.matcher);\n return isMatch(str);\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the\n * given glob `patterns`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.some = function(list, patterns, options) {\n if (typeof list === 'string') {\n list = [list];\n }\n for (var i = 0; i < list.length; i++) {\n if (micromatch(list[i], patterns, options).length === 1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.every = function(list, patterns, options) {\n if (typeof list === 'string') {\n list = [list];\n }\n for (var i = 0; i < list.length; i++) {\n if (micromatch(list[i], patterns, options).length !== 1) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **any** of the given glob `patterns`\n * match the specified `string`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.any(string, patterns[, options]);\n *\n * console.log(mm.any('a.a', ['b.*', '*.a']));\n * //=> true\n * console.log(mm.any('a.a', 'b.*'));\n * //=> false\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.any = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (isEmptyString(str) || isEmptyString(patterns)) {\n return false;\n }\n\n if (typeof patterns === 'string') {\n patterns = [patterns];\n }\n\n for (var i = 0; i < patterns.length; i++) {\n if (micromatch.isMatch(str, patterns[i], options)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n if (typeof patterns === 'string') {\n patterns = [patterns];\n }\n for (var i = 0; i < patterns.length; i++) {\n if (!micromatch.isMatch(str, patterns[i], options)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = function(list, patterns, options) {\n var opts = extend({}, options);\n var ignore = opts.ignore;\n delete opts.ignore;\n\n var unixify = utils.unixify(opts);\n list = utils.arrayify(list).map(unixify);\n\n var matches = utils.diff(list, micromatch(list, patterns, opts));\n if (ignore) {\n matches = utils.diff(matches, micromatch(list, ignore));\n }\n\n return opts.nodupes !== false ? utils.unique(matches) : matches;\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if the patter matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (typeof patterns === 'string') {\n if (isEmptyString(str) || isEmptyString(patterns)) {\n return false;\n }\n\n var equals = utils.equalsPattern(patterns, options);\n if (equals(str)) {\n return true;\n }\n var contains = utils.containsPattern(patterns, options);\n if (contains(str)) {\n return true;\n }\n }\n\n var opts = extend({}, options, {contains: true});\n return micromatch.any(str, patterns, opts);\n};\n\n/**\n * Returns true if the given pattern and options should enable\n * the `matchBase` option.\n * @return {Boolean}\n * @api private\n */\n\nmicromatch.matchBase = function(pattern, options) {\n if (pattern && pattern.indexOf('/') !== -1 || !options) return false;\n return options.basename === true || options.matchBase === true;\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.matchKeys(object, patterns[, options]);\n *\n * var obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = function(obj, patterns, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('expected the first argument to be an object');\n }\n var keys = micromatch(Object.keys(obj), patterns, options);\n return utils.pick(obj, keys);\n};\n\n/**\n * Returns a memoized matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.matcher(pattern[, options]);\n *\n * var isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a'));\n * //=> false\n * console.log(isMatch('a.b'));\n * //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options` See available [options](#options) for changing how matches are performed.\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = function matcher(pattern, options) {\n if (Array.isArray(pattern)) {\n return compose(pattern, options, matcher);\n }\n\n // if pattern is a regex\n if (pattern instanceof RegExp) {\n return test(pattern);\n }\n\n // if pattern is invalid\n if (!utils.isString(pattern)) {\n throw new TypeError('expected pattern to be an array, string or regex');\n }\n\n // if pattern is a non-glob string\n if (!utils.hasSpecialChars(pattern)) {\n if (options && options.nocase === true) {\n pattern = pattern.toLowerCase();\n }\n return utils.matchPath(pattern, options);\n }\n\n // if pattern is a glob string\n var re = micromatch.makeRe(pattern, options);\n\n // if `options.matchBase` or `options.basename` is defined\n if (micromatch.matchBase(pattern, options)) {\n return utils.matchBasename(re, options);\n }\n\n function test(regex) {\n var equals = utils.equalsPattern(options);\n var unixify = utils.unixify(options);\n\n return function(str) {\n if (equals(str)) {\n return true;\n }\n\n if (regex.test(unixify(str))) {\n return true;\n }\n return false;\n };\n }\n\n var fn = test(re);\n Object.defineProperty(fn, 'result', {\n configurable: true,\n enumerable: false,\n value: re.result\n });\n return fn;\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {String} `string` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = function(pattern, str, options) {\n var re = micromatch.makeRe(pattern, extend({capture: true}, options));\n var unixify = utils.unixify(options);\n\n function match() {\n return function(string) {\n var match = re.exec(unixify(string));\n if (!match) {\n return null;\n }\n\n return match.slice(1);\n };\n }\n\n var capture = memoize('capture', pattern, options, match);\n return capture(str);\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n if (pattern.length > MAX_LENGTH) {\n throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');\n }\n\n function makeRe() {\n var result = micromatch.create(pattern, options);\n var ast_array = [];\n var output = result.map(function(obj) {\n obj.ast.state = obj.state;\n ast_array.push(obj.ast);\n return obj.output;\n });\n\n var regex = toRegex(output.join('|'), options);\n Object.defineProperty(regex, 'result', {\n configurable: true,\n enumerable: false,\n value: ast_array\n });\n return regex;\n }\n\n return memoize('makeRe', pattern, options, makeRe);\n};\n\n/**\n * Expand the given brace `pattern`.\n *\n * ```js\n * var mm = require('micromatch');\n * console.log(mm.braces('foo/{a,b}/bar'));\n * //=> ['foo/(a|b)/bar']\n *\n * console.log(mm.braces('foo/{a,b}/bar', {expand: true}));\n * //=> ['foo/(a|b)/bar']\n * ```\n * @param {String} `pattern` String with brace pattern to expand.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = function(pattern, options) {\n if (typeof pattern !== 'string' && !Array.isArray(pattern)) {\n throw new TypeError('expected pattern to be an array or string');\n }\n\n function expand() {\n if (options && options.nobrace === true || !/\\{.*\\}/.test(pattern)) {\n return utils.arrayify(pattern);\n }\n return braces(pattern, options);\n }\n\n return memoize('braces', pattern, options, expand);\n};\n\n/**\n * Proxy to the [micromatch.braces](#method), for parity with\n * minimatch.\n */\n\nmicromatch.braceExpand = function(pattern, options) {\n var opts = extend({}, options, {expand: true});\n return micromatch.braces(pattern, opts);\n};\n\n/**\n * Parses the given glob `pattern` and returns an array of abstract syntax\n * trees (ASTs), with the compiled `output` and optional source `map` on\n * each AST.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.create(pattern[, options]);\n *\n * console.log(mm.create('abc/*.js'));\n * // [{ options: { source: 'string', sourcemap: true },\n * // state: {},\n * // compilers:\n * // { ... },\n * // output: '(\\\\.[\\\\\\\\\\\\/])?abc\\\\/(?!\\\\.)(?=.)[^\\\\/]*?\\\\.js',\n * // ast:\n * // { type: 'root',\n * // errors: [],\n * // nodes:\n * // [ ... ],\n * // dot: false,\n * // input: 'abc/*.js' },\n * // parsingErrors: [],\n * // map:\n * // { version: 3,\n * // sources: [ 'string' ],\n * // names: [],\n * // mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE',\n * // sourcesContent: [ 'abc/*.js' ] },\n * // position: { line: 1, column: 28 },\n * // content: {},\n * // files: {},\n * // idx: 6 }]\n * ```\n * @param {String} `pattern` Glob pattern to parse and compile.\n * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed.\n * @return {Object} Returns an object with the parsed AST, compiled string and optional source map.\n * @api public\n */\n\nmicromatch.create = function(pattern, options) {\n return memoize('create', pattern, options, function() {\n function create(str, opts) {\n return micromatch.compile(micromatch.parse(str, opts), opts);\n }\n\n pattern = micromatch.braces(pattern, options);\n var len = pattern.length;\n var idx = -1;\n var res = [];\n\n while (++idx < len) {\n res.push(create(pattern[idx], options));\n }\n return res;\n });\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.parse(pattern[, options]);\n *\n * var ast = mm.parse('a/{b,c}/d');\n * console.log(ast);\n * // { type: 'root',\n * // errors: [],\n * // input: 'a/{b,c}/d',\n * // nodes:\n * // [ { type: 'bos', val: '' },\n * // { type: 'text', val: 'a/' },\n * // { type: 'brace',\n * // nodes:\n * // [ { type: 'brace.open', val: '{' },\n * // { type: 'text', val: 'b,c' },\n * // { type: 'brace.close', val: '}' } ] },\n * // { type: 'text', val: '/d' },\n * // { type: 'eos', val: '' } ] }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an AST\n * @api public\n */\n\nmicromatch.parse = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n function parse() {\n var snapdragon = utils.instantiate(null, options);\n parsers(snapdragon, options);\n\n var ast = snapdragon.parse(pattern, options);\n utils.define(ast, 'snapdragon', snapdragon);\n ast.input = pattern;\n return ast;\n }\n\n return memoize('parse', pattern, options, parse);\n};\n\n/**\n * Compile the given `ast` or string with the given `options`.\n *\n * ```js\n * var mm = require('micromatch');\n * mm.compile(ast[, options]);\n *\n * var ast = mm.parse('a/{b,c}/d');\n * console.log(mm.compile(ast));\n * // { options: { source: 'string' },\n * // state: {},\n * // compilers:\n * // { eos: [Function],\n * // noop: [Function],\n * // bos: [Function],\n * // brace: [Function],\n * // 'brace.open': [Function],\n * // text: [Function],\n * // 'brace.close': [Function] },\n * // output: [ 'a/(b|c)/d' ],\n * // ast:\n * // { ... },\n * // parsingErrors: [] }\n * ```\n * @param {Object|String} `ast`\n * @param {Object} `options`\n * @return {Object} Returns an object that has an `output` property with the compiled string.\n * @api public\n */\n\nmicromatch.compile = function(ast, options) {\n if (typeof ast === 'string') {\n ast = micromatch.parse(ast, options);\n }\n\n return memoize('compile', ast.input, options, function() {\n var snapdragon = utils.instantiate(ast, options);\n compilers(snapdragon, options);\n return snapdragon.compile(ast, options);\n });\n};\n\n/**\n * Clear the regex cache.\n *\n * ```js\n * mm.clearCache();\n * ```\n * @api public\n */\n\nmicromatch.clearCache = function() {\n micromatch.cache.caches = {};\n};\n\n/**\n * Returns true if the given value is effectively an empty string\n */\n\nfunction isEmptyString(val) {\n return String(val) === '' || String(val) === './';\n}\n\n/**\n * Compose a matcher function with the given patterns.\n * This allows matcher functions to be compiled once and\n * called multiple times.\n */\n\nfunction compose(patterns, options, matcher) {\n var matchers;\n\n return memoize('compose', String(patterns), options, function() {\n return function(file) {\n // delay composition until it's invoked the first time,\n // after that it won't be called again\n if (!matchers) {\n matchers = [];\n for (var i = 0; i < patterns.length; i++) {\n matchers.push(matcher(patterns[i], options));\n }\n }\n\n var len = matchers.length;\n while (len--) {\n if (matchers[len](file) === true) {\n return true;\n }\n }\n return false;\n };\n });\n}\n\n/**\n * Memoize a generated regex or function. A unique key is generated\n * from the `type` (usually method name), the `pattern`, and\n * user-defined options.\n */\n\nfunction memoize(type, pattern, options, fn) {\n var key = utils.createKey(type + '=' + pattern, options);\n\n if (options && options.cache === false) {\n return fn(pattern, options);\n }\n\n if (cache.has(type, key)) {\n return cache.get(type, key);\n }\n\n var val = fn(pattern, options);\n cache.set(type, key, val);\n return val;\n}\n\n/**\n * Expose compiler, parser and cache on `micromatch`\n */\n\nmicromatch.compilers = compilers;\nmicromatch.parsers = parsers;\nmicromatch.caches = cache.caches;\n\n/**\n * Expose `micromatch`\n * @type {Function}\n */\n\nmodule.exports = micromatch;\n","module.exports = new (require('fragment-cache'))();\n","'use strict';\n\nvar nanomatch = require('nanomatch');\nvar extglob = require('extglob');\n\nmodule.exports = function(snapdragon) {\n var compilers = snapdragon.compiler.compilers;\n var opts = snapdragon.options;\n\n // register nanomatch compilers\n snapdragon.use(nanomatch.compilers);\n\n // get references to some specific nanomatch compilers before they\n // are overridden by the extglob and/or custom compilers\n var escape = compilers.escape;\n var qmark = compilers.qmark;\n var slash = compilers.slash;\n var star = compilers.star;\n var text = compilers.text;\n var plus = compilers.plus;\n var dot = compilers.dot;\n\n // register extglob compilers or escape exglobs if disabled\n if (opts.extglob === false || opts.noext === true) {\n snapdragon.compiler.use(escapeExtglobs);\n } else {\n snapdragon.use(extglob.compilers);\n }\n\n snapdragon.use(function() {\n this.options.star = this.options.star || function(/*node*/) {\n return '[^\\\\\\\\/]*?';\n };\n });\n\n // custom micromatch compilers\n snapdragon.compiler\n\n // reset referenced compiler\n .set('dot', dot)\n .set('escape', escape)\n .set('plus', plus)\n .set('slash', slash)\n .set('qmark', qmark)\n .set('star', star)\n .set('text', text);\n};\n\nfunction escapeExtglobs(compiler) {\n compiler.set('paren', function(node) {\n var val = '';\n visit(node, function(tok) {\n if (tok.val) val += (/^\\W/.test(tok.val) ? '\\\\' : '') + tok.val;\n });\n return this.emit(val, node);\n });\n\n /**\n * Visit `node` with the given `fn`\n */\n\n function visit(node, fn) {\n return node.nodes ? mapVisit(node.nodes, fn) : fn(node);\n }\n\n /**\n * Map visit over array of `nodes`.\n */\n\n function mapVisit(nodes, fn) {\n var len = nodes.length;\n var idx = -1;\n while (++idx < len) {\n visit(nodes[idx], fn);\n }\n }\n}\n","'use strict';\n\nvar extglob = require('extglob');\nvar nanomatch = require('nanomatch');\nvar regexNot = require('regex-not');\nvar toRegex = require('to-regex');\nvar not;\n\n/**\n * Characters to use in negation regex (we want to \"not\" match\n * characters that are matched by other parsers)\n */\n\nvar TEXT = '([!@*?+]?\\\\(|\\\\)|\\\\[:?(?=.*?:?\\\\])|:?\\\\]|[*+?!^$.\\\\\\\\/])+';\nvar createNotRegex = function(opts) {\n return not || (not = textRegex(TEXT));\n};\n\n/**\n * Parsers\n */\n\nmodule.exports = function(snapdragon) {\n var parsers = snapdragon.parser.parsers;\n\n // register nanomatch parsers\n snapdragon.use(nanomatch.parsers);\n\n // get references to some specific nanomatch parsers before they\n // are overridden by the extglob and/or parsers\n var escape = parsers.escape;\n var slash = parsers.slash;\n var qmark = parsers.qmark;\n var plus = parsers.plus;\n var star = parsers.star;\n var dot = parsers.dot;\n\n // register extglob parsers\n snapdragon.use(extglob.parsers);\n\n // custom micromatch parsers\n snapdragon.parser\n .use(function() {\n // override \"notRegex\" created in nanomatch parser\n this.notRegex = /^\\!+(?!\\()/;\n })\n // reset the referenced parsers\n .capture('escape', escape)\n .capture('slash', slash)\n .capture('qmark', qmark)\n .capture('star', star)\n .capture('plus', plus)\n .capture('dot', dot)\n\n /**\n * Override `text` parser\n */\n\n .capture('text', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(createNotRegex(this.options));\n if (!m || !m[0]) return;\n\n // escape regex boundary characters and simple brackets\n var val = m[0].replace(/([[\\]^$])/g, '\\\\$1');\n\n return pos({\n type: 'text',\n val: val\n });\n });\n};\n\n/**\n * Create text regex\n */\n\nfunction textRegex(pattern) {\n var notStr = regexNot.create(pattern, {contains: true, strictClose: false});\n var prefix = '(?:[\\\\^]|\\\\\\\\|';\n return toRegex(prefix + notStr + ')', {strictClose: false});\n}\n","'use strict';\n\nvar utils = module.exports;\nvar path = require('path');\n\n/**\n * Module dependencies\n */\n\nvar Snapdragon = require('snapdragon');\nutils.define = require('define-property');\nutils.diff = require('arr-diff');\nutils.extend = require('extend-shallow');\nutils.pick = require('object.pick');\nutils.typeOf = require('kind-of');\nutils.unique = require('array-unique');\n\n/**\n * Returns true if the platform is windows, or `path.sep` is `\\\\`.\n * This is defined as a function to allow `path.sep` to be set in unit tests,\n * or by the user, if there is a reason to do so.\n * @return {Boolean}\n */\n\nutils.isWindows = function() {\n return path.sep === '\\\\' || process.platform === 'win32';\n};\n\n/**\n * Get the `Snapdragon` instance to use\n */\n\nutils.instantiate = function(ast, options) {\n var snapdragon;\n // if an instance was created by `.parse`, use that instance\n if (utils.typeOf(ast) === 'object' && ast.snapdragon) {\n snapdragon = ast.snapdragon;\n // if the user supplies an instance on options, use that instance\n } else if (utils.typeOf(options) === 'object' && options.snapdragon) {\n snapdragon = options.snapdragon;\n // create a new instance\n } else {\n snapdragon = new Snapdragon(options);\n }\n\n utils.define(snapdragon, 'parse', function(str, options) {\n var parsed = Snapdragon.prototype.parse.apply(this, arguments);\n parsed.input = str;\n\n // escape unmatched brace/bracket/parens\n var last = this.parser.stack.pop();\n if (last && this.options.strictErrors !== true) {\n var open = last.nodes[0];\n var inner = last.nodes[1];\n if (last.type === 'bracket') {\n if (inner.val.charAt(0) === '[') {\n inner.val = '\\\\' + inner.val;\n }\n\n } else {\n open.val = '\\\\' + open.val;\n var sibling = open.parent.nodes[1];\n if (sibling.type === 'star') {\n sibling.loose = true;\n }\n }\n }\n\n // add non-enumerable parser reference\n utils.define(parsed, 'parser', this.parser);\n return parsed;\n });\n\n return snapdragon;\n};\n\n/**\n * Create the key to use for memoization. The key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nutils.createKey = function(pattern, options) {\n if (utils.typeOf(options) !== 'object') {\n return pattern;\n }\n var val = pattern;\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n val += ';' + key + '=' + String(options[key]);\n }\n return val;\n};\n\n/**\n * Cast `val` to an array\n * @return {Array}\n */\n\nutils.arrayify = function(val) {\n if (typeof val === 'string') return [val];\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isString = function(val) {\n return typeof val === 'string';\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isObject = function(val) {\n return utils.typeOf(val) === 'object';\n};\n\n/**\n * Returns true if the given `str` has special characters\n */\n\nutils.hasSpecialChars = function(str) {\n return /(?:(?:(^|\\/)[!.])|[*?+()|\\[\\]{}]|[+@]\\()/.test(str);\n};\n\n/**\n * Escape regex characters in the given string\n */\n\nutils.escapeRegex = function(str) {\n return str.replace(/[-[\\]{}()^$|*+?.\\\\\\/\\s]/g, '\\\\$&');\n};\n\n/**\n * Normalize slashes in the given filepath.\n *\n * @param {String} `filepath`\n * @return {String}\n */\n\nutils.toPosixPath = function(str) {\n return str.replace(/\\\\+/g, '/');\n};\n\n/**\n * Strip backslashes before special characters in a string.\n *\n * @param {String} `str`\n * @return {String}\n */\n\nutils.unescape = function(str) {\n return utils.toPosixPath(str.replace(/\\\\(?=[*+?!.])/g, ''));\n};\n\n/**\n * Strip the prefix from a filepath\n * @param {String} `fp`\n * @return {String}\n */\n\nutils.stripPrefix = function(str) {\n if (str.charAt(0) !== '.') {\n return str;\n }\n var ch = str.charAt(1);\n if (utils.isSlash(ch)) {\n return str.slice(2);\n }\n return str;\n};\n\n/**\n * Returns true if the given str is an escaped or\n * unescaped path character\n */\n\nutils.isSlash = function(str) {\n return str === '/' || str === '\\\\/' || str === '\\\\' || str === '\\\\\\\\';\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern matches or contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.matchPath = function(pattern, options) {\n return (options && options.contains)\n ? utils.containsPattern(pattern, options)\n : utils.equalsPattern(pattern, options);\n};\n\n/**\n * Returns true if the given (original) filepath or unixified path are equal\n * to the given pattern.\n */\n\nutils._equals = function(filepath, unixPath, pattern) {\n return pattern === filepath || pattern === unixPath;\n};\n\n/**\n * Returns true if the given (original) filepath or unixified path contain\n * the given pattern.\n */\n\nutils._contains = function(filepath, unixPath, pattern) {\n return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1;\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern is the same as a given `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.equalsPattern = function(pattern, options) {\n var unixify = utils.unixify(options);\n options = options || {};\n\n return function fn(filepath) {\n var equal = utils._equals(filepath, unixify(filepath), pattern);\n if (equal === true || options.nocase !== true) {\n return equal;\n }\n var lower = filepath.toLowerCase();\n return utils._equals(lower, unixify(lower), pattern);\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.containsPattern = function(pattern, options) {\n var unixify = utils.unixify(options);\n options = options || {};\n\n return function(filepath) {\n var contains = utils._contains(filepath, unixify(filepath), pattern);\n if (contains === true || options.nocase !== true) {\n return contains;\n }\n var lower = filepath.toLowerCase();\n return utils._contains(lower, unixify(lower), pattern);\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * regex matches the `filename` of a file path.\n *\n * @param {RegExp} `re` Matching regex\n * @return {Function}\n */\n\nutils.matchBasename = function(re) {\n return function(filepath) {\n return re.test(path.basename(filepath));\n };\n};\n\n/**\n * Determines the filepath to return based on the provided options.\n * @return {any}\n */\n\nutils.value = function(str, unixify, options) {\n if (options && options.unixify === false) {\n return str;\n }\n return unixify(str);\n};\n\n/**\n * Returns a function that normalizes slashes in a string to forward\n * slashes, strips `./` from beginning of paths, and optionally unescapes\n * special characters.\n * @return {Function}\n */\n\nutils.unixify = function(options) {\n options = options || {};\n return function(filepath) {\n if (utils.isWindows() || options.unixify === true) {\n filepath = utils.toPosixPath(filepath);\n }\n if (options.stripPrefix !== false) {\n filepath = utils.stripPrefix(filepath);\n }\n if (options.unescape === true) {\n filepath = utils.unescape(filepath);\n }\n return filepath;\n };\n};\n","/*!\n * define-property \n *\n * Copyright (c) 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isobject = require('isobject');\nvar isDescriptor = require('is-descriptor');\nvar define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)\n ? Reflect.defineProperty\n : Object.defineProperty;\n\nmodule.exports = function defineProperty(obj, key, val) {\n if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) {\n throw new TypeError('expected an object, function, or array');\n }\n\n if (typeof key !== 'string') {\n throw new TypeError('expected \"key\" to be a string');\n }\n\n if (isDescriptor(val)) {\n define(obj, key, val);\n return obj;\n }\n\n define(obj, key, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n\n return obj;\n};\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar forIn = require('for-in');\n\nfunction mixinDeep(target, objects) {\n var len = arguments.length, i = 0;\n while (++i < len) {\n var obj = arguments[i];\n if (isObject(obj)) {\n forIn(obj, copy, target);\n }\n }\n return target;\n}\n\n/**\n * Copy properties from the source object to the\n * target object.\n *\n * @param {*} `val`\n * @param {String} `key`\n */\n\nfunction copy(val, key) {\n if (key === '__proto__') {\n return;\n }\n\n var obj = this[key];\n if (isObject(val) && isObject(obj)) {\n mixinDeep(obj, val);\n } else {\n this[key] = val;\n }\n}\n\n/**\n * Returns true if `val` is an object or function.\n *\n * @param {any} val\n * @return {Boolean}\n */\n\nfunction isObject(val) {\n return isExtendable(val) && !Array.isArray(val);\n}\n\n/**\n * Expose `mixinDeep`\n */\n\nmodule.exports = mixinDeep;\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar util = require('util');\nvar toRegex = require('to-regex');\nvar extend = require('extend-shallow');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\nvar cache = require('./lib/cache');\nvar utils = require('./lib/utils');\nvar MAX_LENGTH = 1024 * 64;\n\n/**\n * The main function takes a list of strings and one or more\n * glob patterns to use for matching.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm(list, patterns[, options]);\n *\n * console.log(nm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {Array} `list` A list of strings to match\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nfunction nanomatch(list, patterns, options) {\n patterns = utils.arrayify(patterns);\n list = utils.arrayify(list);\n\n var len = patterns.length;\n if (list.length === 0 || len === 0) {\n return [];\n }\n\n if (len === 1) {\n return nanomatch.match(list, patterns[0], options);\n }\n\n var negated = false;\n var omit = [];\n var keep = [];\n var idx = -1;\n\n while (++idx < len) {\n var pattern = patterns[idx];\n\n if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 /* ! */) {\n omit.push.apply(omit, nanomatch.match(list, pattern.slice(1), options));\n negated = true;\n } else {\n keep.push.apply(keep, nanomatch.match(list, pattern, options));\n }\n }\n\n // minimatch.match parity\n if (negated && keep.length === 0) {\n if (options && options.unixify === false) {\n keep = list.slice();\n } else {\n var unixify = utils.unixify(options);\n for (var i = 0; i < list.length; i++) {\n keep.push(unixify(list[i]));\n }\n }\n }\n\n var matches = utils.diff(keep, omit);\n if (!options || options.nodupes !== false) {\n return utils.unique(matches);\n }\n\n return matches;\n}\n\n/**\n * Similar to the main function, but `pattern` must be a string.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.match(list, pattern[, options]);\n *\n * console.log(nm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a'));\n * //=> ['a.a', 'a.aa']\n * ```\n * @param {Array} `list` Array of strings to match\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of matches\n * @api public\n */\n\nnanomatch.match = function(list, pattern, options) {\n if (Array.isArray(pattern)) {\n throw new TypeError('expected pattern to be a string');\n }\n\n var unixify = utils.unixify(options);\n var isMatch = memoize('match', pattern, options, nanomatch.matcher);\n var matches = [];\n\n list = utils.arrayify(list);\n var len = list.length;\n var idx = -1;\n\n while (++idx < len) {\n var ele = list[idx];\n if (ele === pattern || isMatch(ele)) {\n matches.push(utils.value(ele, unixify, options));\n }\n }\n\n // if no options were passed, uniquify results and return\n if (typeof options === 'undefined') {\n return utils.unique(matches);\n }\n\n if (matches.length === 0) {\n if (options.failglob === true) {\n throw new Error('no matches found for \"' + pattern + '\"');\n }\n if (options.nonull === true || options.nullglob === true) {\n return [options.unescape ? utils.unescape(pattern) : pattern];\n }\n }\n\n // if `opts.ignore` was defined, diff ignored list\n if (options.ignore) {\n matches = nanomatch.not(matches, options.ignore, options);\n }\n\n return options.nodupes !== false ? utils.unique(matches) : matches;\n};\n\n/**\n * Returns true if the specified `string` matches the given glob `pattern`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.isMatch(string, pattern[, options]);\n *\n * console.log(nm.isMatch('a.a', '*.a'));\n * //=> true\n * console.log(nm.isMatch('a.b', '*.a'));\n * //=> false\n * ```\n * @param {String} `string` String to match\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if the string matches the glob pattern.\n * @api public\n */\n\nnanomatch.isMatch = function(str, pattern, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (utils.isEmptyString(str) || utils.isEmptyString(pattern)) {\n return false;\n }\n\n var equals = utils.equalsPattern(options);\n if (equals(str)) {\n return true;\n }\n\n var isMatch = memoize('isMatch', pattern, options, nanomatch.matcher);\n return isMatch(str);\n};\n\n/**\n * Returns true if some of the elements in the given `list` match any of the\n * given glob `patterns`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.some(list, patterns[, options]);\n *\n * console.log(nm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(nm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nnanomatch.some = function(list, patterns, options) {\n if (typeof list === 'string') {\n list = [list];\n }\n\n for (var i = 0; i < list.length; i++) {\n if (nanomatch(list[i], patterns, options).length === 1) {\n return true;\n }\n }\n\n return false;\n};\n\n/**\n * Returns true if every element in the given `list` matches\n * at least one of the given glob `patterns`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.every(list, patterns[, options]);\n *\n * console.log(nm.every('foo.js', ['foo.js']));\n * // true\n * console.log(nm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(nm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(nm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nnanomatch.every = function(list, patterns, options) {\n if (typeof list === 'string') {\n list = [list];\n }\n\n for (var i = 0; i < list.length; i++) {\n if (nanomatch(list[i], patterns, options).length !== 1) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Returns true if **any** of the given glob `patterns`\n * match the specified `string`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.any(string, patterns[, options]);\n *\n * console.log(nm.any('a.a', ['b.*', '*.a']));\n * //=> true\n * console.log(nm.any('a.a', 'b.*'));\n * //=> false\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nnanomatch.any = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) {\n return false;\n }\n\n if (typeof patterns === 'string') {\n patterns = [patterns];\n }\n\n for (var i = 0; i < patterns.length; i++) {\n if (nanomatch.isMatch(str, patterns[i], options)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if **all** of the given `patterns`\n * match the specified string.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.all(string, patterns[, options]);\n *\n * console.log(nm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(nm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(nm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(nm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nnanomatch.all = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (typeof patterns === 'string') {\n patterns = [patterns];\n }\n\n for (var i = 0; i < patterns.length; i++) {\n if (!nanomatch.isMatch(str, patterns[i], options)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.not(list, patterns[, options]);\n *\n * console.log(nm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nnanomatch.not = function(list, patterns, options) {\n var opts = extend({}, options);\n var ignore = opts.ignore;\n delete opts.ignore;\n\n list = utils.arrayify(list);\n\n var matches = utils.diff(list, nanomatch(list, patterns, opts));\n if (ignore) {\n matches = utils.diff(matches, nanomatch(list, ignore));\n }\n\n return opts.nodupes !== false ? utils.unique(matches) : matches;\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.contains(string, pattern[, options]);\n *\n * console.log(nm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(nm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if the patter matches any part of `str`.\n * @api public\n */\n\nnanomatch.contains = function(str, patterns, options) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string: \"' + util.inspect(str) + '\"');\n }\n\n if (typeof patterns === 'string') {\n if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) {\n return false;\n }\n\n var equals = utils.equalsPattern(patterns, options);\n if (equals(str)) {\n return true;\n }\n var contains = utils.containsPattern(patterns, options);\n if (contains(str)) {\n return true;\n }\n }\n\n var opts = extend({}, options, {contains: true});\n return nanomatch.any(str, patterns, opts);\n};\n\n/**\n * Returns true if the given pattern and options should enable\n * the `matchBase` option.\n * @return {Boolean}\n * @api private\n */\n\nnanomatch.matchBase = function(pattern, options) {\n if (pattern && pattern.indexOf('/') !== -1 || !options) return false;\n return options.basename === true || options.matchBase === true;\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.matchKeys(object, patterns[, options]);\n *\n * var obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(nm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nnanomatch.matchKeys = function(obj, patterns, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('expected the first argument to be an object');\n }\n var keys = nanomatch(Object.keys(obj), patterns, options);\n return utils.pick(obj, keys);\n};\n\n/**\n * Returns a memoized matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.matcher(pattern[, options]);\n *\n * var isMatch = nm.matcher('*.!(*a)');\n * console.log(isMatch('a.a'));\n * //=> false\n * console.log(isMatch('a.b'));\n * //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options` See available [options](#options) for changing how matches are performed.\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nnanomatch.matcher = function matcher(pattern, options) {\n if (utils.isEmptyString(pattern)) {\n return function() {\n return false;\n };\n }\n\n if (Array.isArray(pattern)) {\n return compose(pattern, options, matcher);\n }\n\n // if pattern is a regex\n if (pattern instanceof RegExp) {\n return test(pattern);\n }\n\n // if pattern is invalid\n if (!utils.isString(pattern)) {\n throw new TypeError('expected pattern to be an array, string or regex');\n }\n\n // if pattern is a non-glob string\n if (!utils.hasSpecialChars(pattern)) {\n if (options && options.nocase === true) {\n pattern = pattern.toLowerCase();\n }\n return utils.matchPath(pattern, options);\n }\n\n // if pattern is a glob string\n var re = nanomatch.makeRe(pattern, options);\n\n // if `options.matchBase` or `options.basename` is defined\n if (nanomatch.matchBase(pattern, options)) {\n return utils.matchBasename(re, options);\n }\n\n function test(regex) {\n var equals = utils.equalsPattern(options);\n var unixify = utils.unixify(options);\n\n return function(str) {\n if (equals(str)) {\n return true;\n }\n\n if (regex.test(unixify(str))) {\n return true;\n }\n return false;\n };\n }\n\n // create matcher function\n var matcherFn = test(re);\n // set result object from compiler on matcher function,\n // as a non-enumerable property. useful for debugging\n utils.define(matcherFn, 'result', re.result);\n return matcherFn;\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or\n * `null` if the pattern did not match.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.capture(pattern, string[, options]);\n *\n * console.log(nm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(nm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `pattern` Glob pattern to use for matching.\n * @param {String} `string` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nnanomatch.capture = function(pattern, str, options) {\n var re = nanomatch.makeRe(pattern, extend({capture: true}, options));\n var unixify = utils.unixify(options);\n\n function match() {\n return function(string) {\n var match = re.exec(unixify(string));\n if (!match) {\n return null;\n }\n\n return match.slice(1);\n };\n }\n\n var capture = memoize('capture', pattern, options, match);\n return capture(str);\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.makeRe(pattern[, options]);\n *\n * console.log(nm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nnanomatch.makeRe = function(pattern, options) {\n if (pattern instanceof RegExp) {\n return pattern;\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('expected pattern to be a string');\n }\n\n if (pattern.length > MAX_LENGTH) {\n throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');\n }\n\n function makeRe() {\n var opts = utils.extend({wrap: false}, options);\n var result = nanomatch.create(pattern, opts);\n var regex = toRegex(result.output, opts);\n utils.define(regex, 'result', result);\n return regex;\n }\n\n return memoize('makeRe', pattern, options, makeRe);\n};\n\n/**\n * Parses the given glob `pattern` and returns an object with the compiled `output`\n * and optional source `map`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.create(pattern[, options]);\n *\n * console.log(nm.create('abc/*.js'));\n * // { options: { source: 'string', sourcemap: true },\n * // state: {},\n * // compilers:\n * // { ... },\n * // output: '(\\\\.[\\\\\\\\\\\\/])?abc\\\\/(?!\\\\.)(?=.)[^\\\\/]*?\\\\.js',\n * // ast:\n * // { type: 'root',\n * // errors: [],\n * // nodes:\n * // [ ... ],\n * // dot: false,\n * // input: 'abc/*.js' },\n * // parsingErrors: [],\n * // map:\n * // { version: 3,\n * // sources: [ 'string' ],\n * // names: [],\n * // mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE',\n * // sourcesContent: [ 'abc/*.js' ] },\n * // position: { line: 1, column: 28 },\n * // content: {},\n * // files: {},\n * // idx: 6 }\n * ```\n * @param {String} `pattern` Glob pattern to parse and compile.\n * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed.\n * @return {Object} Returns an object with the parsed AST, compiled string and optional source map.\n * @api public\n */\n\nnanomatch.create = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n function create() {\n return nanomatch.compile(nanomatch.parse(pattern, options), options);\n }\n return memoize('create', pattern, options, create);\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.parse(pattern[, options]);\n *\n * var ast = nm.parse('a/{b,c}/d');\n * console.log(ast);\n * // { type: 'root',\n * // errors: [],\n * // input: 'a/{b,c}/d',\n * // nodes:\n * // [ { type: 'bos', val: '' },\n * // { type: 'text', val: 'a/' },\n * // { type: 'brace',\n * // nodes:\n * // [ { type: 'brace.open', val: '{' },\n * // { type: 'text', val: 'b,c' },\n * // { type: 'brace.close', val: '}' } ] },\n * // { type: 'text', val: '/d' },\n * // { type: 'eos', val: '' } ] }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an AST\n * @api public\n */\n\nnanomatch.parse = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n function parse() {\n var snapdragon = utils.instantiate(null, options);\n parsers(snapdragon, options);\n\n var ast = snapdragon.parse(pattern, options);\n utils.define(ast, 'snapdragon', snapdragon);\n ast.input = pattern;\n return ast;\n }\n\n return memoize('parse', pattern, options, parse);\n};\n\n/**\n * Compile the given `ast` or string with the given `options`.\n *\n * ```js\n * var nm = require('nanomatch');\n * nm.compile(ast[, options]);\n *\n * var ast = nm.parse('a/{b,c}/d');\n * console.log(nm.compile(ast));\n * // { options: { source: 'string' },\n * // state: {},\n * // compilers:\n * // { eos: [Function],\n * // noop: [Function],\n * // bos: [Function],\n * // brace: [Function],\n * // 'brace.open': [Function],\n * // text: [Function],\n * // 'brace.close': [Function] },\n * // output: [ 'a/(b|c)/d' ],\n * // ast:\n * // { ... },\n * // parsingErrors: [] }\n * ```\n * @param {Object|String} `ast`\n * @param {Object} `options`\n * @return {Object} Returns an object that has an `output` property with the compiled string.\n * @api public\n */\n\nnanomatch.compile = function(ast, options) {\n if (typeof ast === 'string') {\n ast = nanomatch.parse(ast, options);\n }\n\n function compile() {\n var snapdragon = utils.instantiate(ast, options);\n compilers(snapdragon, options);\n return snapdragon.compile(ast, options);\n }\n\n return memoize('compile', ast.input, options, compile);\n};\n\n/**\n * Clear the regex cache.\n *\n * ```js\n * nm.clearCache();\n * ```\n * @api public\n */\n\nnanomatch.clearCache = function() {\n nanomatch.cache.__data__ = {};\n};\n\n/**\n * Compose a matcher function with the given patterns.\n * This allows matcher functions to be compiled once and\n * called multiple times.\n */\n\nfunction compose(patterns, options, matcher) {\n var matchers;\n\n return memoize('compose', String(patterns), options, function() {\n return function(file) {\n // delay composition until it's invoked the first time,\n // after that it won't be called again\n if (!matchers) {\n matchers = [];\n for (var i = 0; i < patterns.length; i++) {\n matchers.push(matcher(patterns[i], options));\n }\n }\n\n var len = matchers.length;\n while (len--) {\n if (matchers[len](file) === true) {\n return true;\n }\n }\n return false;\n };\n });\n}\n\n/**\n * Memoize a generated regex or function. A unique key is generated\n * from the `type` (usually method name), the `pattern`, and\n * user-defined options.\n */\n\nfunction memoize(type, pattern, options, fn) {\n var key = utils.createKey(type + '=' + pattern, options);\n\n if (options && options.cache === false) {\n return fn(pattern, options);\n }\n\n if (cache.has(type, key)) {\n return cache.get(type, key);\n }\n\n var val = fn(pattern, options);\n cache.set(type, key, val);\n return val;\n}\n\n/**\n * Expose compiler, parser and cache on `nanomatch`\n */\n\nnanomatch.compilers = compilers;\nnanomatch.parsers = parsers;\nnanomatch.cache = cache;\n\n/**\n * Expose `nanomatch`\n * @type {Function}\n */\n\nmodule.exports = nanomatch;\n","module.exports = new (require('fragment-cache'))();\n","'use strict';\n\n/**\n* Nanomatch compilers\n*/\n\nmodule.exports = function(nanomatch, options) {\n function slash() {\n if (options && typeof options.slash === 'string') {\n return options.slash;\n }\n if (options && typeof options.slash === 'function') {\n return options.slash.call(nanomatch);\n }\n return '\\\\\\\\/';\n }\n\n function star() {\n if (options && typeof options.star === 'string') {\n return options.star;\n }\n if (options && typeof options.star === 'function') {\n return options.star.call(nanomatch);\n }\n return '[^' + slash() + ']*?';\n }\n\n var ast = nanomatch.ast = nanomatch.parser.ast;\n ast.state = nanomatch.parser.state;\n nanomatch.compiler.state = ast.state;\n nanomatch.compiler\n\n /**\n * Negation / escaping\n */\n\n .set('not', function(node) {\n var prev = this.prev();\n if (this.options.nonegate === true || prev.type !== 'bos') {\n return this.emit('\\\\' + node.val, node);\n }\n return this.emit(node.val, node);\n })\n .set('escape', function(node) {\n if (this.options.unescape && /^[-\\w_.]/.test(node.val)) {\n return this.emit(node.val, node);\n }\n return this.emit('\\\\' + node.val, node);\n })\n .set('quoted', function(node) {\n return this.emit(node.val, node);\n })\n\n /**\n * Regex\n */\n\n .set('dollar', function(node) {\n if (node.parent.type === 'bracket') {\n return this.emit(node.val, node);\n }\n return this.emit('\\\\' + node.val, node);\n })\n\n /**\n * Dot: \".\"\n */\n\n .set('dot', function(node) {\n if (node.dotfiles === true) this.dotfiles = true;\n return this.emit('\\\\' + node.val, node);\n })\n\n /**\n * Slashes: \"/\" and \"\\\"\n */\n\n .set('backslash', function(node) {\n return this.emit(node.val, node);\n })\n .set('slash', function(node, nodes, i) {\n var val = '[' + slash() + ']';\n var parent = node.parent;\n var prev = this.prev();\n\n // set \"node.hasSlash\" to true on all ancestor parens nodes\n while (parent.type === 'paren' && !parent.hasSlash) {\n parent.hasSlash = true;\n parent = parent.parent;\n }\n\n if (prev.addQmark) {\n val += '?';\n }\n\n // word boundary\n if (node.rest.slice(0, 2) === '\\\\b') {\n return this.emit(val, node);\n }\n\n // globstars\n if (node.parsed === '**' || node.parsed === './**') {\n this.output = '(?:' + this.output;\n return this.emit(val + ')?', node);\n }\n\n // negation\n if (node.parsed === '!**' && this.options.nonegate !== true) {\n return this.emit(val + '?\\\\b', node);\n }\n return this.emit(val, node);\n })\n\n /**\n * Square brackets\n */\n\n .set('bracket', function(node) {\n var close = node.close;\n var open = !node.escaped ? '[' : '\\\\[';\n var negated = node.negated;\n var inner = node.inner;\n var val = node.val;\n\n if (node.escaped === true) {\n inner = inner.replace(/\\\\?(\\W)/g, '\\\\$1');\n negated = '';\n }\n\n if (inner === ']-') {\n inner = '\\\\]\\\\-';\n }\n\n if (negated && inner.indexOf('.') === -1) {\n inner += '.';\n }\n if (negated && inner.indexOf('/') === -1) {\n inner += '/';\n }\n\n val = open + negated + inner + close;\n return this.emit(val, node);\n })\n\n /**\n * Square: \"[.]\" (only matches a single character in brackets)\n */\n\n .set('square', function(node) {\n var val = (/^\\W/.test(node.val) ? '\\\\' : '') + node.val;\n return this.emit(val, node);\n })\n\n /**\n * Question mark: \"?\"\n */\n\n .set('qmark', function(node) {\n var prev = this.prev();\n // don't use \"slash\" variable so that we always avoid\n // matching backslashes and slashes with a qmark\n var val = '[^.\\\\\\\\/]';\n if (this.options.dot || (prev.type !== 'bos' && prev.type !== 'slash')) {\n val = '[^\\\\\\\\/]';\n }\n\n if (node.parsed.slice(-1) === '(') {\n var ch = node.rest.charAt(0);\n if (ch === '!' || ch === '=' || ch === ':') {\n return this.emit(node.val, node);\n }\n }\n\n if (node.val.length > 1) {\n val += '{' + node.val.length + '}';\n }\n return this.emit(val, node);\n })\n\n /**\n * Plus\n */\n\n .set('plus', function(node) {\n var prev = node.parsed.slice(-1);\n if (prev === ']' || prev === ')') {\n return this.emit(node.val, node);\n }\n if (!this.output || (/[?*+]/.test(ch) && node.parent.type !== 'bracket')) {\n return this.emit('\\\\+', node);\n }\n var ch = this.output.slice(-1);\n if (/\\w/.test(ch) && !node.inside) {\n return this.emit('+\\\\+?', node);\n }\n return this.emit('+', node);\n })\n\n /**\n * globstar: '**'\n */\n\n .set('globstar', function(node, nodes, i) {\n if (!this.output) {\n this.state.leadingGlobstar = true;\n }\n\n var prev = this.prev();\n var before = this.prev(2);\n var next = this.next();\n var after = this.next(2);\n var type = prev.type;\n var val = node.val;\n\n if (prev.type === 'slash' && next.type === 'slash') {\n if (before.type === 'text') {\n this.output += '?';\n\n if (after.type !== 'text') {\n this.output += '\\\\b';\n }\n }\n }\n\n var parsed = node.parsed;\n if (parsed.charAt(0) === '!') {\n parsed = parsed.slice(1);\n }\n\n var isInside = node.isInside.paren || node.isInside.brace;\n if (parsed && type !== 'slash' && type !== 'bos' && !isInside) {\n val = star();\n } else {\n val = this.options.dot !== true\n ? '(?:(?!(?:[' + slash() + ']|^)\\\\.).)*?'\n : '(?:(?!(?:[' + slash() + ']|^)(?:\\\\.{1,2})($|[' + slash() + ']))(?!\\\\.{2}).)*?';\n }\n\n if ((type === 'slash' || type === 'bos') && this.options.dot !== true) {\n val = '(?!\\\\.)' + val;\n }\n\n if (prev.type === 'slash' && next.type === 'slash' && before.type !== 'text') {\n if (after.type === 'text' || after.type === 'star') {\n node.addQmark = true;\n }\n }\n\n if (this.options.capture) {\n val = '(' + val + ')';\n }\n\n return this.emit(val, node);\n })\n\n /**\n * Star: \"*\"\n */\n\n .set('star', function(node, nodes, i) {\n var prior = nodes[i - 2] || {};\n var prev = this.prev();\n var next = this.next();\n var type = prev.type;\n\n function isStart(n) {\n return n.type === 'bos' || n.type === 'slash';\n }\n\n if (this.output === '' && this.options.contains !== true) {\n this.output = '(?![' + slash() + '])';\n }\n\n if (type === 'bracket' && this.options.bash === false) {\n var str = next && next.type === 'bracket' ? star() : '*?';\n if (!prev.nodes || prev.nodes[1].type !== 'posix') {\n return this.emit(str, node);\n }\n }\n\n var prefix = !this.dotfiles && type !== 'text' && type !== 'escape'\n ? (this.options.dot ? '(?!(?:^|[' + slash() + '])\\\\.{1,2}(?:$|[' + slash() + ']))' : '(?!\\\\.)')\n : '';\n\n if (isStart(prev) || (isStart(prior) && type === 'not')) {\n if (prefix !== '(?!\\\\.)') {\n prefix += '(?!(\\\\.{2}|\\\\.[' + slash() + ']))(?=.)';\n } else {\n prefix += '(?=.)';\n }\n } else if (prefix === '(?!\\\\.)') {\n prefix = '';\n }\n\n if (prev.type === 'not' && prior.type === 'bos' && this.options.dot === true) {\n this.output = '(?!\\\\.)' + this.output;\n }\n\n var output = prefix + star();\n if (this.options.capture) {\n output = '(' + output + ')';\n }\n\n return this.emit(output, node);\n })\n\n /**\n * Text\n */\n\n .set('text', function(node) {\n return this.emit(node.val, node);\n })\n\n /**\n * End-of-string\n */\n\n .set('eos', function(node) {\n var prev = this.prev();\n var val = node.val;\n\n this.output = '(?:\\\\.[' + slash() + '](?=.))?' + this.output;\n if (this.state.metachar && prev.type !== 'qmark' && prev.type !== 'slash') {\n val += (this.options.contains ? '[' + slash() + ']?' : '(?:[' + slash() + ']|$)');\n }\n\n return this.emit(val, node);\n });\n\n /**\n * Allow custom compilers to be passed on options\n */\n\n if (options && typeof options.compilers === 'function') {\n options.compilers(nanomatch.compiler);\n }\n};\n\n","'use strict';\n\nvar regexNot = require('regex-not');\nvar toRegex = require('to-regex');\n\n/**\n * Characters to use in negation regex (we want to \"not\" match\n * characters that are matched by other parsers)\n */\n\nvar cached;\nvar NOT_REGEX = '[\\\\[!*+?$^\"\\'.\\\\\\\\/]+';\nvar not = createTextRegex(NOT_REGEX);\n\n/**\n * Nanomatch parsers\n */\n\nmodule.exports = function(nanomatch, options) {\n var parser = nanomatch.parser;\n var opts = parser.options;\n\n parser.state = {\n slashes: 0,\n paths: []\n };\n\n parser.ast.state = parser.state;\n parser\n\n /**\n * Beginning-of-string\n */\n\n .capture('prefix', function() {\n if (this.parsed) return;\n var m = this.match(/^\\.[\\\\/]/);\n if (!m) return;\n this.state.strictOpen = !!this.options.strictOpen;\n this.state.addPrefix = true;\n })\n\n /**\n * Escape: \"\\\\.\"\n */\n\n .capture('escape', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(/^(?:\\\\(.)|([$^]))/);\n if (!m) return;\n\n return pos({\n type: 'escape',\n val: m[2] || m[1]\n });\n })\n\n /**\n * Quoted strings\n */\n\n .capture('quoted', function() {\n var pos = this.position();\n var m = this.match(/^[\"']/);\n if (!m) return;\n\n var quote = m[0];\n if (this.input.indexOf(quote) === -1) {\n return pos({\n type: 'escape',\n val: quote\n });\n }\n\n var tok = advanceTo(this.input, quote);\n this.consume(tok.len);\n\n return pos({\n type: 'quoted',\n val: tok.esc\n });\n })\n\n /**\n * Negations: \"!\"\n */\n\n .capture('not', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(this.notRegex || /^!+/);\n if (!m) return;\n var val = m[0];\n\n var isNegated = (val.length % 2) === 1;\n if (parsed === '' && !isNegated) {\n val = '';\n }\n\n // if nothing has been parsed, we know `!` is at the start,\n // so we need to wrap the result in a negation regex\n if (parsed === '' && isNegated && this.options.nonegate !== true) {\n this.bos.val = '(?!^(?:';\n this.append = ')$).*';\n val = '';\n }\n return pos({\n type: 'not',\n val: val\n });\n })\n\n /**\n * Dot: \".\"\n */\n\n .capture('dot', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\.+/);\n if (!m) return;\n\n var val = m[0];\n this.state.dot = val === '.' && (parsed === '' || parsed.slice(-1) === '/');\n\n return pos({\n type: 'dot',\n dotfiles: this.state.dot,\n val: val\n });\n })\n\n /**\n * Plus: \"+\"\n */\n\n .capture('plus', /^\\+(?!\\()/)\n\n /**\n * Question mark: \"?\"\n */\n\n .capture('qmark', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\?+(?!\\()/);\n if (!m) return;\n\n this.state.metachar = true;\n this.state.qmark = true;\n\n return pos({\n type: 'qmark',\n parsed: parsed,\n val: m[0]\n });\n })\n\n /**\n * Globstar: \"**\"\n */\n\n .capture('globstar', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(/^\\*{2}(?![*(])(?=[,)/]|$)/);\n if (!m) return;\n\n var type = opts.noglobstar !== true ? 'globstar' : 'star';\n var node = pos({type: type, parsed: parsed});\n this.state.metachar = true;\n\n while (this.input.slice(0, 4) === '/**/') {\n this.input = this.input.slice(3);\n }\n\n node.isInside = {\n brace: this.isInside('brace'),\n paren: this.isInside('paren')\n };\n\n if (type === 'globstar') {\n this.state.globstar = true;\n node.val = '**';\n\n } else {\n this.state.star = true;\n node.val = '*';\n }\n\n return node;\n })\n\n /**\n * Star: \"*\"\n */\n\n .capture('star', function() {\n var pos = this.position();\n var starRe = /^(?:\\*(?![*(])|[*]{3,}(?!\\()|[*]{2}(?![(/]|$)|\\*(?=\\*\\())/;\n var m = this.match(starRe);\n if (!m) return;\n\n this.state.metachar = true;\n this.state.star = true;\n return pos({\n type: 'star',\n val: m[0]\n });\n })\n\n /**\n * Slash: \"/\"\n */\n\n .capture('slash', function() {\n var pos = this.position();\n var m = this.match(/^\\//);\n if (!m) return;\n\n this.state.slashes++;\n return pos({\n type: 'slash',\n val: m[0]\n });\n })\n\n /**\n * Backslash: \"\\\\\"\n */\n\n .capture('backslash', function() {\n var pos = this.position();\n var m = this.match(/^\\\\(?![*+?(){}[\\]'\"])/);\n if (!m) return;\n\n var val = m[0];\n\n if (this.isInside('bracket')) {\n val = '\\\\';\n } else if (val.length > 1) {\n val = '\\\\\\\\';\n }\n\n return pos({\n type: 'backslash',\n val: val\n });\n })\n\n /**\n * Square: \"[.]\"\n */\n\n .capture('square', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(/^\\[([^!^\\\\])\\]/);\n if (!m) return;\n\n return pos({\n type: 'square',\n val: m[1]\n });\n })\n\n /**\n * Brackets: \"[...]\" (basic, this can be overridden by other parsers)\n */\n\n .capture('bracket', function() {\n var pos = this.position();\n var m = this.match(/^(?:\\[([!^]?)([^\\]]+|\\]-)(\\]|[^*+?]+)|\\[)/);\n if (!m) return;\n\n var val = m[0];\n var negated = m[1] ? '^' : '';\n var inner = (m[2] || '').replace(/\\\\\\\\+/, '\\\\\\\\');\n var close = m[3] || '';\n\n if (m[2] && inner.length < m[2].length) {\n val = val.replace(/\\\\\\\\+/, '\\\\\\\\');\n }\n\n var esc = this.input.slice(0, 2);\n if (inner === '' && esc === '\\\\]') {\n inner += esc;\n this.consume(2);\n\n var str = this.input;\n var idx = -1;\n var ch;\n\n while ((ch = str[++idx])) {\n this.consume(1);\n if (ch === ']') {\n close = ch;\n break;\n }\n inner += ch;\n }\n }\n\n return pos({\n type: 'bracket',\n val: val,\n escaped: close !== ']',\n negated: negated,\n inner: inner,\n close: close\n });\n })\n\n /**\n * Text\n */\n\n .capture('text', function() {\n if (this.isInside('bracket')) return;\n var pos = this.position();\n var m = this.match(not);\n if (!m || !m[0]) return;\n\n return pos({\n type: 'text',\n val: m[0]\n });\n });\n\n /**\n * Allow custom parsers to be passed on options\n */\n\n if (options && typeof options.parsers === 'function') {\n options.parsers(nanomatch.parser);\n }\n};\n\n/**\n * Advance to the next non-escaped character\n */\n\nfunction advanceTo(input, endChar) {\n var ch = input.charAt(0);\n var tok = { len: 1, val: '', esc: '' };\n var idx = 0;\n\n function advance() {\n if (ch !== '\\\\') {\n tok.esc += '\\\\' + ch;\n tok.val += ch;\n }\n\n ch = input.charAt(++idx);\n tok.len++;\n\n if (ch === '\\\\') {\n advance();\n advance();\n }\n }\n\n while (ch && ch !== endChar) {\n advance();\n }\n return tok;\n}\n\n/**\n * Create text regex\n */\n\nfunction createTextRegex(pattern) {\n if (cached) return cached;\n var opts = {contains: true, strictClose: false};\n var not = regexNot.create(pattern, opts);\n var re = toRegex('^(?:[*]\\\\((?=.)|' + not + ')', opts);\n return (cached = re);\n}\n\n/**\n * Expose negation string\n */\n\nmodule.exports.not = NOT_REGEX;\n","'use strict';\n\nvar utils = module.exports;\nvar path = require('path');\n\n/**\n * Module dependencies\n */\n\nvar isWindows = require('is-windows')();\nvar Snapdragon = require('snapdragon');\nutils.define = require('define-property');\nutils.diff = require('arr-diff');\nutils.extend = require('extend-shallow');\nutils.pick = require('object.pick');\nutils.typeOf = require('kind-of');\nutils.unique = require('array-unique');\n\n/**\n * Returns true if the given value is effectively an empty string\n */\n\nutils.isEmptyString = function(val) {\n return String(val) === '' || String(val) === './';\n};\n\n/**\n * Returns true if the platform is windows, or `path.sep` is `\\\\`.\n * This is defined as a function to allow `path.sep` to be set in unit tests,\n * or by the user, if there is a reason to do so.\n * @return {Boolean}\n */\n\nutils.isWindows = function() {\n return path.sep === '\\\\' || isWindows === true;\n};\n\n/**\n * Return the last element from an array\n */\n\nutils.last = function(arr, n) {\n return arr[arr.length - (n || 1)];\n};\n\n/**\n * Get the `Snapdragon` instance to use\n */\n\nutils.instantiate = function(ast, options) {\n var snapdragon;\n // if an instance was created by `.parse`, use that instance\n if (utils.typeOf(ast) === 'object' && ast.snapdragon) {\n snapdragon = ast.snapdragon;\n // if the user supplies an instance on options, use that instance\n } else if (utils.typeOf(options) === 'object' && options.snapdragon) {\n snapdragon = options.snapdragon;\n // create a new instance\n } else {\n snapdragon = new Snapdragon(options);\n }\n\n utils.define(snapdragon, 'parse', function(str, options) {\n var parsed = Snapdragon.prototype.parse.call(this, str, options);\n parsed.input = str;\n\n // escape unmatched brace/bracket/parens\n var last = this.parser.stack.pop();\n if (last && this.options.strictErrors !== true) {\n var open = last.nodes[0];\n var inner = last.nodes[1];\n if (last.type === 'bracket') {\n if (inner.val.charAt(0) === '[') {\n inner.val = '\\\\' + inner.val;\n }\n\n } else {\n open.val = '\\\\' + open.val;\n var sibling = open.parent.nodes[1];\n if (sibling.type === 'star') {\n sibling.loose = true;\n }\n }\n }\n\n // add non-enumerable parser reference\n utils.define(parsed, 'parser', this.parser);\n return parsed;\n });\n\n return snapdragon;\n};\n\n/**\n * Create the key to use for memoization. The key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nutils.createKey = function(pattern, options) {\n if (typeof options === 'undefined') {\n return pattern;\n }\n var key = pattern;\n for (var prop in options) {\n if (options.hasOwnProperty(prop)) {\n key += ';' + prop + '=' + String(options[prop]);\n }\n }\n return key;\n};\n\n/**\n * Cast `val` to an array\n * @return {Array}\n */\n\nutils.arrayify = function(val) {\n if (typeof val === 'string') return [val];\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isString = function(val) {\n return typeof val === 'string';\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isRegex = function(val) {\n return utils.typeOf(val) === 'regexp';\n};\n\n/**\n * Return true if `val` is a non-empty string\n */\n\nutils.isObject = function(val) {\n return utils.typeOf(val) === 'object';\n};\n\n/**\n * Escape regex characters in the given string\n */\n\nutils.escapeRegex = function(str) {\n return str.replace(/[-[\\]{}()^$|*+?.\\\\/\\s]/g, '\\\\$&');\n};\n\n/**\n * Combines duplicate characters in the provided `input` string.\n * @param {String} `input`\n * @returns {String}\n */\n\nutils.combineDupes = function(input, patterns) {\n patterns = utils.arrayify(patterns).join('|').split('|');\n patterns = patterns.map(function(s) {\n return s.replace(/\\\\?([+*\\\\/])/g, '\\\\$1');\n });\n var substr = patterns.join('|');\n var regex = new RegExp('(' + substr + ')(?=\\\\1)', 'g');\n return input.replace(regex, '');\n};\n\n/**\n * Returns true if the given `str` has special characters\n */\n\nutils.hasSpecialChars = function(str) {\n return /(?:(?:(^|\\/)[!.])|[*?+()|[\\]{}]|[+@]\\()/.test(str);\n};\n\n/**\n * Normalize slashes in the given filepath.\n *\n * @param {String} `filepath`\n * @return {String}\n */\n\nutils.toPosixPath = function(str) {\n return str.replace(/\\\\+/g, '/');\n};\n\n/**\n * Strip backslashes before special characters in a string.\n *\n * @param {String} `str`\n * @return {String}\n */\n\nutils.unescape = function(str) {\n return utils.toPosixPath(str.replace(/\\\\(?=[*+?!.])/g, ''));\n};\n\n/**\n * Strip the drive letter from a windows filepath\n * @param {String} `fp`\n * @return {String}\n */\n\nutils.stripDrive = function(fp) {\n return utils.isWindows() ? fp.replace(/^[a-z]:[\\\\/]+?/i, '/') : fp;\n};\n\n/**\n * Strip the prefix from a filepath\n * @param {String} `fp`\n * @return {String}\n */\n\nutils.stripPrefix = function(str) {\n if (str.charAt(0) === '.' && (str.charAt(1) === '/' || str.charAt(1) === '\\\\')) {\n return str.slice(2);\n }\n return str;\n};\n\n/**\n * Returns true if `str` is a common character that doesn't need\n * to be processed to be used for matching.\n * @param {String} `str`\n * @return {Boolean}\n */\n\nutils.isSimpleChar = function(str) {\n return str.trim() === '' || str === '.';\n};\n\n/**\n * Returns true if the given str is an escaped or\n * unescaped path character\n */\n\nutils.isSlash = function(str) {\n return str === '/' || str === '\\\\/' || str === '\\\\' || str === '\\\\\\\\';\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern matches or contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.matchPath = function(pattern, options) {\n return (options && options.contains)\n ? utils.containsPattern(pattern, options)\n : utils.equalsPattern(pattern, options);\n};\n\n/**\n * Returns true if the given (original) filepath or unixified path are equal\n * to the given pattern.\n */\n\nutils._equals = function(filepath, unixPath, pattern) {\n return pattern === filepath || pattern === unixPath;\n};\n\n/**\n * Returns true if the given (original) filepath or unixified path contain\n * the given pattern.\n */\n\nutils._contains = function(filepath, unixPath, pattern) {\n return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1;\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern is the same as a given `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.equalsPattern = function(pattern, options) {\n var unixify = utils.unixify(options);\n options = options || {};\n\n return function fn(filepath) {\n var equal = utils._equals(filepath, unixify(filepath), pattern);\n if (equal === true || options.nocase !== true) {\n return equal;\n }\n var lower = filepath.toLowerCase();\n return utils._equals(lower, unixify(lower), pattern);\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.containsPattern = function(pattern, options) {\n var unixify = utils.unixify(options);\n options = options || {};\n\n return function(filepath) {\n var contains = utils._contains(filepath, unixify(filepath), pattern);\n if (contains === true || options.nocase !== true) {\n return contains;\n }\n var lower = filepath.toLowerCase();\n return utils._contains(lower, unixify(lower), pattern);\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * regex matches the `filename` of a file path.\n *\n * @param {RegExp} `re` Matching regex\n * @return {Function}\n */\n\nutils.matchBasename = function(re) {\n return function(filepath) {\n return re.test(filepath) || re.test(path.basename(filepath));\n };\n};\n\n/**\n * Returns the given value unchanced.\n * @return {any}\n */\n\nutils.identity = function(val) {\n return val;\n};\n\n/**\n * Determines the filepath to return based on the provided options.\n * @return {any}\n */\n\nutils.value = function(str, unixify, options) {\n if (options && options.unixify === false) {\n return str;\n }\n if (options && typeof options.unixify === 'function') {\n return options.unixify(str);\n }\n return unixify(str);\n};\n\n/**\n * Returns a function that normalizes slashes in a string to forward\n * slashes, strips `./` from beginning of paths, and optionally unescapes\n * special characters.\n * @return {Function}\n */\n\nutils.unixify = function(options) {\n var opts = options || {};\n return function(filepath) {\n if (opts.stripPrefix !== false) {\n filepath = utils.stripPrefix(filepath);\n }\n if (opts.unescape === true) {\n filepath = utils.unescape(filepath);\n }\n if (opts.unixify === true || utils.isWindows()) {\n filepath = utils.toPosixPath(filepath);\n }\n return filepath;\n };\n};\n","/*!\n * define-property \n *\n * Copyright (c) 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isobject = require('isobject');\nvar isDescriptor = require('is-descriptor');\nvar define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)\n ? Reflect.defineProperty\n : Object.defineProperty;\n\nmodule.exports = function defineProperty(obj, key, val) {\n if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) {\n throw new TypeError('expected an object, function, or array');\n }\n\n if (typeof key !== 'string') {\n throw new TypeError('expected \"key\" to be a string');\n }\n\n if (isDescriptor(val)) {\n define(obj, key, val);\n return obj;\n }\n\n define(obj, key, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n\n return obj;\n};\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","'use strict';\n\nvar typeOf = require('kind-of');\nvar copyDescriptor = require('copy-descriptor');\nvar define = require('define-property');\n\n/**\n * Copy static properties, prototype properties, and descriptors from one object to another.\n *\n * ```js\n * function App() {}\n * var proto = App.prototype;\n * App.prototype.set = function() {};\n * App.prototype.get = function() {};\n *\n * var obj = {};\n * copy(obj, proto);\n * ```\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String|Array} `omit` One or more properties to omit\n * @return {Object}\n * @api public\n */\n\nfunction copy(receiver, provider, omit) {\n if (!isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n\n var props = nativeKeys(provider);\n var keys = Object.keys(provider);\n var len = props.length;\n omit = arrayify(omit);\n\n while (len--) {\n var key = props[len];\n\n if (has(keys, key)) {\n define(receiver, key, provider[key]);\n } else if (!(key in receiver) && !has(omit, key)) {\n copyDescriptor(receiver, provider, key);\n }\n }\n};\n\n/**\n * Return true if the given value is an object or function\n */\n\nfunction isObject(val) {\n return typeOf(val) === 'object' || typeof val === 'function';\n}\n\n/**\n * Returns true if an array has any of the given elements, or an\n * object has any of the give keys.\n *\n * ```js\n * has(['a', 'b', 'c'], 'c');\n * //=> true\n *\n * has(['a', 'b', 'c'], ['c', 'z']);\n * //=> true\n *\n * has({a: 'b', c: 'd'}, ['c', 'z']);\n * //=> true\n * ```\n * @param {Object} `obj`\n * @param {String|Array} `val`\n * @return {Boolean}\n */\n\nfunction has(obj, val) {\n val = arrayify(val);\n var len = val.length;\n\n if (isObject(obj)) {\n for (var key in obj) {\n if (val.indexOf(key) > -1) {\n return true;\n }\n }\n\n var keys = nativeKeys(obj);\n return has(keys, val);\n }\n\n if (Array.isArray(obj)) {\n var arr = obj;\n while (len--) {\n if (arr.indexOf(val[len]) > -1) {\n return true;\n }\n }\n return false;\n }\n\n throw new TypeError('expected an array or object.');\n}\n\n/**\n * Cast the given value to an array.\n *\n * ```js\n * arrayify('foo');\n * //=> ['foo']\n *\n * arrayify(['foo']);\n * //=> ['foo']\n * ```\n *\n * @param {String|Array} `val`\n * @return {Array}\n */\n\nfunction arrayify(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n}\n\n/**\n * Returns true if a value has a `contructor`\n *\n * ```js\n * hasConstructor({});\n * //=> true\n *\n * hasConstructor(Object.create(null));\n * //=> false\n * ```\n * @param {Object} `value`\n * @return {Boolean}\n */\n\nfunction hasConstructor(val) {\n return isObject(val) && typeof val.constructor !== 'undefined';\n}\n\n/**\n * Get the native `ownPropertyNames` from the constructor of the\n * given `object`. An empty array is returned if the object does\n * not have a constructor.\n *\n * ```js\n * nativeKeys({a: 'b', b: 'c', c: 'd'})\n * //=> ['a', 'b', 'c']\n *\n * nativeKeys(function(){})\n * //=> ['length', 'caller']\n * ```\n *\n * @param {Object} `obj` Object that has a `constructor`.\n * @return {Array} Array of keys.\n */\n\nfunction nativeKeys(val) {\n if (!hasConstructor(val)) return [];\n return Object.getOwnPropertyNames(val);\n}\n\n/**\n * Expose `copy`\n */\n\nmodule.exports = copy;\n\n/**\n * Expose `copy.has` for tests\n */\n\nmodule.exports.has = has;\n","/*!\n * object-visit \n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nmodule.exports = function visit(thisArg, method, target, val) {\n if (!isObject(thisArg) && typeof thisArg !== 'function') {\n throw new Error('object-visit expects `thisArg` to be an object.');\n }\n\n if (typeof method !== 'string') {\n throw new Error('object-visit expects `method` name to be a string');\n }\n\n if (typeof thisArg[method] !== 'function') {\n return thisArg;\n }\n\n var args = [].slice.call(arguments, 3);\n target = target || {};\n\n for (var key in target) {\n var arr = [key, target[key]].concat(args);\n thisArg[method].apply(thisArg, arr);\n }\n return thisArg;\n};\n","/*!\n * object.pick \n *\n * Copyright (c) 2014-2015 Jon Schlinkert, contributors.\n * Licensed under the MIT License\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nmodule.exports = function pick(obj, keys) {\n if (!isObject(obj) && typeof obj !== 'function') {\n return {};\n }\n\n var res = {};\n if (typeof keys === 'string') {\n if (keys in obj) {\n res[keys] = obj[keys];\n }\n return res;\n }\n\n var len = keys.length;\n var idx = -1;\n\n while (++idx < len) {\n var key = keys[idx];\n if (key in obj) {\n res[key] = obj[key];\n }\n }\n return res;\n};\n","/*!\n * pascalcase \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nfunction pascalcase(str) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string.');\n }\n str = str.replace(/([A-Z])/g, ' $1');\n if (str.length === 1) { return str.toUpperCase(); }\n str = str.replace(/^[\\W_]+|[\\W_]+$/g, '').toLowerCase();\n str = str.charAt(0).toUpperCase() + str.slice(1);\n return str.replace(/[\\W_]+(\\w|$)/g, function (_, ch) {\n return ch.toUpperCase();\n });\n}\n\nmodule.exports = pascalcase;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","'use strict';\n\n/**\n * POSIX character classes\n */\n\nmodule.exports = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar extend = require('extend-shallow');\nvar safe = require('safe-regex');\n\n/**\n * The main export is a function that takes a `pattern` string and an `options` object.\n *\n * ```js\n & var not = require('regex-not');\n & console.log(not('foo'));\n & //=> /^(?:(?!^(?:foo)$).)*$/\n * ```\n *\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {RegExp} Converts the given `pattern` to a regex using the specified `options`.\n * @api public\n */\n\nfunction toRegex(pattern, options) {\n return new RegExp(toRegex.create(pattern, options));\n}\n\n/**\n * Create a regex-compatible string from the given `pattern` and `options`.\n *\n * ```js\n & var not = require('regex-not');\n & console.log(not.create('foo'));\n & //=> '^(?:(?!^(?:foo)$).)*$'\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\ntoRegex.create = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n var opts = extend({}, options);\n if (opts.contains === true) {\n opts.strictNegate = false;\n }\n\n var open = opts.strictOpen !== false ? '^' : '';\n var close = opts.strictClose !== false ? '$' : '';\n var endChar = opts.endChar ? opts.endChar : '+';\n var str = pattern;\n\n if (opts.strictNegate === false) {\n str = '(?:(?!(?:' + pattern + ')).)' + endChar;\n } else {\n str = '(?:(?!^(?:' + pattern + ')$).)' + endChar;\n }\n\n var res = open + str + close;\n if (opts.safe === true && safe(res) === false) {\n throw new Error('potentially unsafe regular expression: ' + res);\n }\n\n return res;\n};\n\n/**\n * Expose `toRegex`\n */\n\nmodule.exports = toRegex;\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","/*!\n * repeat-element \n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nmodule.exports = function repeat(ele, num) {\n var arr = new Array(num);\n\n for (var i = 0; i < num; i++) {\n arr[i] = ele;\n }\n\n return arr;\n};\n","/*!\n * repeat-string \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n // cover common, quick use cases\n if (num === 1) return str;\n if (num === 2) return str + str;\n\n var max = str.length * num;\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}\n","// Copyright 2014 Simon Lydell\r\n// X11 (“MIT”) Licensed. (See LICENSE.)\r\n\r\nvoid (function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(factory)\r\n } else if (typeof exports === \"object\") {\r\n module.exports = factory()\r\n } else {\r\n root.resolveUrl = factory()\r\n }\r\n}(this, function() {\r\n\r\n function resolveUrl(/* ...urls */) {\r\n var numUrls = arguments.length\r\n\r\n if (numUrls === 0) {\r\n throw new Error(\"resolveUrl requires at least one argument; got none.\")\r\n }\r\n\r\n var base = document.createElement(\"base\")\r\n base.href = arguments[0]\r\n\r\n if (numUrls === 1) {\r\n return base.href\r\n }\r\n\r\n var head = document.getElementsByTagName(\"head\")[0]\r\n head.insertBefore(base, head.firstChild)\r\n\r\n var a = document.createElement(\"a\")\r\n var resolved\r\n\r\n for (var index = 1; index < numUrls; index++) {\r\n a.href = arguments[index]\r\n resolved = a.href\r\n base.href = resolved\r\n }\r\n\r\n head.removeChild(base)\r\n\r\n return resolved\r\n }\r\n\r\n return resolveUrl\r\n\r\n}));\r\n","var util = require('./util');\nvar types = require('./types');\nvar sets = require('./sets');\nvar positions = require('./positions');\n\n\nmodule.exports = function(regexpStr) {\n var i = 0, l, c,\n start = { type: types.ROOT, stack: []},\n\n // Keep track of last clause/group and stack.\n lastGroup = start,\n last = start.stack,\n groupStack = [];\n\n\n var repeatErr = function(i) {\n util.error(regexpStr, 'Nothing to repeat at column ' + (i - 1));\n };\n\n // Decode a few escaped characters.\n var str = util.strToChars(regexpStr);\n l = str.length;\n\n // Iterate through each character in string.\n while (i < l) {\n c = str[i++];\n\n switch (c) {\n // Handle escaped characters, inclues a few sets.\n case '\\\\':\n c = str[i++];\n\n switch (c) {\n case 'b':\n last.push(positions.wordBoundary());\n break;\n\n case 'B':\n last.push(positions.nonWordBoundary());\n break;\n\n case 'w':\n last.push(sets.words());\n break;\n\n case 'W':\n last.push(sets.notWords());\n break;\n\n case 'd':\n last.push(sets.ints());\n break;\n\n case 'D':\n last.push(sets.notInts());\n break;\n\n case 's':\n last.push(sets.whitespace());\n break;\n\n case 'S':\n last.push(sets.notWhitespace());\n break;\n\n default:\n // Check if c is integer.\n // In which case it's a reference.\n if (/\\d/.test(c)) {\n last.push({ type: types.REFERENCE, value: parseInt(c, 10) });\n\n // Escaped character.\n } else {\n last.push({ type: types.CHAR, value: c.charCodeAt(0) });\n }\n }\n\n break;\n\n\n // Positionals.\n case '^':\n last.push(positions.begin());\n break;\n\n case '$':\n last.push(positions.end());\n break;\n\n\n // Handle custom sets.\n case '[':\n // Check if this class is 'anti' i.e. [^abc].\n var not;\n if (str[i] === '^') {\n not = true;\n i++;\n } else {\n not = false;\n }\n\n // Get all the characters in class.\n var classTokens = util.tokenizeClass(str.slice(i), regexpStr);\n\n // Increase index by length of class.\n i += classTokens[1];\n last.push({\n type: types.SET,\n set: classTokens[0],\n not: not,\n });\n\n break;\n\n\n // Class of any character except \\n.\n case '.':\n last.push(sets.anyChar());\n break;\n\n\n // Push group onto stack.\n case '(':\n // Create group.\n var group = {\n type: types.GROUP,\n stack: [],\n remember: true,\n };\n\n c = str[i];\n\n // If if this is a special kind of group.\n if (c === '?') {\n c = str[i + 1];\n i += 2;\n\n // Match if followed by.\n if (c === '=') {\n group.followedBy = true;\n\n // Match if not followed by.\n } else if (c === '!') {\n group.notFollowedBy = true;\n\n } else if (c !== ':') {\n util.error(regexpStr,\n 'Invalid group, character \\'' + c +\n '\\' after \\'?\\' at column ' + (i - 1));\n }\n\n group.remember = false;\n }\n\n // Insert subgroup into current group stack.\n last.push(group);\n\n // Remember the current group for when the group closes.\n groupStack.push(lastGroup);\n\n // Make this new group the current group.\n lastGroup = group;\n last = group.stack;\n break;\n\n\n // Pop group out of stack.\n case ')':\n if (groupStack.length === 0) {\n util.error(regexpStr, 'Unmatched ) at column ' + (i - 1));\n }\n lastGroup = groupStack.pop();\n\n // Check if this group has a PIPE.\n // To get back the correct last stack.\n last = lastGroup.options ?\n lastGroup.options[lastGroup.options.length - 1] : lastGroup.stack;\n break;\n\n\n // Use pipe character to give more choices.\n case '|':\n // Create array where options are if this is the first PIPE\n // in this clause.\n if (!lastGroup.options) {\n lastGroup.options = [lastGroup.stack];\n delete lastGroup.stack;\n }\n\n // Create a new stack and add to options for rest of clause.\n var stack = [];\n lastGroup.options.push(stack);\n last = stack;\n break;\n\n\n // Repetition.\n // For every repetition, remove last element from last stack\n // then insert back a RANGE object.\n // This design is chosen because there could be more than\n // one repetition symbols in a regex i.e. `a?+{2,3}`.\n case '{':\n var rs = /^(\\d+)(,(\\d+)?)?\\}/.exec(str.slice(i)), min, max;\n if (rs !== null) {\n if (last.length === 0) {\n repeatErr(i);\n }\n min = parseInt(rs[1], 10);\n max = rs[2] ? rs[3] ? parseInt(rs[3], 10) : Infinity : min;\n i += rs[0].length;\n\n last.push({\n type: types.REPETITION,\n min: min,\n max: max,\n value: last.pop(),\n });\n } else {\n last.push({\n type: types.CHAR,\n value: 123,\n });\n }\n break;\n\n case '?':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 0,\n max: 1,\n value: last.pop(),\n });\n break;\n\n case '+':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 1,\n max: Infinity,\n value: last.pop(),\n });\n break;\n\n case '*':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 0,\n max: Infinity,\n value: last.pop(),\n });\n break;\n\n\n // Default is a character that is not `\\[](){}?+*^$`.\n default:\n last.push({\n type: types.CHAR,\n value: c.charCodeAt(0),\n });\n }\n\n }\n\n // Check if any groups have not been closed.\n if (groupStack.length !== 0) {\n util.error(regexpStr, 'Unterminated group');\n }\n\n return start;\n};\n\nmodule.exports.types = types;\n","var types = require('./types');\n\nexports.wordBoundary = function() {\n return { type: types.POSITION, value: 'b' };\n};\n\nexports.nonWordBoundary = function() {\n return { type: types.POSITION, value: 'B' };\n};\n\nexports.begin = function() {\n return { type: types.POSITION, value: '^' };\n};\n\nexports.end = function() {\n return { type: types.POSITION, value: '$' };\n};\n","var types = require('./types');\n\nvar INTS = function() {\n return [{ type: types.RANGE , from: 48, to: 57 }];\n};\n\nvar WORDS = function() {\n return [\n { type: types.CHAR, value: 95 },\n { type: types.RANGE, from: 97, to: 122 },\n { type: types.RANGE, from: 65, to: 90 }\n ].concat(INTS());\n};\n\nvar WHITESPACE = function() {\n return [\n { type: types.CHAR, value: 9 },\n { type: types.CHAR, value: 10 },\n { type: types.CHAR, value: 11 },\n { type: types.CHAR, value: 12 },\n { type: types.CHAR, value: 13 },\n { type: types.CHAR, value: 32 },\n { type: types.CHAR, value: 160 },\n { type: types.CHAR, value: 5760 },\n { type: types.CHAR, value: 6158 },\n { type: types.CHAR, value: 8192 },\n { type: types.CHAR, value: 8193 },\n { type: types.CHAR, value: 8194 },\n { type: types.CHAR, value: 8195 },\n { type: types.CHAR, value: 8196 },\n { type: types.CHAR, value: 8197 },\n { type: types.CHAR, value: 8198 },\n { type: types.CHAR, value: 8199 },\n { type: types.CHAR, value: 8200 },\n { type: types.CHAR, value: 8201 },\n { type: types.CHAR, value: 8202 },\n { type: types.CHAR, value: 8232 },\n { type: types.CHAR, value: 8233 },\n { type: types.CHAR, value: 8239 },\n { type: types.CHAR, value: 8287 },\n { type: types.CHAR, value: 12288 },\n { type: types.CHAR, value: 65279 }\n ];\n};\n\nvar NOTANYCHAR = function() {\n return [\n { type: types.CHAR, value: 10 },\n { type: types.CHAR, value: 13 },\n { type: types.CHAR, value: 8232 },\n { type: types.CHAR, value: 8233 },\n ];\n};\n\n// Predefined class objects.\nexports.words = function() {\n return { type: types.SET, set: WORDS(), not: false };\n};\n\nexports.notWords = function() {\n return { type: types.SET, set: WORDS(), not: true };\n};\n\nexports.ints = function() {\n return { type: types.SET, set: INTS(), not: false };\n};\n\nexports.notInts = function() {\n return { type: types.SET, set: INTS(), not: true };\n};\n\nexports.whitespace = function() {\n return { type: types.SET, set: WHITESPACE(), not: false };\n};\n\nexports.notWhitespace = function() {\n return { type: types.SET, set: WHITESPACE(), not: true };\n};\n\nexports.anyChar = function() {\n return { type: types.SET, set: NOTANYCHAR(), not: true };\n};\n","module.exports = {\n ROOT : 0,\n GROUP : 1,\n POSITION : 2,\n SET : 3,\n RANGE : 4,\n REPETITION : 5,\n REFERENCE : 6,\n CHAR : 7,\n};\n","var types = require('./types');\nvar sets = require('./sets');\n\n\n// All of these are private and only used by randexp.\n// It's assumed that they will always be called with the correct input.\n\nvar CTRL = '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^ ?';\nvar SLSH = { '0': 0, 't': 9, 'n': 10, 'v': 11, 'f': 12, 'r': 13 };\n\n/**\n * Finds character representations in str and convert all to\n * their respective characters\n *\n * @param {String} str\n * @return {String}\n */\nexports.strToChars = function(str) {\n /* jshint maxlen: false */\n var chars_regex = /(\\[\\\\b\\])|(\\\\)?\\\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z\\[\\\\\\]\\^?])|([0tnvfr]))/g;\n str = str.replace(chars_regex, function(s, b, lbs, a16, b16, c8, dctrl, eslsh) {\n if (lbs) {\n return s;\n }\n\n var code = b ? 8 :\n a16 ? parseInt(a16, 16) :\n b16 ? parseInt(b16, 16) :\n c8 ? parseInt(c8, 8) :\n dctrl ? CTRL.indexOf(dctrl) :\n SLSH[eslsh];\n\n var c = String.fromCharCode(code);\n\n // Escape special regex characters.\n if (/[\\[\\]{}\\^$.|?*+()]/.test(c)) {\n c = '\\\\' + c;\n }\n\n return c;\n });\n\n return str;\n};\n\n\n/**\n * turns class into tokens\n * reads str until it encounters a ] not preceeded by a \\\n *\n * @param {String} str\n * @param {String} regexpStr\n * @return {Array., Number>}\n */\nexports.tokenizeClass = function(str, regexpStr) {\n /* jshint maxlen: false */\n var tokens = [];\n var regexp = /\\\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\\\)(.)|([^\\]\\\\]))-(?:\\\\)?([^\\]]))|(\\])|(?:\\\\)?(.)/g;\n var rs, c;\n\n\n while ((rs = regexp.exec(str)) != null) {\n if (rs[1]) {\n tokens.push(sets.words());\n\n } else if (rs[2]) {\n tokens.push(sets.ints());\n\n } else if (rs[3]) {\n tokens.push(sets.whitespace());\n\n } else if (rs[4]) {\n tokens.push(sets.notWords());\n\n } else if (rs[5]) {\n tokens.push(sets.notInts());\n\n } else if (rs[6]) {\n tokens.push(sets.notWhitespace());\n\n } else if (rs[7]) {\n tokens.push({\n type: types.RANGE,\n from: (rs[8] || rs[9]).charCodeAt(0),\n to: rs[10].charCodeAt(0),\n });\n\n } else if (c = rs[12]) {\n tokens.push({\n type: types.CHAR,\n value: c.charCodeAt(0),\n });\n\n } else {\n return [tokens, regexp.lastIndex];\n }\n }\n\n exports.error(regexpStr, 'Unterminated character class');\n};\n\n\n/**\n * Shortcut to throw errors.\n *\n * @param {String} regexp\n * @param {String} msg\n */\nexports.error = function(regexp, msg) {\n throw new SyntaxError('Invalid regular expression: /' + regexp + '/: ' + msg);\n};\n","var parse = require('ret');\nvar types = parse.types;\n\nmodule.exports = function (re, opts) {\n if (!opts) opts = {};\n var replimit = opts.limit === undefined ? 25 : opts.limit;\n \n if (isRegExp(re)) re = re.source;\n else if (typeof re !== 'string') re = String(re);\n \n try { re = parse(re) }\n catch (err) { return false }\n \n var reps = 0;\n return (function walk (node, starHeight) {\n if (node.type === types.REPETITION) {\n starHeight ++;\n reps ++;\n if (starHeight > 1) return false;\n if (reps > replimit) return false;\n }\n \n if (node.options) {\n for (var i = 0, len = node.options.length; i < len; i++) {\n var ok = walk({ stack: node.options[i] }, starHeight);\n if (!ok) return false;\n }\n }\n var stack = node.stack || (node.value && node.value.stack);\n if (!stack) return true;\n \n for (var i = 0; i < stack.length; i++) {\n var ok = walk(stack[i], starHeight);\n if (!ok) return false;\n }\n \n return true;\n })(re, 0);\n};\n\nfunction isRegExp (x) {\n return {}.toString.call(x) === '[object RegExp]';\n}\n","/*!\n * set-value \n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar split = require('split-string');\nvar extend = require('extend-shallow');\nvar isPlainObject = require('is-plain-object');\nvar isObject = require('is-extendable');\n\nmodule.exports = function(obj, prop, val) {\n if (!isObject(obj)) {\n return obj;\n }\n\n if (Array.isArray(prop)) {\n prop = [].concat.apply([], prop).join('.');\n }\n\n if (typeof prop !== 'string') {\n return obj;\n }\n\n var keys = split(prop, {sep: '.', brackets: true});\n var len = keys.length;\n var idx = -1;\n var current = obj;\n\n while (++idx < len) {\n var key = keys[idx];\n if (idx !== len - 1) {\n if (!isObject(current[key])) {\n current[key] = {};\n }\n current = current[key];\n continue;\n }\n\n if (isPlainObject(current[key]) && isPlainObject(val)) {\n current[key] = extend({}, current[key], val);\n } else {\n current[key] = val;\n }\n }\n\n return obj;\n};\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a